@artilingo/artiframe-cli 1.0.4 → 1.0.7
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.
- package/bin/artiframe.php +11 -1
- package/package.json +1 -1
- package/src/App.php +18 -1
- package/src/Commands/CliVersionCommand.php +128 -0
- package/src/Lang/de.php +15 -0
- package/src/Lang/en.php +15 -0
- package/src/Lang/es.php +15 -0
- package/src/Lang/fr.php +15 -0
- package/src/Lang/tr.php +15 -0
package/bin/artiframe.php
CHANGED
|
@@ -11,7 +11,17 @@
|
|
|
11
11
|
|
|
12
12
|
// Define constants
|
|
13
13
|
define('ARTIFRAME_CLI_ROOT', dirname(__DIR__));
|
|
14
|
-
|
|
14
|
+
// Read version dynamically from package.json
|
|
15
|
+
$_pkgFile = dirname(__DIR__) . '/package.json';
|
|
16
|
+
$_pkgVersion = '?.?.?';
|
|
17
|
+
if (file_exists($_pkgFile)) {
|
|
18
|
+
$_pkg = json_decode(file_get_contents($_pkgFile), true);
|
|
19
|
+
if (!empty($_pkg['version'])) {
|
|
20
|
+
$_pkgVersion = $_pkg['version'];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
define('ARTIFRAME_VERSION', $_pkgVersion);
|
|
24
|
+
unset($_pkgFile, $_pkg, $_pkgVersion);
|
|
15
25
|
|
|
16
26
|
// Register a simple autoloader for the CLI's own classes
|
|
17
27
|
spl_autoload_register(function ($class) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@artilingo/artiframe-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "ArtiFrame — Zero-dependency native PHP framework with a powerful multilingual CLI. Scaffold projects, generate views, APIs and classes instantly.",
|
|
5
5
|
"main": "bin/artiframe.js",
|
|
6
6
|
"bin": {
|
package/src/App.php
CHANGED
|
@@ -123,6 +123,11 @@ class App
|
|
|
123
123
|
$parts = array_values($parts);
|
|
124
124
|
|
|
125
125
|
$commandName = array_shift($parts);
|
|
126
|
+
|
|
127
|
+
// Support two-word commands: "cli v", "cli version", "make:view" etc.
|
|
128
|
+
if ($commandName === 'cli' && !empty($parts)) {
|
|
129
|
+
$commandName = 'cli ' . array_shift($parts);
|
|
130
|
+
}
|
|
126
131
|
|
|
127
132
|
try {
|
|
128
133
|
$this->routeCommand($commandName, $parts);
|
|
@@ -187,9 +192,15 @@ class App
|
|
|
187
192
|
break;
|
|
188
193
|
|
|
189
194
|
case 'version':
|
|
195
|
+
// Always routes to project version manager
|
|
190
196
|
(new \ArtiFrame\Cli\Commands\VersionCommand($this->translator))->execute($commandArgs);
|
|
191
197
|
break;
|
|
192
198
|
|
|
199
|
+
case 'cli version':
|
|
200
|
+
case 'cli v':
|
|
201
|
+
(new \ArtiFrame\Cli\Commands\CliVersionCommand($this->translator))->execute();
|
|
202
|
+
break;
|
|
203
|
+
|
|
193
204
|
case 'help':
|
|
194
205
|
default:
|
|
195
206
|
$this->showHelp();
|
|
@@ -243,7 +254,13 @@ class App
|
|
|
243
254
|
echo " " . $d . "└── " . $r . "Example: " . $lg . "make:class classes/UserManager.php" . $r . PHP_EOL;
|
|
244
255
|
echo PHP_EOL;
|
|
245
256
|
|
|
246
|
-
// version
|
|
257
|
+
// cli v / cli version — CLI self-version
|
|
258
|
+
echo " " . $g . "cli v" . $r . " / " . $g . "cli version" . $r . PHP_EOL;
|
|
259
|
+
echo " " . $d . "│" . $r . " " . $t->get('HELP_CLI_VERSION_DESC') . PHP_EOL;
|
|
260
|
+
echo " " . $d . "└── " . $r . "Example: " . $lg . "cli v" . $r . PHP_EOL;
|
|
261
|
+
echo PHP_EOL;
|
|
262
|
+
|
|
263
|
+
// version upgrade/downgrade — project version manager
|
|
247
264
|
echo " " . $g . "version" . $r . " " . $y . "<action>" . $r . " " . $y . "<level>" . $r . PHP_EOL;
|
|
248
265
|
echo " " . $d . "│" . $r . " " . $t->get('HELP_VERSION_DESC1') . PHP_EOL;
|
|
249
266
|
echo " " . $d . "│" . $r . " " . $t->get('HELP_VERSION_FORMAT') . PHP_EOL;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
namespace ArtiFrame\Cli\Commands;
|
|
3
|
+
|
|
4
|
+
use ArtiFrame\Cli\Services\Translator;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* CliVersionCommand
|
|
8
|
+
*
|
|
9
|
+
* Shows the installed CLI version, checks npm registry for the latest,
|
|
10
|
+
* and optionally self-updates via `npm install -g`.
|
|
11
|
+
*/
|
|
12
|
+
class CliVersionCommand
|
|
13
|
+
{
|
|
14
|
+
private Translator $translator;
|
|
15
|
+
|
|
16
|
+
private const PACKAGE = '@artilingo/artiframe-cli';
|
|
17
|
+
private const REGISTRY = 'https://registry.npmjs.org/%40artilingo%2Fartiframe-cli/latest';
|
|
18
|
+
|
|
19
|
+
public function __construct(Translator $translator)
|
|
20
|
+
{
|
|
21
|
+
$this->translator = $translator;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public function execute(): void
|
|
25
|
+
{
|
|
26
|
+
$t = $this->translator;
|
|
27
|
+
|
|
28
|
+
$g = "\033[38;2;0;157;108m";
|
|
29
|
+
$w = "\033[1;37m";
|
|
30
|
+
$d = "\033[38;2;100;100;100m";
|
|
31
|
+
$y = "\033[38;5;220m";
|
|
32
|
+
$r = "\033[0m";
|
|
33
|
+
|
|
34
|
+
$current = $this->getCurrentVersion();
|
|
35
|
+
|
|
36
|
+
echo PHP_EOL;
|
|
37
|
+
echo " {$w}" . $t->get('VERSION_CURRENT') . ":{$r} {$g}v{$current}{$r}" . PHP_EOL;
|
|
38
|
+
echo " {$d}" . $t->get('VERSION_CHECKING') . "{$r}";
|
|
39
|
+
flush();
|
|
40
|
+
|
|
41
|
+
$latest = $this->fetchLatestVersion();
|
|
42
|
+
|
|
43
|
+
// Overwrite the "checking..." line
|
|
44
|
+
echo "\r" . str_repeat(' ', 70) . "\r";
|
|
45
|
+
|
|
46
|
+
if ($latest === null) {
|
|
47
|
+
echo " {$y}" . $t->get('VERSION_NETWORK_ERROR') . "{$r}" . PHP_EOL . PHP_EOL;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
echo " {$w}" . $t->get('VERSION_LATEST') . ":{$r} {$g}v{$latest}{$r}" . PHP_EOL;
|
|
52
|
+
echo PHP_EOL;
|
|
53
|
+
|
|
54
|
+
if (version_compare($latest, $current, '<=')) {
|
|
55
|
+
echo " " . $t->get('VERSION_UP_TO_DATE') . PHP_EOL . PHP_EOL;
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ── Update available ─────────────────────────────────────
|
|
60
|
+
echo " {$y}" . $t->get('VERSION_UPDATE_AVAILABLE') . "{$r}"
|
|
61
|
+
. " {$d}v{$current}{$r} → {$g}v{$latest}{$r}" . PHP_EOL;
|
|
62
|
+
echo PHP_EOL;
|
|
63
|
+
echo " " . $t->get('VERSION_UPDATE_PROMPT') . " ";
|
|
64
|
+
flush();
|
|
65
|
+
|
|
66
|
+
$answer = strtolower(trim(fgets(STDIN)));
|
|
67
|
+
$yesKeys = array_map('trim', explode(',', $t->get('VERSION_YES_KEYS')));
|
|
68
|
+
|
|
69
|
+
if (!in_array($answer, $yesKeys, true)) {
|
|
70
|
+
echo PHP_EOL . " {$d}" . $t->get('VERSION_UPDATE_CANCELLED') . "{$r}" . PHP_EOL . PHP_EOL;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
echo PHP_EOL;
|
|
75
|
+
echo " " . $t->get('VERSION_UPDATING') . PHP_EOL;
|
|
76
|
+
echo PHP_EOL;
|
|
77
|
+
|
|
78
|
+
passthru('npm install -g ' . self::PACKAGE, $exitCode);
|
|
79
|
+
|
|
80
|
+
echo PHP_EOL;
|
|
81
|
+
if ($exitCode === 0) {
|
|
82
|
+
echo " {$g}" . $t->get('VERSION_UPDATE_SUCCESS') . "{$r}" . PHP_EOL;
|
|
83
|
+
} else {
|
|
84
|
+
echo " " . $t->get('VERSION_UPDATE_FAILED') . PHP_EOL;
|
|
85
|
+
}
|
|
86
|
+
echo PHP_EOL;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// ── Helpers ──────────────────────────────────────────────────
|
|
90
|
+
|
|
91
|
+
private function getCurrentVersion(): string
|
|
92
|
+
{
|
|
93
|
+
$pkgFile = ARTIFRAME_CLI_ROOT . '/package.json';
|
|
94
|
+
if (file_exists($pkgFile)) {
|
|
95
|
+
$pkg = json_decode(file_get_contents($pkgFile), true);
|
|
96
|
+
if (!empty($pkg['version'])) {
|
|
97
|
+
return $pkg['version'];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return defined('ARTIFRAME_VERSION') ? ARTIFRAME_VERSION : '?.?.?';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private function fetchLatestVersion(): ?string
|
|
104
|
+
{
|
|
105
|
+
$context = stream_context_create([
|
|
106
|
+
'http' => [
|
|
107
|
+
'method' => 'GET',
|
|
108
|
+
'header' => "Accept: application/json\r\nUser-Agent: artiframe-cli\r\n",
|
|
109
|
+
'timeout' => 6,
|
|
110
|
+
'ignore_errors' => true,
|
|
111
|
+
],
|
|
112
|
+
'ssl' => [
|
|
113
|
+
'verify_peer' => true,
|
|
114
|
+
'verify_peer_name' => true,
|
|
115
|
+
],
|
|
116
|
+
]);
|
|
117
|
+
|
|
118
|
+
$raw = @file_get_contents(self::REGISTRY, false, $context);
|
|
119
|
+
if ($raw === false) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
$data = json_decode($raw, true);
|
|
124
|
+
return isset($data['version']) && is_string($data['version'])
|
|
125
|
+
? $data['version']
|
|
126
|
+
: null;
|
|
127
|
+
}
|
|
128
|
+
}
|
package/src/Lang/de.php
CHANGED
|
@@ -88,4 +88,19 @@ return [
|
|
|
88
88
|
'LANG_VALID_LIST' => 'Unterstützte Sprachen',
|
|
89
89
|
'LANG_INVALID_CHOICE' => 'Ungültige Auswahl. Bitte eine Zahl zwischen 1 und 5 eingeben.',
|
|
90
90
|
'HELP_LANG_DESC' => 'Spracheinstellung anzeigen und ändern.',
|
|
91
|
+
|
|
92
|
+
// CliVersionCommand
|
|
93
|
+
'VERSION_CURRENT' => 'Aktuelle Version',
|
|
94
|
+
'VERSION_LATEST' => 'Neueste Version ',
|
|
95
|
+
'VERSION_CHECKING' => 'Nach Updates suchen...',
|
|
96
|
+
'VERSION_NETWORK_ERROR' => '⚠️ Keine Verbindung zum Update-Server (Netzwerkfehler).',
|
|
97
|
+
'VERSION_UP_TO_DATE' => '✅ Aktuell — Keine neue Version verfügbar.',
|
|
98
|
+
'VERSION_UPDATE_AVAILABLE' => '🔔 Update verfügbar!',
|
|
99
|
+
'VERSION_UPDATE_PROMPT' => 'Möchten Sie jetzt aktualisieren? [j/N]:',
|
|
100
|
+
'VERSION_YES_KEYS' => 'j,y',
|
|
101
|
+
'VERSION_UPDATE_CANCELLED' => 'Update abgebrochen.',
|
|
102
|
+
'VERSION_UPDATING' => '📦 Wird aktualisiert...',
|
|
103
|
+
'VERSION_UPDATE_SUCCESS' => '✅ Update abgeschlossen! Bitte Terminal neu starten.',
|
|
104
|
+
'VERSION_UPDATE_FAILED' => '❌ Update fehlgeschlagen.',
|
|
105
|
+
'HELP_CLI_VERSION_DESC' => 'CLI-Version anzeigen und nach Updates suchen.',
|
|
91
106
|
];
|
package/src/Lang/en.php
CHANGED
|
@@ -88,4 +88,19 @@ return [
|
|
|
88
88
|
'LANG_VALID_LIST' => 'Supported languages',
|
|
89
89
|
'LANG_INVALID_CHOICE' => 'Invalid choice. Please enter a number between 1 and 5.',
|
|
90
90
|
'HELP_LANG_DESC' => 'View and change the language preference.',
|
|
91
|
+
|
|
92
|
+
// CliVersionCommand
|
|
93
|
+
'VERSION_CURRENT' => 'Current version',
|
|
94
|
+
'VERSION_LATEST' => 'Latest version ',
|
|
95
|
+
'VERSION_CHECKING' => 'Checking for updates...',
|
|
96
|
+
'VERSION_NETWORK_ERROR' => '⚠️ Could not check for updates (network error).',
|
|
97
|
+
'VERSION_UP_TO_DATE' => '✅ Up to date — No new version available.',
|
|
98
|
+
'VERSION_UPDATE_AVAILABLE' => '🔔 Update available!',
|
|
99
|
+
'VERSION_UPDATE_PROMPT' => 'Would you like to update now? [y/N]:',
|
|
100
|
+
'VERSION_YES_KEYS' => 'y',
|
|
101
|
+
'VERSION_UPDATE_CANCELLED' => 'Update cancelled.',
|
|
102
|
+
'VERSION_UPDATING' => '📦 Updating...',
|
|
103
|
+
'VERSION_UPDATE_SUCCESS' => '✅ Update complete! Please restart your terminal.',
|
|
104
|
+
'VERSION_UPDATE_FAILED' => '❌ Update failed.',
|
|
105
|
+
'HELP_CLI_VERSION_DESC' => 'Show CLI version and check for updates.',
|
|
91
106
|
];
|
package/src/Lang/es.php
CHANGED
|
@@ -88,4 +88,19 @@ return [
|
|
|
88
88
|
'LANG_VALID_LIST' => 'Idiomas admitidos',
|
|
89
89
|
'LANG_INVALID_CHOICE' => 'Elección inválida. Por favor ingrese un número entre 1 y 5.',
|
|
90
90
|
'HELP_LANG_DESC' => 'Ver y cambiar la preferencia de idioma.',
|
|
91
|
+
|
|
92
|
+
// CliVersionCommand
|
|
93
|
+
'VERSION_CURRENT' => 'Versión actual ',
|
|
94
|
+
'VERSION_LATEST' => 'Última versión ',
|
|
95
|
+
'VERSION_CHECKING' => 'Verificando actualizaciones...',
|
|
96
|
+
'VERSION_NETWORK_ERROR' => '⚠️ No se pudo verificar las actualizaciones (error de red).',
|
|
97
|
+
'VERSION_UP_TO_DATE' => '✅ Al día — No hay nueva versión disponible.',
|
|
98
|
+
'VERSION_UPDATE_AVAILABLE' => '🔔 ¡Actualización disponible!',
|
|
99
|
+
'VERSION_UPDATE_PROMPT' => '¿Actualizar ahora? [s/N]:',
|
|
100
|
+
'VERSION_YES_KEYS' => 's,y',
|
|
101
|
+
'VERSION_UPDATE_CANCELLED' => 'Actualización cancelada.',
|
|
102
|
+
'VERSION_UPDATING' => '📦 Actualizando...',
|
|
103
|
+
'VERSION_UPDATE_SUCCESS' => '✅ ¡Actualización completa! Por favor reinicie su terminal.',
|
|
104
|
+
'VERSION_UPDATE_FAILED' => '❌ Error en la actualización.',
|
|
105
|
+
'HELP_CLI_VERSION_DESC' => 'Mostrar versión CLI y verificar actualizaciones.',
|
|
91
106
|
];
|
package/src/Lang/fr.php
CHANGED
|
@@ -88,4 +88,19 @@ return [
|
|
|
88
88
|
'LANG_VALID_LIST' => 'Langues prises en charge',
|
|
89
89
|
'LANG_INVALID_CHOICE' => 'Choix invalide. Veuillez entrer un chiffre entre 1 et 5.',
|
|
90
90
|
'HELP_LANG_DESC' => 'Afficher et modifier la préférence de langue.',
|
|
91
|
+
|
|
92
|
+
// CliVersionCommand
|
|
93
|
+
'VERSION_CURRENT' => 'Version actuelle',
|
|
94
|
+
'VERSION_LATEST' => 'Dernière version',
|
|
95
|
+
'VERSION_CHECKING' => 'Vérification des mises à jour...',
|
|
96
|
+
'VERSION_NETWORK_ERROR' => '⚠️ Impossible de vérifier les mises à jour (erreur réseau).',
|
|
97
|
+
'VERSION_UP_TO_DATE' => '✅ À jour — Aucune nouvelle version disponible.',
|
|
98
|
+
'VERSION_UPDATE_AVAILABLE' => '🔔 Mise à jour disponible !',
|
|
99
|
+
'VERSION_UPDATE_PROMPT' => 'Mettre à jour maintenant ? [o/N] :',
|
|
100
|
+
'VERSION_YES_KEYS' => 'o,y',
|
|
101
|
+
'VERSION_UPDATE_CANCELLED' => 'Mise à jour annulée.',
|
|
102
|
+
'VERSION_UPDATING' => '📦 Mise à jour en cours...',
|
|
103
|
+
'VERSION_UPDATE_SUCCESS' => '✅ Mise à jour terminée ! Veuillez redémarrer votre terminal.',
|
|
104
|
+
'VERSION_UPDATE_FAILED' => '❌ Échec de la mise à jour.',
|
|
105
|
+
'HELP_CLI_VERSION_DESC' => 'Afficher la version CLI et vérifier les mises à jour.',
|
|
91
106
|
];
|
package/src/Lang/tr.php
CHANGED
|
@@ -88,4 +88,19 @@ return [
|
|
|
88
88
|
'LANG_VALID_LIST' => 'Desteklenen diller',
|
|
89
89
|
'LANG_INVALID_CHOICE' => 'Geçersiz seçim. Lütfen 1-5 arasında bir rakam girin.',
|
|
90
90
|
'HELP_LANG_DESC' => 'Dil tercihini görüntüler ve değiştirir.',
|
|
91
|
+
|
|
92
|
+
// CliVersionCommand
|
|
93
|
+
'VERSION_CURRENT' => 'Mevcut sürüm ',
|
|
94
|
+
'VERSION_LATEST' => 'Son sürüm ',
|
|
95
|
+
'VERSION_CHECKING' => 'Güncelleme kontrol ediliyor...',
|
|
96
|
+
'VERSION_NETWORK_ERROR' => '⚠️ Sürüm kontrolü yapılamadı (ağ hatası).',
|
|
97
|
+
'VERSION_UP_TO_DATE' => '✅ Güncel — Yeni sürüm bulunmuyor.',
|
|
98
|
+
'VERSION_UPDATE_AVAILABLE' => '🔔 Güncelleme mevcut!',
|
|
99
|
+
'VERSION_UPDATE_PROMPT' => 'Şimdi güncellemek ister misiniz? [e/H]:',
|
|
100
|
+
'VERSION_YES_KEYS' => 'e,y',
|
|
101
|
+
'VERSION_UPDATE_CANCELLED' => 'Güncelleme iptal edildi.',
|
|
102
|
+
'VERSION_UPDATING' => '📦 Güncelleniyor...',
|
|
103
|
+
'VERSION_UPDATE_SUCCESS' => '✅ Güncelleme tamamlandı! Terminali yeniden başlatın.',
|
|
104
|
+
'VERSION_UPDATE_FAILED' => '❌ Güncelleme başarısız oldu.',
|
|
105
|
+
'HELP_CLI_VERSION_DESC' => 'CLI sürümünü gösterir ve güncelleme kontrol eder.',
|
|
91
106
|
];
|