Files
Loki/tools/gen-icon/main.go
T
nathaninline 2b20158e7c CI : chemins cmd/jean -> cmd/ajean oublies dans les workflows
Le renommage des dossiers avait ete repercute dans release.yml mais pas
dans ci.yml, qui compilait encore ./cmd/jean : les deux jobs echouaient.
Une occurrence trainait aussi dans mac-build.yml (cmd/jean/icon.ico), que
le remplacement precedent n'avait attrapee que pour icon.png.

Un cas n'etait pas qu'un commentaire : tools/assemble-ui utilisait
"internal/jean/ui" comme chemin par defaut. La directive go:generate passe
le dossier en argument, donc la generation fonctionnait, mais l'invocation
directe documentee dans son propre en-tete (go run ./tools/assemble-ui)
aurait echoue.

Le reste etait des commentaires designant les anciens chemins, corriges
pour que le depot ne mente plus sur sa propre structure.

Job ci rejoue en entier en local : gofmt, vet, build, tests et les quatre
cross-compilations de release.
2026-08-04 16:31:43 +02:00

40 lines
1.2 KiB
Go

// gen-icon écrit cmd/ajean/icon.ico à partir de l'icône de marque dessinée dans
// internal/ajean (sys_brand_icon.go), pour que l'icône du .exe soit toujours la
// même que le favicon de l'UI et que celle de la zone de notification.
//
// Lancé par `go generate ./cmd/ajean`, AVANT goversioninfo qui embarque le .ico
// dans les ressources Windows.
package main
import (
"fmt"
"os"
"strings"
"github.com/nathaninline/ajean/internal/ajean"
)
func main() {
out := "icon.ico"
if len(os.Args) > 1 {
out = os.Args[1]
}
// Les tailles attendues par l'explorateur Windows, de la barre des tâches à
// l'aperçu en grandes icônes.
write(out, ajean.BrandICO(16, 32, 48, 64, 128, 256))
// PNG 1024 pour le bundle macOS : la CI en tire le .icns via sips/iconutil.
// Elle partait auparavant du .ico, ce qui suppose que sips sache lire un ICO —
// et l'échec y est masqué par « || true », donc une app Mac sans icône passait
// inaperçue. Un PNG ne laisse aucune place au doute.
write(strings.TrimSuffix(out, ".ico")+".png", ajean.BrandIconPNG(1024))
}
func write(path string, data []byte) {
if err := os.WriteFile(path, data, 0o644); err != nil {
fmt.Fprintln(os.Stderr, "gen-icon:", err)
os.Exit(1)
}
fmt.Println("OK ->", path)
}