@powernukkitx/cli 0.0.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +203 -177
  2. package/dist/bundle.js +3 -18856
  3. package/dist/cli.js +46 -0
  4. package/dist/commands/backup.d.ts +2 -1
  5. package/dist/commands/backup.js +21 -71
  6. package/dist/commands/cfg.d.ts +2 -0
  7. package/dist/commands/cfg.js +61 -0
  8. package/dist/commands/config.js +52 -105
  9. package/dist/commands/console.d.ts +2 -0
  10. package/dist/commands/console.js +99 -0
  11. package/dist/commands/doctor.d.ts +2 -1
  12. package/dist/commands/doctor.js +87 -108
  13. package/dist/commands/info.d.ts +2 -1
  14. package/dist/commands/info.js +39 -33
  15. package/dist/commands/init.d.ts +2 -4
  16. package/dist/commands/init.js +58 -65
  17. package/dist/commands/lang.d.ts +2 -0
  18. package/dist/commands/lang.js +28 -0
  19. package/dist/commands/logs.d.ts +2 -0
  20. package/dist/commands/logs.js +61 -0
  21. package/dist/commands/menu.js +86 -0
  22. package/dist/commands/plugin/index.d.ts +2 -0
  23. package/dist/commands/plugin/index.js +13 -0
  24. package/dist/commands/plugin/info.d.ts +2 -0
  25. package/dist/commands/plugin/info.js +40 -0
  26. package/dist/commands/plugin/install.d.ts +2 -0
  27. package/dist/commands/plugin/install.js +57 -0
  28. package/dist/commands/plugin/installed.d.ts +2 -0
  29. package/dist/commands/plugin/installed.js +42 -0
  30. package/dist/commands/plugin/list.d.ts +2 -0
  31. package/dist/commands/plugin/list.js +49 -0
  32. package/dist/commands/plugin/remove.d.ts +2 -0
  33. package/dist/commands/plugin/remove.js +45 -0
  34. package/dist/commands/plugin/search.d.ts +2 -0
  35. package/dist/commands/plugin/search.js +12 -0
  36. package/dist/commands/plugin/update.d.ts +2 -0
  37. package/dist/commands/plugin/update.js +53 -0
  38. package/dist/commands/plugin.d.ts +1 -12
  39. package/dist/commands/plugin.js +1 -385
  40. package/dist/commands/start.d.ts +2 -7
  41. package/dist/commands/start.js +61 -94
  42. package/dist/commands/stop.d.ts +2 -0
  43. package/dist/commands/stop.js +27 -0
  44. package/dist/commands/update.d.ts +2 -5
  45. package/dist/commands/update.js +30 -50
  46. package/dist/commands/use.d.ts +2 -0
  47. package/dist/commands/use.js +40 -0
  48. package/dist/core/config.d.ts +13 -0
  49. package/dist/core/config.js +31 -0
  50. package/dist/core/network.d.ts +13 -0
  51. package/dist/core/network.js +139 -0
  52. package/dist/core/output.d.ts +33 -0
  53. package/dist/core/output.js +75 -0
  54. package/dist/core/process.d.ts +10 -0
  55. package/dist/core/process.js +53 -0
  56. package/dist/i18n/en.json +174 -0
  57. package/dist/i18n/fr.json +174 -0
  58. package/dist/i18n/index.js +58 -0
  59. package/dist/index.d.ts +0 -1
  60. package/dist/index.js +1 -260
  61. package/dist/infra/http.js +121 -0
  62. package/dist/infra/paths.js +20 -0
  63. package/dist/infra/store.js +27 -0
  64. package/dist/lang/en.json +116 -148
  65. package/dist/lang/fr.json +115 -147
  66. package/dist/main.d.ts +2 -0
  67. package/dist/main.js +28 -0
  68. package/dist/services/backup.js +40 -0
  69. package/dist/services/plugins.js +111 -0
  70. package/dist/services/process.js +43 -0
  71. package/dist/services/release.js +38 -0
  72. package/dist/services/server.js +89 -0
  73. package/dist/ui/output.js +71 -0
  74. package/dist/ui/prompts.js +30 -0
  75. package/dist/ui/theme.js +18 -0
  76. package/dist/utils/api.d.ts +3 -12
  77. package/dist/utils/api.js +7 -57
  78. package/dist/utils/github.d.ts +3 -10
  79. package/dist/utils/github.js +27 -154
  80. package/dist/utils/server.d.ts +2 -2
  81. package/dist/utils/server.js +17 -24
  82. package/package.json +15 -32
package/README.md CHANGED
@@ -1,177 +1,203 @@
1
- # pnx-cli
2
-
3
- PowerNukkitX CLI est un outil en ligne de commande pour gérer un serveur **Minecraft Bedrock** propulsé par **PowerNukkitX**.
4
-
5
- Il propose un menu interactif, la gestion des plugins, des outils de diagnostic, des sauvegardes, et des commandes rapides pour initialiser ou démarrer un serveur.
6
-
7
- ## Installation
8
-
9
- ```bash
10
- npm install -g pnx-cli
11
- ```
12
-
13
- Après installation, la commande disponible est `pnx`.
14
-
15
- ## Prérequis
16
-
17
- - [Node.js](https://nodejs.org/) **18 ou plus**
18
- - Un dossier de serveur PowerNukkitX si vous souhaitez gérer une installation existante
19
-
20
- ## Démarrage rapide
21
-
22
- Lancer le menu interactif :
23
-
24
- ```bash
25
- pnx
26
- ```
27
-
28
- Afficher l’aide :
29
-
30
- ```bash
31
- pnx --help
32
- ```
33
-
34
- Choisir la langue :
35
-
36
- ```bash
37
- pnx --lang fr
38
- ```
39
-
40
- ## Fonctionnalités
41
-
42
- - Initialiser un nouveau serveur PowerNukkitX
43
- - Démarrer le serveur avec options de mémoire et redémarrage automatique
44
- - Installer, lister, rechercher, mettre à jour et supprimer des plugins
45
- - Vérifier l’état du serveur avec un diagnostic intégré
46
- - Créer des sauvegardes du serveur
47
- - Consulter la configuration et les informations du serveur
48
- - Mettre à jour `powernukkitx.jar`
49
- - Utiliser l’interface en anglais ou en français
50
-
51
- ## Commandes disponibles
52
-
53
- ### Initialiser un serveur
54
-
55
- ```bash
56
- pnx init --dir ./pnx-server
57
- ```
58
-
59
- Options :
60
-
61
- - `-d, --dir <path>` : dossier cible
62
- - `--dev` : installer la version de développement
63
-
64
- ### Démarrer le serveur
65
-
66
- ```bash
67
- pnx start --memory 4G --restart
68
- ```
69
-
70
- Options :
71
-
72
- - `-g, --generate-only` : générer la commande de démarrage sans l’exécuter
73
- - `-r, --restart` : redémarrer automatiquement en cas de crash
74
- - `-m, --memory <size>` : mémoire allouée, par exemple `2G` ou `4G`
75
- - `-i, --interactive` : mode interactif avec prompts
76
-
77
- ### Gérer les plugins
78
-
79
- ```bash
80
- pnx plugin list
81
- pnx plugin search essentials
82
- pnx plugin info <slug>
83
- pnx plugin install <name>
84
- pnx plugin update
85
- pnx plugin remove <name>
86
- pnx plugin installed
87
- ```
88
-
89
- Sous-commandes :
90
-
91
- - `install [names...]` : installer un plugin depuis le marketplace ou une URL `.jar`
92
- - `list` : afficher les plugins disponibles
93
- - `search [term]` : rechercher par nom, description ou auteur
94
- - `info [slug]` : afficher la fiche détaillée d’un plugin
95
- - `installed` : lister les plugins installés localement
96
- - `update [names...]` : mettre à jour les plugins installés
97
- - `remove [names...]` : supprimer des plugins installés
98
-
99
- ### Mettre à jour le serveur
100
-
101
- ```bash
102
- pnx update --force
103
- ```
104
-
105
- Options :
106
-
107
- - `--dev` : installer la version de développement
108
- - `-f, --force` : forcer la mise à jour même si la version correspond
109
-
110
- ### Diagnostics et utilitaires
111
-
112
- ```bash
113
- pnx doctor
114
- pnx backup
115
- pnx config
116
- pnx info
117
- pnx lang --set fr
118
- ```
119
-
120
- ## Mode interactif
121
-
122
- Si vous lancez `pnx` sans sous-commande, l’application ouvre un menu interactif pour :
123
-
124
- - créer ou initialiser un serveur
125
- - démarrer le serveur
126
- - gérer les plugins
127
- - mettre à jour PowerNukkitX
128
- - lancer un diagnostic
129
- - effectuer une sauvegarde
130
- - changer la langue
131
-
132
- ## Développement
133
-
134
- Installer les dépendances :
135
-
136
- ```bash
137
- npm install
138
- ```
139
-
140
- Compiler le projet :
141
-
142
- ```bash
143
- npm run build
144
- ```
145
-
146
- Lancer la CLI localement :
147
-
148
- ```bash
149
- npm start
150
- ```
151
-
152
- Surveiller les changements TypeScript :
153
-
154
- ```bash
155
- npm run dev
156
- ```
157
-
158
- ## Exécutables autonomes
159
-
160
- Le projet fournit aussi des scripts pour générer des exécutables Windows, Linux et macOS :
161
-
162
- ```bash
163
- npm run build:exe:win
164
- npm run build:exe:linux
165
- npm run build:exe:mac
166
- ```
167
-
168
- ## Liens utiles
169
-
170
- - Documentation PowerNukkitX : https://docs.powernukkitx.org
171
- - Dépôt PowerNukkitX : https://github.com/PowerNukkitX/PowerNukkitX
172
-
173
- ## Licence
174
-
175
- MIT
176
-
177
-
1
+ # pnx-cli
2
+
3
+ **PowerNukkitX CLI** outil en ligne de commande pour gérer un serveur **Minecraft Bedrock** propulsé par [PowerNukkitX](https://github.com/PowerNukkitX/PowerNukkitX).
4
+
5
+ Créez, démarrez, mettez à jour et diagnostiquez votre serveur, gérez les plugins depuis la marketplace, le tout avec une interface soignée et un menu interactif en français ou en anglais.
6
+
7
+ ## Sommaire
8
+
9
+ - [Installation](#installation)
10
+ - [Prérequis](#prérequis)
11
+ - [Démarrage rapide](#démarrage-rapide)
12
+ - [Commandes](#commandes)
13
+ - [Mode interactif](#mode-interactif)
14
+ - [Options globales](#options-globales)
15
+ - [Architecture](#architecture)
16
+ - [Développement](#développement)
17
+ - [Exécutables autonomes](#exécutables-autonomes-sea)
18
+ - [Liens](#liens-utiles)
19
+ - [Licence](#licence)
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ npm install -g @powernukkitx/cli
25
+ ```
26
+
27
+ La commande `pnx` devient alors disponible.
28
+
29
+ Alternativement, téléchargez un exécutable autonome (voir [Exécutables autonomes](#exécutables-autonomes-sea)) — aucun Node.js requis pour l'utiliser.
30
+
31
+ ## Prérequis
32
+
33
+ - **Node.js 20.12+** (pour l'installation via npm ; inutile pour les binaires autonomes)
34
+ - **Java 21+** pour lancer le serveur ([Adoptium Temurin](https://adoptium.net/) recommandé)
35
+
36
+ ## Démarrage rapide
37
+
38
+ ```bash
39
+ # Menu interactif contextuel
40
+ pnx
41
+
42
+ # Créer un serveur puis le démarrer
43
+ pnx init --dir ./pnx-server
44
+ pnx start --memory 4G
45
+
46
+ # Aide
47
+ pnx --help
48
+ pnx <commande> --help
49
+ ```
50
+
51
+ ## Commandes
52
+
53
+ ### `init` — créer un serveur
54
+
55
+ Télécharge le dernier `powernukkitx.jar` et les scripts de démarrage.
56
+
57
+ ```bash
58
+ pnx init --dir ./pnx-server
59
+ ```
60
+
61
+ | Option | Description |
62
+ |---|---|
63
+ | `--dir <path>` | Dossier cible (sinon demandé) |
64
+ | `--dev` | Version de développement |
65
+
66
+ ### `start` — démarrer le serveur
67
+
68
+ Vérifie Java, construit les arguments JVM optimisés (ZGC générationnel, UTF-8) et lance le serveur.
69
+
70
+ ```bash
71
+ pnx start --memory 4G --restart
72
+ ```
73
+
74
+ | Option | Description |
75
+ |---|---|
76
+ | `--dir <path>` | Dossier du serveur |
77
+ | `--memory <taille>` | Mémoire allouée, ex. `2G`, `4G` (défaut `2G`) |
78
+ | `--restart` | Redémarrage automatique en cas de crash |
79
+ | `--dry-run` | Affiche la commande sans l'exécuter |
80
+
81
+ ### `stop` arrêter le serveur
82
+
83
+ Arrête le serveur démarré via son PID mémorisé.
84
+
85
+ ```bash
86
+ pnx stop
87
+ ```
88
+
89
+ ### `update` — mettre à jour le core
90
+
91
+ Sauvegarde l'ancien jar en `.old` puis télécharge la dernière version.
92
+
93
+ ```bash
94
+ pnx update --force
95
+ ```
96
+
97
+ | Option | Description |
98
+ |---|---|
99
+ | `--force` | Force le re-téléchargement (ignore le cache) |
100
+ | `--dev` | Version de développement |
101
+
102
+ ### `plugin` — gérer les plugins
103
+
104
+ Marketplace officielle + suivi local des versions installées.
105
+
106
+ ```bash
107
+ pnx plugin list # catalogue
108
+ pnx plugin search essentials # recherche
109
+ pnx plugin info <slug> # fiche détaillée
110
+ pnx plugin install <slug|url.jar> # installer (marketplace ou URL .jar)
111
+ pnx plugin installed # plugins locaux
112
+ pnx plugin update [slug] # mettre à jour
113
+ pnx plugin remove [nom] # supprimer
114
+ ```
115
+
116
+ Sans argument, `install`, `update` et `remove` proposent une sélection interactive.
117
+
118
+ ### Diagnostics & utilitaires
119
+
120
+ ```bash
121
+ pnx doctor # Java, RAM, disque, port 19132, plugins/mondes
122
+ pnx info # état, chemin, plugins, mondes, RAM
123
+ pnx backup # sauvegarde horodatée du serveur
124
+ pnx config # affiche pnx.yml / server.properties (coloré)
125
+ pnx use ./serveur # définit le serveur par défaut
126
+ pnx logs # derniers logs (avec suivi live)
127
+ pnx console # console RCON attachée au serveur
128
+ pnx lang --set fr # langue (fr / en)
129
+ ```
130
+
131
+ `doctor` et `info` acceptent `--json` pour une sortie machine.
132
+
133
+ ## Mode interactif
134
+
135
+ Lancée sans sous-commande, `pnx` ouvre un **menu contextuel** qui :
136
+
137
+ - détecte l'état (serveur présent, démarré, PID) ;
138
+ - ne propose que les actions pertinentes (créer si absent, démarrer si arrêté, arrêter si en cours…) ;
139
+ - route vers les commandes existantes.
140
+
141
+ ```bash
142
+ pnx
143
+ ```
144
+
145
+ ## Options globales
146
+
147
+ | Option | Description |
148
+ |---|---|
149
+ | `--json` | Sortie JSON machine (désactive le rendu décoratif) |
150
+ | `--lang <fr\|en>` | Force la langue pour cette exécution |
151
+ | `--no-color` | Désactive les couleurs |
152
+
153
+ Résolution de la langue : `--lang` > configuration sauvegardée > variable d'environnement > **français** par défaut.
154
+
155
+ L'état du CLI est stocké dans `~/.pnx-cli/` (config, PID, plugins installés, cache des versions). Variables d'environnement : `PNX_API_URL` (base de l'API marketplace), `PNX_HOME` (répertoire d'état).
156
+
157
+ ## Architecture
158
+
159
+ Le code suit une architecture en couches — commandes minces, logique métier isolée et testable :
160
+
161
+ ```
162
+ src/
163
+ cli.ts point d'entrée (citty) + options globales
164
+ commands/ parse des arguments → appel service → rendu
165
+ plugin/ sous-commandes plugin
166
+ services/ logique métier pure (release, server, process, plugins, backup)
167
+ infra/ http, store JSON (~/.pnx-cli), constantes/endpoints
168
+ ui/ système d'affichage unique (clack + chalk), prompts
169
+ i18n/ traductions fr / en
170
+ ```
171
+
172
+ Règles : les commandes ne font aucun accès réseau/fichier direct (tout passe par `services`/`infra`) ; les services ne rendent rien (ils renvoient des données).
173
+
174
+ **Stack** : TypeScript, [citty](https://github.com/unjs/citty) (routing), [@clack/prompts](https://github.com/bombshell-dev/clack) (prompts), [chalk](https://github.com/chalk/chalk) (couleurs).
175
+
176
+ ## Développement
177
+
178
+ ```bash
179
+ npm install # dépendances
180
+ npm run build # compile TypeScript → dist/ (+ copie des assets i18n)
181
+ npm run dev # compilation en watch
182
+ npm start # lance dist/cli.js
183
+ npm test # tests des services (node:test + tsx)
184
+ ```
185
+
186
+ ## Exécutables autonomes (SEA)
187
+
188
+ Le projet génère un binaire natif via **[Node Single Executable Applications](https://nodejs.org/api/single-executable-applications.html)** (bundling esbuild + injection `postject`) :
189
+
190
+ ```bash
191
+ npm run build:sea
192
+ ```
193
+
194
+ Produit `pnx` (ou `pnx.exe` sous Windows) pour **la plateforme hôte**. SEA ne cross-compile pas : lancez la commande sur chaque système cible (Windows / Linux / macOS) pour obtenir son binaire.
195
+
196
+ ## Liens utiles
197
+
198
+ - Documentation PowerNukkitX : https://docs.powernukkitx.org
199
+ - Dépôt PowerNukkitX : https://github.com/PowerNukkitX/PowerNukkitX
200
+
201
+ ## Licence
202
+
203
+ MIT