@orbitpanel/cli 0.1.0 → 0.2.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.
- package/dist/commands/doctor.js +19 -26
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/intervention/list.js +9 -13
- package/dist/commands/intervention/list.js.map +1 -1
- package/dist/commands/login.js +15 -12
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/session/end.js +17 -20
- package/dist/commands/session/end.js.map +1 -1
- package/dist/commands/session/start.js +16 -18
- package/dist/commands/session/start.js.map +1 -1
- package/dist/commands/shell.d.ts +8 -0
- package/dist/commands/shell.js +12 -0
- package/dist/commands/shell.js.map +1 -0
- package/dist/commands/status.js +56 -19
- package/dist/commands/status.js.map +1 -1
- package/dist/lib/shell.d.ts +5 -0
- package/dist/lib/shell.js +516 -0
- package/dist/lib/shell.js.map +1 -0
- package/dist/lib/ui.d.ts +34 -0
- package/dist/lib/ui.js +113 -0
- package/dist/lib/ui.js.map +1 -0
- package/oclif.manifest.json +24 -3
- package/package.json +29 -7
package/dist/commands/doctor.js
CHANGED
|
@@ -4,21 +4,13 @@ import { existsSync } from 'node:fs';
|
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import { loadConfig } from '../lib/config.js';
|
|
6
6
|
import { OrbitClient } from '../lib/client.js';
|
|
7
|
-
|
|
8
|
-
return ` ${chalk.green('[OK]')} ${msg}`;
|
|
9
|
-
}
|
|
10
|
-
function fail(msg) {
|
|
11
|
-
return ` ${chalk.red('[!!]')} ${msg}`;
|
|
12
|
-
}
|
|
13
|
-
function info(msg) {
|
|
14
|
-
return ` ${chalk.blue('[--]')} ${msg}`;
|
|
15
|
-
}
|
|
7
|
+
import { banner, section, success, error, info, hint, separator } from '../lib/ui.js';
|
|
16
8
|
export default class Doctor extends Command {
|
|
17
9
|
static summary = 'Verifica che tutto funzioni correttamente';
|
|
18
10
|
static examples = ['<%= config.bin %> doctor'];
|
|
19
11
|
async run() {
|
|
20
|
-
this.log(
|
|
21
|
-
this.log(
|
|
12
|
+
this.log(banner(this.config.version));
|
|
13
|
+
this.log(section('Diagnostica'));
|
|
22
14
|
this.log('');
|
|
23
15
|
let allOk = true;
|
|
24
16
|
// 1. Token check
|
|
@@ -26,11 +18,11 @@ export default class Doctor extends Command {
|
|
|
26
18
|
const defaultSite = config.default_site;
|
|
27
19
|
const tokenEntry = defaultSite ? config.tokens[defaultSite] : undefined;
|
|
28
20
|
if (tokenEntry) {
|
|
29
|
-
this.log(
|
|
21
|
+
this.log(success(`Token configurato ${chalk.dim(`(${tokenEntry.token.slice(0, 15)}...)`)}`));
|
|
30
22
|
}
|
|
31
23
|
else {
|
|
32
|
-
this.log(
|
|
33
|
-
this.log(
|
|
24
|
+
this.log(error('Nessun token configurato'));
|
|
25
|
+
this.log(hint('orbit login --token <token>'));
|
|
34
26
|
allOk = false;
|
|
35
27
|
}
|
|
36
28
|
// 2. API reachability
|
|
@@ -40,45 +32,46 @@ export default class Doctor extends Command {
|
|
|
40
32
|
const validation = await client.validateToken();
|
|
41
33
|
const elapsed = Date.now() - start;
|
|
42
34
|
if (validation.valid) {
|
|
43
|
-
this.log(
|
|
35
|
+
this.log(success(`API raggiungibile ${chalk.dim(`(${elapsed}ms)`)}`));
|
|
44
36
|
}
|
|
45
37
|
else {
|
|
46
|
-
this.log(
|
|
38
|
+
this.log(error(`API non raggiungibile: ${validation.error}`));
|
|
47
39
|
allOk = false;
|
|
48
40
|
}
|
|
49
41
|
}
|
|
50
42
|
else {
|
|
51
43
|
this.log(info('API non verificata (nessun token)'));
|
|
52
44
|
}
|
|
53
|
-
// 3. .orbit.json
|
|
45
|
+
// 3. .orbit.json
|
|
54
46
|
const orbitJsonPath = join(process.cwd(), '.orbit.json');
|
|
55
47
|
if (existsSync(orbitJsonPath)) {
|
|
56
|
-
this.log(
|
|
48
|
+
this.log(success('Sito collegato (.orbit.json)'));
|
|
57
49
|
}
|
|
58
50
|
else {
|
|
59
|
-
this.log(info('Nessun
|
|
60
|
-
this.log(
|
|
51
|
+
this.log(info('Nessun sito collegato'));
|
|
52
|
+
this.log(hint('orbit link --site <site_id>'));
|
|
61
53
|
}
|
|
62
|
-
// 4. Git
|
|
54
|
+
// 4. Git
|
|
63
55
|
const gitDir = join(process.cwd(), '.git');
|
|
64
56
|
if (existsSync(gitDir)) {
|
|
65
|
-
this.log(
|
|
57
|
+
this.log(success('Repository git rilevato'));
|
|
66
58
|
}
|
|
67
59
|
else {
|
|
68
60
|
this.log(info('Nessun repository git'));
|
|
69
61
|
}
|
|
70
|
-
// 5. WordPress
|
|
62
|
+
// 5. WordPress
|
|
71
63
|
const wpConfigPath = join(process.cwd(), 'wp-config.php');
|
|
72
64
|
if (existsSync(wpConfigPath)) {
|
|
73
|
-
this.log(
|
|
65
|
+
this.log(success('WordPress rilevato'));
|
|
74
66
|
}
|
|
75
67
|
// Summary
|
|
76
68
|
this.log('');
|
|
69
|
+
this.log(separator());
|
|
77
70
|
if (allOk) {
|
|
78
|
-
this.log(chalk.green('Tutto ok — pronto per lavorare
|
|
71
|
+
this.log(` ${chalk.green.bold('Tutto ok')} ${chalk.dim('— pronto per lavorare')}`);
|
|
79
72
|
}
|
|
80
73
|
else {
|
|
81
|
-
this.log(chalk.yellow('
|
|
74
|
+
this.log(` ${chalk.yellow.bold('Attenzione')} ${chalk.dim('— segui i suggerimenti sopra')}`);
|
|
82
75
|
}
|
|
83
76
|
this.log('');
|
|
84
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import { loadConfig } from '../../lib/config.js';
|
|
4
4
|
import { OrbitClient } from '../../lib/client.js';
|
|
5
5
|
import { loadSiteLink } from '../../lib/site.js';
|
|
6
|
+
import { banner, section, info, separator, interventionRow } from '../../lib/ui.js';
|
|
6
7
|
export default class InterventionList extends Command {
|
|
7
8
|
static summary = 'Lista interventi del sito su Orbit';
|
|
8
9
|
static examples = [
|
|
@@ -52,7 +53,6 @@ export default class InterventionList extends Command {
|
|
|
52
53
|
this.error('Nessun token configurato. Esegui: orbit login --token <token>');
|
|
53
54
|
}
|
|
54
55
|
const client = new OrbitClient(tokenEntry.token, config.api_url);
|
|
55
|
-
// Build filters
|
|
56
56
|
const filters = {
|
|
57
57
|
limit: flags.limit,
|
|
58
58
|
sort: flags.sort,
|
|
@@ -73,25 +73,21 @@ export default class InterventionList extends Command {
|
|
|
73
73
|
this.log(JSON.stringify(result, null, 2));
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
|
+
this.log(banner(this.config.version));
|
|
76
77
|
if (result.items.length === 0) {
|
|
77
|
-
this.log(
|
|
78
|
+
this.log(info('Nessun intervento trovato.'));
|
|
79
|
+
this.log('');
|
|
78
80
|
return;
|
|
79
81
|
}
|
|
80
|
-
this.log('');
|
|
81
|
-
this.log(chalk.bold('Interventi'));
|
|
82
|
+
this.log(section('Interventi'));
|
|
82
83
|
this.log('');
|
|
83
84
|
for (const item of result.items) {
|
|
84
|
-
|
|
85
|
-
const title = String(item.title ?? '').slice(0, 50);
|
|
86
|
-
const status = String(item.status ?? '');
|
|
87
|
-
const priority = String(item.priority ?? '');
|
|
88
|
-
const origin = String(item.origin ?? '');
|
|
89
|
-
const date = String(item.created_at ?? '').slice(0, 10);
|
|
90
|
-
const statusColor = status === 'completed' ? chalk.green : status === 'in_progress' ? chalk.yellow : chalk.dim;
|
|
91
|
-
this.log(` ${chalk.dim(id)} ${title.padEnd(50)} ${statusColor(status.padEnd(12))} ${priority.padEnd(8)} ${chalk.dim(origin.padEnd(8))} ${chalk.dim(date)}`);
|
|
85
|
+
this.log(interventionRow(item));
|
|
92
86
|
}
|
|
93
87
|
this.log('');
|
|
94
|
-
this.log(
|
|
88
|
+
this.log(separator());
|
|
89
|
+
this.log(chalk.dim(` ${result.total} interventi totali`));
|
|
90
|
+
this.log('');
|
|
95
91
|
}
|
|
96
92
|
catch (err) {
|
|
97
93
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/intervention/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/intervention/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEpF,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACnD,MAAM,CAAC,OAAO,GAAG,oCAAoC,CAAC;IAEtD,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;QACrC,mEAAmE;QACnE,kDAAkD;KACnD,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,kBAAkB;YAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC;SAC/D,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,oBAAoB;YACjC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC;SAC1D,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,iBAAiB;YAC9B,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC;SAC5E,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,qBAAqB;YAClC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SAC7C,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0BAA0B;YACvC,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,0CAA0C;YACvD,OAAO,EAAE,aAAa;SACvB,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,wBAAwB;YACrC,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAExE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAoC;YAC/C,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC;QACF,IAAI,QAAQ;YAAE,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;QACvD,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAChD,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;QAC9C,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEvD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAEtC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEb,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC"}
|
package/dist/commands/login.js
CHANGED
|
@@ -2,13 +2,14 @@ import { Command, Flags } from '@oclif/core';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { OrbitClient } from '../lib/client.js';
|
|
4
4
|
import { setToken, DEFAULT_API_URL } from '../lib/config.js';
|
|
5
|
+
import { banner, section, kv, success, separator } from '../lib/ui.js';
|
|
5
6
|
export default class Login extends Command {
|
|
6
7
|
static summary = 'Autentica la CLI con un token MCP di Orbit';
|
|
7
8
|
static description = 'Salva il token MCP per autenticarsi con il backend Orbit.\n' +
|
|
8
|
-
'Il token si genera dalla UI di Orbit
|
|
9
|
+
'Il token si genera dalla UI di Orbit > Sito > Token MCP > Crea Token.';
|
|
9
10
|
static examples = [
|
|
10
11
|
'<%= config.bin %> login --token orbit_mcp_xxx',
|
|
11
|
-
'<%= config.bin %> login
|
|
12
|
+
'ORBIT_TOKEN=orbit_mcp_xxx <%= config.bin %> login',
|
|
12
13
|
];
|
|
13
14
|
static flags = {
|
|
14
15
|
token: Flags.string({
|
|
@@ -29,20 +30,20 @@ export default class Login extends Command {
|
|
|
29
30
|
};
|
|
30
31
|
async run() {
|
|
31
32
|
const { flags } = await this.parse(Login);
|
|
32
|
-
// Validate token prefix
|
|
33
33
|
if (!flags.token.startsWith('orbit_mcp_')) {
|
|
34
|
-
this.error('Il token deve iniziare con "orbit_mcp_"
|
|
34
|
+
this.error('Il token deve iniziare con "orbit_mcp_".\n' +
|
|
35
35
|
'Genera un token dalla UI di Orbit.');
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
this.log(
|
|
37
|
+
this.log(banner(this.config.version));
|
|
38
|
+
this.log(section('Login'));
|
|
39
|
+
this.log('');
|
|
40
|
+
this.log(chalk.dim(' Validazione token...'));
|
|
39
41
|
const client = new OrbitClient(flags.token, flags['api-url']);
|
|
40
42
|
const validation = await client.validateToken();
|
|
41
43
|
if (!validation.valid) {
|
|
42
44
|
this.error(`Token non valido: ${validation.error}\n` +
|
|
43
|
-
'Verifica il token e riprova.
|
|
45
|
+
'Verifica il token e riprova.');
|
|
44
46
|
}
|
|
45
|
-
// Save token
|
|
46
47
|
await setToken(flags['site-id'], {
|
|
47
48
|
token: flags.token,
|
|
48
49
|
label: flags['site-id'],
|
|
@@ -50,12 +51,14 @@ export default class Login extends Command {
|
|
|
50
51
|
created_at: new Date().toISOString(),
|
|
51
52
|
});
|
|
52
53
|
this.log('');
|
|
53
|
-
this.log(
|
|
54
|
+
this.log(success('Autenticazione riuscita'));
|
|
55
|
+
this.log('');
|
|
56
|
+
this.log(kv('API', flags['api-url']));
|
|
57
|
+
this.log(kv('Token', `${flags.token.slice(0, 15)}...${flags.token.slice(-4)}`));
|
|
58
|
+
this.log(kv('Config', '~/.orbit/config.json'));
|
|
54
59
|
this.log('');
|
|
55
|
-
this.log(
|
|
56
|
-
this.log(` Token: ${flags.token.slice(0, 15)}...${flags.token.slice(-4)}`);
|
|
60
|
+
this.log(separator());
|
|
57
61
|
this.log('');
|
|
58
|
-
this.log(chalk.dim(`Token salvato in ~/.orbit/config.json`));
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
64
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import { loadSiteLink } from '../../lib/site.js';
|
|
4
4
|
import { loadActiveSession, endSession } from '../../lib/session.js';
|
|
5
5
|
import { getGitCommitHead } from '../../lib/git.js';
|
|
6
|
+
import { banner, kv, success, hint, separator } from '../../lib/ui.js';
|
|
6
7
|
export default class SessionEnd extends Command {
|
|
7
8
|
static summary = 'Chiude la sessione di lavoro corrente';
|
|
8
9
|
static description = 'Chiude la sessione attiva, cattura il commit finale\n' +
|
|
@@ -20,42 +21,38 @@ export default class SessionEnd extends Command {
|
|
|
20
21
|
async run() {
|
|
21
22
|
const { flags } = await this.parse(SessionEnd);
|
|
22
23
|
const cwd = process.cwd();
|
|
23
|
-
// Verify site link
|
|
24
24
|
const siteLink = await loadSiteLink(cwd);
|
|
25
25
|
if (!siteLink) {
|
|
26
|
-
this.error('Nessun .orbit.json trovato
|
|
26
|
+
this.error('Nessun .orbit.json trovato.');
|
|
27
27
|
}
|
|
28
|
-
// Find active session
|
|
29
28
|
const session = await loadActiveSession(siteLink.orbit_site_id);
|
|
30
29
|
if (!session) {
|
|
31
|
-
this.error('Nessuna sessione attiva.\
|
|
32
|
-
'Avvia una sessione con: orbit session start');
|
|
30
|
+
this.error('Nessuna sessione attiva.\nAvvia con: orbit session start');
|
|
33
31
|
}
|
|
34
|
-
// Capture final git state
|
|
35
32
|
const commitEnd = await getGitCommitHead();
|
|
36
|
-
// End session
|
|
37
33
|
const ended = await endSession(session.id, {
|
|
38
34
|
git_commit_end: commitEnd ?? undefined,
|
|
39
35
|
summary: flags.summary,
|
|
40
36
|
});
|
|
41
|
-
// Calculate duration
|
|
42
37
|
const startTime = new Date(ended.started_at).getTime();
|
|
43
|
-
const
|
|
44
|
-
|
|
38
|
+
const durationMin = Math.round((Date.now() - startTime) / 60_000);
|
|
39
|
+
this.log(banner(this.config.version));
|
|
40
|
+
this.log(success('Sessione conclusa'));
|
|
45
41
|
this.log('');
|
|
46
|
-
this.log(
|
|
47
|
-
this.log('');
|
|
48
|
-
this.log(
|
|
49
|
-
this.log(` Durata: ${durationMin} minuti`);
|
|
50
|
-
this.log(` Note: ${ended.notes.length}`);
|
|
42
|
+
this.log(kv('ID', ended.id));
|
|
43
|
+
this.log(kv('Durata', `${durationMin} min`));
|
|
44
|
+
this.log(kv('Note', `${ended.notes.length}`));
|
|
51
45
|
if (ended.git_branch)
|
|
52
|
-
this.log(
|
|
53
|
-
if (ended.git_commit_start)
|
|
54
|
-
this.log(
|
|
46
|
+
this.log(kv('Branch', ended.git_branch));
|
|
47
|
+
if (ended.git_commit_start) {
|
|
48
|
+
this.log(kv('Commit', `${ended.git_commit_start} ${chalk.dim('->')} ${commitEnd ?? '?'}`));
|
|
49
|
+
}
|
|
55
50
|
if (flags.summary)
|
|
56
|
-
this.log(
|
|
51
|
+
this.log(kv('Summary', flags.summary));
|
|
52
|
+
this.log('');
|
|
53
|
+
this.log(separator());
|
|
54
|
+
this.log(hint('orbit report send per inviare il report a Orbit'));
|
|
57
55
|
this.log('');
|
|
58
|
-
this.log(chalk.dim('Invia il report con: orbit report send'));
|
|
59
56
|
}
|
|
60
57
|
}
|
|
61
58
|
//# sourceMappingURL=end.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/commands/session/end.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/commands/session/end.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Command, Flags } from '@oclif/core';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
2
|
import { loadSiteLink } from '../../lib/site.js';
|
|
4
3
|
import { createSession, loadActiveSession } from '../../lib/session.js';
|
|
5
4
|
import { getGitBranch, getGitCommitHead } from '../../lib/git.js';
|
|
5
|
+
import { banner, kv, success, hint, separator } from '../../lib/ui.js';
|
|
6
6
|
export default class SessionStart extends Command {
|
|
7
7
|
static summary = 'Inizia una sessione di lavoro locale';
|
|
8
8
|
static description = 'Avvia una sessione di lavoro collegata al sito Orbit.\n' +
|
|
@@ -20,42 +20,40 @@ export default class SessionStart extends Command {
|
|
|
20
20
|
async run() {
|
|
21
21
|
const { flags } = await this.parse(SessionStart);
|
|
22
22
|
const cwd = process.cwd();
|
|
23
|
-
// Verify site link
|
|
24
23
|
const siteLink = await loadSiteLink(cwd);
|
|
25
24
|
if (!siteLink) {
|
|
26
|
-
this.error('Nessun .orbit.json trovato
|
|
25
|
+
this.error('Nessun .orbit.json trovato.\n' +
|
|
27
26
|
'Esegui: orbit link --site <site_id>');
|
|
28
27
|
}
|
|
29
|
-
// Check for existing active session
|
|
30
28
|
const existing = await loadActiveSession(siteLink.orbit_site_id);
|
|
31
29
|
if (existing) {
|
|
32
|
-
this.error(`Sessione gia attiva (${existing.id})
|
|
33
|
-
'Chiudi
|
|
30
|
+
this.error(`Sessione gia attiva (${existing.id}).\n` +
|
|
31
|
+
'Chiudi con: orbit session end');
|
|
34
32
|
}
|
|
35
|
-
// Capture git state
|
|
36
33
|
const branch = await getGitBranch();
|
|
37
34
|
const commit = await getGitCommitHead();
|
|
38
|
-
// Create session
|
|
39
35
|
const session = await createSession(siteLink.orbit_site_id, {
|
|
40
36
|
git_branch: branch ?? undefined,
|
|
41
37
|
git_commit: commit ?? undefined,
|
|
42
38
|
note: flags.note,
|
|
43
39
|
});
|
|
40
|
+
this.log(banner(this.config.version));
|
|
41
|
+
this.log(success('Sessione avviata'));
|
|
44
42
|
this.log('');
|
|
45
|
-
this.log(
|
|
46
|
-
this.log('');
|
|
47
|
-
this.log(` ID: ${session.id}`);
|
|
48
|
-
this.log(` Sito: ${siteLink.orbit_site_id}`);
|
|
43
|
+
this.log(kv('ID', session.id));
|
|
44
|
+
this.log(kv('Sito', siteLink.orbit_site_id));
|
|
49
45
|
if (branch)
|
|
50
|
-
this.log(
|
|
46
|
+
this.log(kv('Branch', branch));
|
|
51
47
|
if (commit)
|
|
52
|
-
this.log(
|
|
53
|
-
this.log(
|
|
48
|
+
this.log(kv('Commit', commit));
|
|
49
|
+
this.log(kv('Inizio', session.started_at));
|
|
54
50
|
if (flags.note)
|
|
55
|
-
this.log(
|
|
51
|
+
this.log(kv('Nota', flags.note));
|
|
52
|
+
this.log('');
|
|
53
|
+
this.log(separator());
|
|
54
|
+
this.log(hint('orbit note add "testo" per aggiungere note'));
|
|
55
|
+
this.log(hint('orbit session end per chiudere'));
|
|
56
56
|
this.log('');
|
|
57
|
-
this.log(chalk.dim('Usa "orbit note add" per aggiungere note.'));
|
|
58
|
-
this.log(chalk.dim('Usa "orbit session end" per chiudere.'));
|
|
59
57
|
}
|
|
60
58
|
}
|
|
61
59
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/session/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/session/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEhF,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAC,OAAO,GAAG,sCAAsC,CAAC;IAExD,MAAM,CAAC,WAAW,GAChB,yDAAyD;QACzD,uDAAuD,CAAC;IAE1D,MAAM,CAAC,QAAQ,GAAG;QAChB,iCAAiC;QACjC,4DAA4D;KAC7D,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,8BAA8B;SAC5C,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CACR,+BAA+B;gBAC7B,qCAAqC,CACxC,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjE,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CACR,wBAAwB,QAAQ,CAAC,EAAE,MAAM;gBACvC,+BAA+B,CAClC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAExC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE;YAC1D,UAAU,EAAE,MAAM,IAAI,SAAS;YAC/B,UAAU,EAAE,MAAM,IAAI,SAAS;YAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI;YAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
import { startShell } from '../lib/shell.js';
|
|
3
|
+
export default class Shell extends Command {
|
|
4
|
+
static summary = 'Avvia la shell interattiva di Orbit CLI';
|
|
5
|
+
static description = 'Apre un ambiente interattivo con menu navigabili per gestire sessioni, report e interventi.';
|
|
6
|
+
static args = {};
|
|
7
|
+
static flags = {};
|
|
8
|
+
async run() {
|
|
9
|
+
await startShell(this.config.version);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/commands/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,MAAM,CAAC,OAAO,GAAG,yCAAyC,CAAC;IAC3D,MAAM,CAAC,WAAW,GAAG,6FAA6F,CAAC;IAEnH,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;IAElB,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC"}
|
package/dist/commands/status.js
CHANGED
|
@@ -2,55 +2,92 @@ import { Command } from '@oclif/core';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { loadConfig } from '../lib/config.js';
|
|
4
4
|
import { OrbitClient } from '../lib/client.js';
|
|
5
|
+
import { loadSiteLink } from '../lib/site.js';
|
|
6
|
+
import { loadActiveSession } from '../lib/session.js';
|
|
7
|
+
import { banner, section, kv, warn, info, hint, separator } from '../lib/ui.js';
|
|
5
8
|
export default class Status extends Command {
|
|
6
9
|
static summary = 'Mostra lo stato corrente: sito, sessione, token';
|
|
7
10
|
static examples = ['<%= config.bin %> status'];
|
|
8
11
|
async run() {
|
|
12
|
+
this.log(banner(this.config.version));
|
|
9
13
|
const config = await loadConfig();
|
|
10
|
-
this.log('');
|
|
11
|
-
this.log(chalk.bold(`Orbit CLI v${this.config.version}`));
|
|
12
|
-
this.log('');
|
|
13
|
-
// Token info
|
|
14
14
|
const defaultSite = config.default_site;
|
|
15
15
|
const tokenEntry = defaultSite ? config.tokens[defaultSite] : undefined;
|
|
16
|
+
// Auth section
|
|
17
|
+
this.log(section('Autenticazione'));
|
|
16
18
|
if (!tokenEntry) {
|
|
17
|
-
this.log(
|
|
18
|
-
this.log(
|
|
19
|
+
this.log(warn('Nessun token configurato'));
|
|
20
|
+
this.log(hint('orbit login --token <token>'));
|
|
21
|
+
this.log('');
|
|
19
22
|
return;
|
|
20
23
|
}
|
|
21
24
|
const maskedToken = `${tokenEntry.token.slice(0, 15)}...${tokenEntry.token.slice(-4)}`;
|
|
22
|
-
// Validate connection
|
|
23
25
|
const client = new OrbitClient(tokenEntry.token, config.api_url);
|
|
24
26
|
const validation = await client.validateToken();
|
|
25
|
-
this.log(
|
|
26
|
-
this.log(
|
|
27
|
-
|
|
27
|
+
this.log(kv('Token', `${maskedToken} ${validation.valid ? chalk.green('valido') : chalk.red('non valido')}`));
|
|
28
|
+
this.log(kv('API', `${config.api_url} ${validation.valid ? chalk.green('ok') : chalk.red('errore')}`));
|
|
29
|
+
// Site section
|
|
30
|
+
this.log(section('Sito'));
|
|
31
|
+
const siteLink = await loadSiteLink(process.cwd());
|
|
32
|
+
if (siteLink) {
|
|
33
|
+
this.log(kv('Site ID', siteLink.orbit_site_id));
|
|
34
|
+
this.log(kv('Piattaforma', siteLink.platform));
|
|
35
|
+
if (siteLink.final_url)
|
|
36
|
+
this.log(kv('URL', siteLink.final_url));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.log(info('Nessun sito collegato in questa directory'));
|
|
40
|
+
this.log(hint('orbit link --site <site_id>'));
|
|
41
|
+
}
|
|
42
|
+
// Session section
|
|
43
|
+
this.log(section('Sessione'));
|
|
44
|
+
if (siteLink) {
|
|
45
|
+
const session = await loadActiveSession(siteLink.orbit_site_id);
|
|
46
|
+
if (session) {
|
|
47
|
+
const elapsed = Math.round((Date.now() - new Date(session.started_at).getTime()) / 60_000);
|
|
48
|
+
this.log(kv('Stato', chalk.green('attiva')));
|
|
49
|
+
this.log(kv('ID', session.id));
|
|
50
|
+
this.log(kv('Durata', `${elapsed} min`));
|
|
51
|
+
if (session.git_branch)
|
|
52
|
+
this.log(kv('Branch', session.git_branch));
|
|
53
|
+
this.log(kv('Note', `${session.notes.length}`));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.log(info('Nessuna sessione attiva'));
|
|
57
|
+
this.log(hint('orbit session start'));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.log(info('Collega un sito per avviare sessioni'));
|
|
62
|
+
}
|
|
63
|
+
// Stats section
|
|
28
64
|
if (validation.valid) {
|
|
29
65
|
try {
|
|
30
66
|
const stats = await client.getStats();
|
|
31
67
|
const total = stats.total_interventions ?? 0;
|
|
32
68
|
const byStatus = stats.by_status ?? {};
|
|
33
|
-
this.log('');
|
|
34
|
-
this.log(
|
|
69
|
+
this.log(section('Interventi'));
|
|
70
|
+
this.log(kv('Totale', String(total)));
|
|
35
71
|
if (total > 0) {
|
|
36
72
|
const parts = [];
|
|
37
73
|
if (byStatus.in_progress)
|
|
38
|
-
parts.push(`${byStatus.in_progress} in corso`);
|
|
74
|
+
parts.push(chalk.yellow(`${byStatus.in_progress} in corso`));
|
|
39
75
|
if (byStatus.completed)
|
|
40
|
-
parts.push(`${byStatus.completed} completati`);
|
|
76
|
+
parts.push(chalk.green(`${byStatus.completed} completati`));
|
|
41
77
|
if (byStatus.scheduled)
|
|
42
|
-
parts.push(`${byStatus.scheduled} pianificati`);
|
|
78
|
+
parts.push(chalk.blue(`${byStatus.scheduled} pianificati`));
|
|
43
79
|
if (parts.length > 0) {
|
|
44
|
-
this.log(
|
|
80
|
+
this.log(kv('Dettaglio', parts.join(chalk.dim(' · '))));
|
|
45
81
|
}
|
|
46
82
|
}
|
|
47
83
|
}
|
|
48
|
-
catch
|
|
49
|
-
|
|
50
|
-
this.log(chalk.dim(` Stats non disponibili: ${msg}`));
|
|
84
|
+
catch {
|
|
85
|
+
// Stats non disponibili
|
|
51
86
|
}
|
|
52
87
|
}
|
|
53
88
|
this.log('');
|
|
89
|
+
this.log(separator());
|
|
90
|
+
this.log('');
|
|
54
91
|
}
|
|
55
92
|
}
|
|
56
93
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|