kitten: When guessing MIME types use a builtin list as a fallback, generated from the MIME type definitions available on the build system
This commit is contained in:
parent
16f767de7e
commit
b1934ce267
@ -562,6 +562,17 @@ def generate_readline_actions() -> str:
|
|||||||
''')
|
''')
|
||||||
|
|
||||||
|
|
||||||
|
def generate_mimetypes() -> str:
|
||||||
|
import mimetypes
|
||||||
|
if not mimetypes.inited:
|
||||||
|
mimetypes.init()
|
||||||
|
ans = ['package utils', 'import "sync"', 'var only_once sync.Once', 'var builtin_types_map map[string]string', 'func set_builtins() {', 'builtin_types_map = map[string]string{',]
|
||||||
|
for k, v in mimetypes.types_map.items():
|
||||||
|
ans.append(f' "{serialize_as_go_string(k)}": "{serialize_as_go_string(v)}",')
|
||||||
|
ans.append('}}')
|
||||||
|
return '\n'.join(ans)
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
with replace_if_needed('constants_generated.go') as f:
|
with replace_if_needed('constants_generated.go') as f:
|
||||||
f.write(generate_constants())
|
f.write(generate_constants())
|
||||||
@ -571,6 +582,8 @@ def main() -> None:
|
|||||||
f.write(generate_readline_actions())
|
f.write(generate_readline_actions())
|
||||||
with replace_if_needed('tools/tui/spinners_generated.go') as f:
|
with replace_if_needed('tools/tui/spinners_generated.go') as f:
|
||||||
f.write(generate_spinners())
|
f.write(generate_spinners())
|
||||||
|
with replace_if_needed('tools/utils/mimetypes_generated.go') as f:
|
||||||
|
f.write(generate_mimetypes())
|
||||||
update_completion()
|
update_completion()
|
||||||
update_at_commands()
|
update_at_commands()
|
||||||
kitten_clis()
|
kitten_clis()
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"mime"
|
"mime"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ = fmt.Print
|
var _ = fmt.Print
|
||||||
@ -14,7 +15,14 @@ func GuessMimeType(filename string) string {
|
|||||||
ext := filepath.Ext(filename)
|
ext := filepath.Ext(filename)
|
||||||
mime_with_parameters := mime.TypeByExtension(ext)
|
mime_with_parameters := mime.TypeByExtension(ext)
|
||||||
if mime_with_parameters == "" {
|
if mime_with_parameters == "" {
|
||||||
return mime_with_parameters
|
only_once.Do(set_builtins)
|
||||||
|
mime_with_parameters = builtin_types_map[ext]
|
||||||
|
if mime_with_parameters == "" {
|
||||||
|
mime_with_parameters = builtin_types_map[strings.ToLower(ext)]
|
||||||
|
if mime_with_parameters == "" {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ans, _, err := mime.ParseMediaType(mime_with_parameters)
|
ans, _, err := mime.ParseMediaType(mime_with_parameters)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user