Tout ce qu'il faut pour distribuer kite : installateur GUI, scripts en
ligne de commande, et site web d'installation pour Cloudflare Pages.
Hypothèse à vérifier : tous les fichiers ci-dessous supposent que le
dépôt GitHub est yo-le-zz/Kite (constante REPO répétée dans chaque
fichier). Si ce n'est pas le bon nom, remplace yo-le-zz/Kite partout où
il apparaît (grep -rn "yo-le-zz/Kite" .) :
installer/src/net.rs(constanteREPO)scripts/install.sh,scripts/install-macos.sh(KITE_REPOpar défaut)scripts/install.ps1($Repopar défaut)website/index.html(lien "Releases GitHub")
installer/ Installateur GUI (Rust + iced), copie enrichie de celui fourni
Cargo.toml + ureq/tar/flate2/zip pour télécharger et extraire la vraie release
src/main.rs Assistant en 4 étapes : Bienvenue → Options → Progression → Terminé
src/net.rs Résout la dernière release GitHub, télécharge l'asset pour l'OS/arch
src/archive.rs Extrait le binaire kite d'un .tar.gz ou .zip
build.sh Cross-compile l'installateur (11 cibles), package .tar.gz/.zip/.deb
assets/ Logos/icônes (inchangés)
scripts/ Scripts d'installation en une commande
install.sh Linux : curl -fsSL .../install.sh | sh
install-macos.sh macOS : gère aussi la quarantaine Gatekeeper
install.ps1 Windows : irm .../install.ps1 | iex
website/ Site statique à déployer sur Cloudflare Pages
index.html, style.css, script.js Page avec onglets Windows/Linux/macOS + commande à copier
install.sh / install-macos.sh / install.ps1 copies statiques, servies telles quelles
functions/install.js Endpoint dynamique GET /install?os=... (Pages Function)
bash -n/dash -nsur tous les.sh→ syntaxe OK.node --checksurscript.jsetfunctions/install.js→ syntaxe OK.- Pas de toolchain Rust dans cet environnement, donc
installer/n'a pas été compilé de mon côté — un build réel chez toi a confirmé que 8/10 cibles passent, avec deux limites structurelles (voir ci-dessous). Point encore à surveiller siicedrâle : les appels.center_x(Length::Fill)/.center_y(Length::Fill)surcontainer(...)danssrc/main.rs(view_welcome,view_progress,view_done) — si ta version d'iced 0.13 n'a pas cette méthode avec cet argument, remplace par.width(Length::Fill).height(Length::Fill).
- macOS (
macos-x64,macos-arm64) :cargo-zigbuild/zigne peuvent pas linkerAppKit/Metal/le runtime Objective-C (libobjc) — ce sont des bibliothèques propriétaires Apple que zig n'embarque pas légalement. Ça fonctionne pourkite(CLI pur, aucune dépendance GUI) mais pas pour cet installateur GUI. Solution :.github/workflows/build-installer-macos.yml, qui build sur de vrais runnersmacos-13/macos-14GitHub Actions et produit les mêmes noms de fichiers quebuild.sh(kite-installer-<version>-macos-<arch>.tar.gz). Déclenche-le manuellement (onglet Actions) ou en poussant un tagv*. windows-arm64(MSVC) : retiré de la matrice deinstaller/build.sh.ring(tiré parureq→rustlspour le téléchargement HTTPS) casse souscargo-xwinpour cette cible précise (bug d'interaction clang-cl//imsvc, pas un problème de config).kite's proprebuild.shn'a pas ce souci (pas de dépendanceureq) et buildwindows-arm64normalement. Pour l'installateur sur cette cible, il faut soit une vraie machine Windows-on-ARM avec MSVC, soit attendre un correctif upstream decargo-xwin/ring.
kite's proprebuild.sh(déjà livré précédemment) publiekite-<version>-<os>-<arch>.tar.gz/.zipetkite_<version>_<arch>.debcomme assets de la release GitHub.installer/(le GUI) etscripts/*.sh|ps1téléchargent ces mêmes assets par leur nom exact — aucun changement de convention de nommage entre les deuxbuild.sh.website/affiche la commande à copier selon l'OS, et sert aussi les scripts bruts en statique (+ un endpoint/install?os=...qui fait la même chose dynamiquement).
- Pousse le dossier
website/(tel quel, à la racine du dépôt Pages) sur GitHub, ou utilisewrangler pages deploy website/. - Aucune configuration de build n'est nécessaire (site 100% statique +
une Function) — output directory =
website/. - Une fois déployé, remplace les URLs
https://kite-lang.pages.dev/...dansindex.html,script.jset les 3 scripts par ton domaine réel si différent.