Skip to content

Fazycks/stackpick

Repository files navigation

stackpick

CLI interactif pour installer ton environnement de dev — choisis tes outils, stackpick s'occupe d'utiliser le bon gestionnaire de paquets selon ton OS (macOS, Windows, Linux) et la dernière version.

CI npm license

npx stackpick

Un menu interactif s'affiche, regroupé par catégorie. Coche ce que tu veux, valide, c'est installé.


✨ Pourquoi

Réinstaller sa machine de dev, c'est une heure perdue à copier-coller des commandes brew install / winget install / curl … | sh. stackpick rassemble 49 outils avec, pour chacun, la meilleure méthode d'installation officielle vérifiée sur chaque plateforme, et te laisse choisir d'un clic.

  • 🖱️ Sélection interactive par catégories (propulsée par @clack/prompts).
  • 🧠 Détection de l'OS et de l'architecture (Intel / Apple Silicon, x64 / arm64).
  • 📦 Hybride « gestionnaire d'abord » : Homebrew sur macOS, winget/Scoop sur Windows, apt/dnf/pacman sur Linux, avec repli automatique sur les scripts officiels ou le téléchargement direct.
  • Rapide : les outils déjà présents sont détectés et ignorés ; installations parallélisées quand c'est sûr.
  • 🧪 Sans surprise : --dry-run affiche exactement les commandes qui seront lancées.

🚀 Installation & usage

Aucune installation requise :

npx stackpick           # menu interactif

Ou en global :

npm install -g stackpick
stackpick

Options

Option Description
-a, --all Installe tout le catalogue compatible avec ton OS
-o, --only <ids> IDs séparés par des virgules (ex : node,git,vscode)
-c, --category <noms> Filtre par catégories (ex : editeurs,ia)
-y, --yes Pas de confirmation
--dry-run Affiche les commandes sans rien installer
--force Réinstalle même si déjà présent
--concurrency <n> Nombre d'installations en parallèle
--no-detect Ne pré-détecte pas les outils déjà installés
-l, --list Affiche le catalogue puis quitte
-v, --version Version

Exemples

stackpick --only node,pnpm,git,vscode,claude-code   # une stack précise
stackpick --category "Outils IA" --yes              # toute une catégorie
stackpick --all --dry-run                           # voir ce qui serait installé
stackpick --list                                    # lister le catalogue

📦 Catalogue (49 outils)

✅ = installation supportée · — = pas de distribution officielle pour cet OS

Runtimes & gestionnaires de paquets

Outil macOS Windows Linux
Node.js (node)
pnpm (pnpm)
Yarn (yarn)
Bun (bun)
Deno (deno)
Git (git)

Langages & gestionnaires de versions

Outil macOS Windows Linux
Python (CPython) (python)
Go (Golang) (go)
Rust (rustup) (rust)
Java JDK (Temurin) (java)
fnm (fnm)
nvm (nvm)
pyenv (pyenv)
Volta (volta)

Éditeurs & IDE

Outil macOS Windows Linux
Visual Studio Code (vscode)
Cursor (cursor)
Zed (zed)
Windsurf (windsurf)
Sublime Text (sublime)
Neovim (neovim)
JetBrains Toolbox (jetbrains-toolbox)

Outils IA

Outil macOS Windows Linux
OpenAI Codex CLI (codex)
Claude Desktop (claude)
Claude Code CLI (claude-code)
Aider (aider)
Ollama (ollama)
LM Studio (lm-studio)
GitHub Copilot CLI (copilot-cli)

CLI essentiels

Outil macOS Windows Linux
GitHub CLI (gh)
jq (jq)
ripgrep (ripgrep)
fzf (fzf)
Starship (starship)
Oh My Zsh (oh-my-zsh)
Wget (wget)

Conteneurs, lanceurs & navigateur

Outil macOS Windows Linux
Docker Desktop (docker)
OrbStack (orbstack)
Raycast (raycast)
Microsoft PowerToys (powertoys)
Helium (helium)

Terminaux

Outil macOS Windows Linux
Warp (warp)
Ghostty (ghostty)
WezTerm (wezterm)
Windows Terminal (windows-terminal)

Bases de données & API

Outil macOS Windows Linux
Postman (postman)
Bruno (bruno)
Insomnia (insomnia)
TablePlus (tableplus)
DBeaver Community (dbeaver)

⚙️ Comment ça marche

Pour chaque outil, le catalogue (src/catalog.json) décrit une stratégie d'installation par plateforme :

{
  "id": "cursor",
  "detect": "cursor --version || test -d /Applications/Cursor.app",
  "macos":   { "manager": "brew",   "ref": "cursor", "cask": true },
  "windows": { "manager": "winget", "ref": "Anysphere.Cursor" },
  "linux":   { "manager": "download", "ref": "https://www.cursor.com/download" }
}

À l'exécution, stackpick :

  1. détecte ton OS/arch et les gestionnaires présents ;
  2. pour chaque outil sélectionné, lance detect pour ignorer ce qui est déjà installé ;
  3. exécute la stratégie principale (gestionnaire natif), avec repli automatique sur la stratégie secondaire (script officiel ou téléchargement) si le gestionnaire est absent ou échoue ;
  4. les ProductId du Microsoft Store (ex. Raycast) sont automatiquement routés vers --source msstore.

Les installations qui requièrent sudo (apt/dnf/pacman) ou une interaction GUI (.dmg, AppImage) sont gérées au mieux ; stackpick t'indique clairement ce qui reste à finaliser à la main.

🛠️ Développement

git clone https://github.com/Fazycks/stackpick.git
cd stackpick
npm install

npm run dev -- --list     # exécuter en TS sans build (tsx)
npm run typecheck         # tsc --noEmit
npm test                  # vitest
npm run build             # bundle ESM via tsup -> dist/

Stack : TypeScript · tsup · vitest · @clack/prompts · commander · execa.

Ajouter un outil

Ajoute une entrée dans src/catalog.json en suivant le type Tool de src/types.ts, puis npm test pour valider la structure. PRs bienvenues.

📄 Licence

MIT © Fazycks

About

CLI interactif pour installer ton environnement de dev (Node, pnpm, Git, VS Code, Cursor, Claude Code, Zed, Raycast, Helium…) avec le bon gestionnaire selon ton OS.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors