73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"flag"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func fileNameWithoutExtension(fileName string) string {
|
||
|
if pos := strings.LastIndexByte(fileName, '.'); pos != -1 {
|
||
|
return fileName[:pos]
|
||
|
}
|
||
|
return fileName
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
CategoryFlag := flag.String("c", "", "Name of the emoji category")
|
||
|
flag.Parse()
|
||
|
// Remove old meta.json
|
||
|
_, err := os.Stat("meta.json")
|
||
|
if !os.IsNotExist(err) {
|
||
|
err = os.Remove("meta.json")
|
||
|
if err != nil {
|
||
|
fmt.Println(err)
|
||
|
}
|
||
|
}
|
||
|
// Get files list
|
||
|
f, err := os.Open("./")
|
||
|
if err != nil {
|
||
|
fmt.Println(err)
|
||
|
return
|
||
|
}
|
||
|
files, err := f.Readdir(0)
|
||
|
if err != nil {
|
||
|
fmt.Println(err)
|
||
|
return
|
||
|
}
|
||
|
// Init metadata
|
||
|
meta := &MetaPackage{}
|
||
|
// Loop through files
|
||
|
for _, file := range files {
|
||
|
emoji := Emoji{
|
||
|
Downloaded: true,
|
||
|
FileName: file.Name(),
|
||
|
Emoji: EmojiInfo{
|
||
|
Name: fileNameWithoutExtension(file.Name()),
|
||
|
Category: *CategoryFlag,
|
||
|
},
|
||
|
}
|
||
|
meta.Emojis = append(meta.Emojis, emoji)
|
||
|
}
|
||
|
// Write JSON file
|
||
|
metaData, _ := json.MarshalIndent(meta, "", " ")
|
||
|
_ = os.WriteFile("meta.json", metaData, 0644)
|
||
|
}
|
||
|
|
||
|
type MetaPackage struct {
|
||
|
Emojis []Emoji `json:"emojis"`
|
||
|
}
|
||
|
|
||
|
type Emoji struct {
|
||
|
Downloaded bool `json:"downloaded"`
|
||
|
FileName string `json:"fileName"`
|
||
|
Emoji EmojiInfo `json:"emoji"`
|
||
|
}
|
||
|
type EmojiInfo struct {
|
||
|
Name string `json:"name"`
|
||
|
Category string `json:"category"`
|
||
|
// Aliases []string `json:"aliases"`
|
||
|
}
|