Initial commit
This commit is contained in:
65
cmd/generate/main.go
Normal file
65
cmd/generate/main.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
type MimeType struct {
|
||||
Source string `json:"source"`
|
||||
Extensions []string `json:"extensions"`
|
||||
Compressible bool `json:"compressible"`
|
||||
Charset string `json:"charset"`
|
||||
}
|
||||
|
||||
type Data map[string]MimeType
|
||||
|
||||
func main() {
|
||||
out, err := os.OpenFile("generated_mime_types.go", os.O_RDWR|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
defer out.Close()
|
||||
|
||||
rsp, err := http.Get("https://cdn.rawgit.com/jshttp/mime-db/v1.33.0/db.json")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if rsp.StatusCode != http.StatusOK {
|
||||
panic(rsp)
|
||||
}
|
||||
|
||||
var result Data
|
||||
|
||||
if err := json.NewDecoder(rsp.Body).Decode(&result); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Fprintln(out, "package mimedb")
|
||||
fmt.Fprintln(out, "")
|
||||
fmt.Fprintln(out, "var (")
|
||||
fmt.Fprintln(out, " mimeTypeToExts = map[string][]string{")
|
||||
|
||||
for mimeType, entry := range result {
|
||||
if len(entry.Extensions) > 0 {
|
||||
fmt.Fprintf(out, " %q: %#v,\n", mimeType, entry.Extensions)
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Fprintln(out, " }")
|
||||
fmt.Fprintln(out, ")")
|
||||
|
||||
if err := out.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// run `go fmt` on the output
|
||||
if err := exec.Command("go", "fmt").Run(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user