// Command genicon writes the application icon for packaging.
//
// genicon -hicolor
/x/apps/keeporg.png, the Linux icon theme layout
// genicon -iconset /icon_x[@2x].png, the input iconutil turns into .icns
package main
import (
"flag"
"fmt"
"os"
"path/filepath"
"cc.tiredsysadmin.keeporg/internal/icon"
)
func main() {
hicolor := flag.String("hicolor", "", "write a hicolor icon theme tree under this directory")
iconset := flag.String("iconset", "", "write a macOS .iconset directory")
flag.Parse()
if *hicolor == "" && *iconset == "" {
flag.Usage()
os.Exit(2)
}
if *hicolor != "" {
for _, n := range []int{16, 32, 48, 64, 128, 256, 512} {
write(filepath.Join(*hicolor, fmt.Sprintf("%dx%d", n, n), "apps", "keeporg.png"), n)
}
}
if *iconset != "" {
for _, n := range []int{16, 32, 128, 256, 512} {
write(filepath.Join(*iconset, fmt.Sprintf("icon_%dx%d.png", n, n)), n)
write(filepath.Join(*iconset, fmt.Sprintf("icon_%dx%d@2x.png", n, n)), 2*n)
}
}
}
func write(path string, size int) {
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
fmt.Fprintln(os.Stderr, "genicon:", err)
os.Exit(1)
}
if err := os.WriteFile(path, icon.PNG(icon.App(size)), 0o644); err != nil {
fmt.Fprintln(os.Stderr, "genicon:", err)
os.Exit(1)
}
}