robuscode
v1.2.1
Published
Générateur sécurisé de mots de passe en ligne de commande.
Maintainers
Readme
Robuscode CLI
Robuscode CLI est un générateur de mots de passe sécurisé utilisable directement depuis un terminal. Il est conçu pour être lancé rapidement avec npx, sans installation globale obligatoire.
Le nom npm du package est
robuscode, et la commande exécutée estrobuscode.
Mode interactif (plein écran)
Lancer npx robuscode sans option ouvre une interface plein écran dans le terminal :
- Un seul input qui porte toute la configuration, dans un parcours guidé : le libellé dans la bordure indique l'étape en cours (
Longueur du mot de passe · 1/7) - Nom en gros caractères : logo dégradé, avec une police adaptée à la largeur du terminal
- Tout est aligné sur le nom : logo, tagline, résumé, cartes et barre de raccourcis partagent exactement la même colonne
- Entropie en direct : le bloc résultats affiche le nombre de bits et la force estimée
- Thème automatique : sombre ou clair selon
COLORFGBG, forçable avec--theme dark|light - Copie dans le presse-papier avec
c(Windows, macOS, Linux), avec retour✔ copiéou✖ rien à copier - Compatible
NO_COLOR, et se dégrade proprement sur terminal étroit
Le parcours
⏎ valide l'étape courante et passe à la suivante : longueur → nombre de mots de passe → minuscules → majuscules → chiffres → symboles → caractères ambigus → prêt à générer. L'étape finale affiche l'entropie et un ⏎ générer.
Rien n'est imposé : g génère à tout moment avec les valeurs par défaut, et ↑ ↓ permet de sauter directement à n'importe quel réglage.
Raccourcis
| Touche | Action |
|---|---|
| g / r | Générer / régénérer, à tout moment |
| ⏎ | Valider l'étape et passer à la suivante (génère à l'étape « prêt ») |
| ↑ ↓ / k j | Sauter à un réglage (ou choisir un résultat) |
| ← → | Déplacer le curseur pendant la saisie (retour en arrière à l'étape « prêt ») |
| Espace | Activer / désactiver une catégorie |
| Tab | Basculer entre les réglages et les résultats |
| c | Copier le mot de passe sélectionné |
| v | Masquer ou révéler |
| h | Afficher l'aide |
| q / Ctrl+C | Quitter (les mots de passe restent affichés) |
| Échap | Annuler la saisie en cours |
La barre du bas est contextuelle : elle n'affiche que les commandes disponibles à cet instant, et se réduit automatiquement sur terminal étroit.
npx robuscode
npx robuscode --theme lightPour une génération scriptable (sans saisie), passer directement les options ci-dessous.
Pour générer un mot de passe de 24 caractères en sélectionnant explicitement les quatre catégories principales :
npx robuscode --length 24 --lowercase --uppercase --digits --symbolsPour éviter les caractères ambigus, comme O, 0, I, l et 1 :
npx robuscode --length 24 -L -U -d -s --exclude "O0Il1"Par défaut, si aucune catégorie n’est indiquée, les minuscules, les majuscules, les chiffres et les symboles sont utilisés.
Options disponibles
| Option | Description | Exemple |
|---|---|---|
| -l, --length | Définit la longueur du mot de passe. La valeur par défaut est 20. | --length 32 |
| -n, --count | Définit le nombre de mots de passe à générer. La valeur par défaut est 1. | --count 5 |
| -L, --lowercase | Ajoute les lettres minuscules. | -L |
| -U, --uppercase | Ajoute les lettres majuscules. | -U |
| -d, --digits | Ajoute les chiffres. | -d |
| -s, --symbols | Ajoute les symboles. | -s |
| -c, --custom | Ajoute un alphabet personnalisé. | --custom "ABC123" |
| -x, --exclude | Retire des caractères de l’alphabet final. | --exclude "O0Il1" |
| --theme | Thème de l’interface : auto (défaut), dark ou light. | --theme light |
| -h, --help | Affiche l’aide. | --help |
| -v, --version | Affiche la version installée. | --version |
Exemples
Générer cinq mots de passe de 32 caractères :
npx robuscode --length 32 --count 5Utiliser uniquement des minuscules et des chiffres :
npx robuscode --length 16 --lowercase --digitsUtiliser une liste personnalisée de caractères :
npx robuscode --length 16 --custom "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"Afficher l’aide complète :
npx robuscode --helpInstallation locale pour continuer le développement
Le projet nécessite Node.js 18 ou une version plus récente. Après téléchargement et extraction du dossier :
cd robuscode-cli
npm install
npm test
npm run checkPour exécuter la commande locale sans publication npm :
npm start -- --length 24 --count 2 --uppercase --digits --symbolsIl est également possible de simuler une installation de commande globale avec le lien npm local :
npm link
robuscode --length 20Pour supprimer ensuite ce lien :
npm unlink -g robuscode-cliPublication sur npm
Le package doit d’abord recevoir un compte npm et un nom disponible. Depuis le dossier du projet :
npm login
npm publishAprès publication, n’importe quel utilisateur pourra lancer :
npx robuscodeLe nom affiché est Robuscode CLI, tandis que l'identifiant npm du package est robuscode.
Structure du projet
robuscode-cli/
├── src/
│ ├── cli.js # Parsing des arguments, aide, point d'entrée
│ ├── generator.js # Génération sécurisée des mots de passe (node:crypto)
│ ├── ansi.js # Utilitaires ANSI : largeur visible, centrage, alternate screen
│ ├── theme.js # Palettes sombre/clair, thème auto, dégradé de marque
│ ├── logo.js # Logo adaptatif (block / slick / chrome / wordmark)
│ ├── state.js # Modèle de l'interface : champs, curseur, édition, entropie
│ ├── screen.js # Rendu de l'écran (logo, carte, résultats, raccourcis)
│ ├── tui-ink.js # Interface plein écran (Ink + React, alt-screen, presse-papier)
│ └── tui.js # Rendu de secours sans dépendance (fallback)
├── test/
│ ├── cli.test.js # Tests de l'interface CLI
│ ├── generator.test.js # Tests du générateur
│ ├── logo.test.js # Tests du logo adaptatif
│ ├── screen.test.js # Tests du rendu d'écran (largeurs, thème, alignement)
│ ├── state.test.js # Tests du modèle d'interface et de l'entropie
│ ├── theme.test.js # Tests des palettes et de la détection de thème
│ ├── tui.test.js # Tests du rendu de secours
│ └── tui-ink.test.js # Test de rendu Ink sur TTY simulé
├── package.json # Configuration npm et commande npx
├── README.md # Documentation
├── LICENSE # Licence MIT
└── .gitignoreLe générateur s’appuie sur le module natif node:crypto et sa fonction randomInt, plutôt que sur un générateur aléatoire destiné à des usages non sensibles. Chaque catégorie sélectionnée est représentée au moins une fois dans le mot de passe final, puis les caractères sont mélangés avec une permutation sécurisée.
L'interface est rendue par des fonctions pures : la largeur, l'alignement et le choix du logo sont donc vérifiables par les tests, et une interface de secours fonctionne même si Ink est indisponible.
Résultat des tests
La suite contient 75 tests automatisés couvrant la longueur, les catégories de caractères, les exclusions, les alphabets personnalisés, la génération multiple, l'aide, la version, les erreurs de saisie, le logo adaptatif, la détection de thème, le parcours guidé (avance d'étape, validation des bornes, annulation, zones, sélection), ainsi que le rendu de l'écran (absence de débordement de 40 à 120 colonnes, centrage, alignement de tous les éléments sur la colonne du nom, disparition du bouton, barre contextuelle, mode monochrome, barre adaptative, mode masqué, aide) et le rendu réel de l'interface Ink sur un TTY simulé.
Licence
Ce projet est distribué sous licence MIT. Voir le fichier LICENSE.
Auteur
Prince Kouamé — Product & Software Engineering
Builder: Prince Kouamé — https://www.princekouame.com
- 🌐 Site: https://www.princekouame.com
- 🐙 GitHub: https://github.com/kouame09
- 💼 LinkedIn: https://linkedin.com/in/princekouame
- 📧 Email: [email protected]
