@calltelemetry/cli 0.3.6 → 0.3.8
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/config.d.ts.map +1 -1
- package/dist/commands/config.js +10 -16
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/offline.d.ts.map +1 -1
- package/dist/commands/offline.js +78 -105
- package/dist/commands/offline.js.map +1 -1
- package/dist/commands/self-update.d.ts +2 -3
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +4 -49
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +25 -82
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +16 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/auto-update.d.ts +15 -5
- package/dist/lib/auto-update.d.ts.map +1 -1
- package/dist/lib/auto-update.js +61 -25
- package/dist/lib/auto-update.js.map +1 -1
- package/dist/lib/bundle.d.ts.map +1 -1
- package/dist/lib/bundle.js +2 -9
- package/dist/lib/bundle.js.map +1 -1
- package/dist/lib/compose.d.ts +4 -0
- package/dist/lib/compose.d.ts.map +1 -1
- package/dist/lib/compose.js +35 -9
- package/dist/lib/compose.js.map +1 -1
- package/dist/lib/ipv6.d.ts +15 -0
- package/dist/lib/ipv6.d.ts.map +1 -0
- package/dist/lib/ipv6.js +36 -0
- package/dist/lib/ipv6.js.map +1 -0
- package/dist/lib/log.d.ts +6 -0
- package/dist/lib/log.d.ts.map +1 -1
- package/dist/lib/log.js +30 -0
- package/dist/lib/log.js.map +1 -1
- package/dist/lib/network.d.ts.map +1 -1
- package/dist/lib/network.js +47 -4
- package/dist/lib/network.js.map +1 -1
- package/dist/lib/offline-steps.d.ts +33 -0
- package/dist/lib/offline-steps.d.ts.map +1 -0
- package/dist/lib/offline-steps.js +350 -0
- package/dist/lib/offline-steps.js.map +1 -0
- package/dist/lib/prefs.d.ts +1 -0
- package/dist/lib/prefs.d.ts.map +1 -1
- package/dist/lib/prefs.js +1 -1
- package/dist/lib/prefs.js.map +1 -1
- package/dist/lib/rpc.d.ts +3 -0
- package/dist/lib/rpc.d.ts.map +1 -1
- package/dist/lib/rpc.js +26 -4
- package/dist/lib/rpc.js.map +1 -1
- package/dist/lib/services.d.ts +5 -0
- package/dist/lib/services.d.ts.map +1 -1
- package/dist/lib/services.js +24 -0
- package/dist/lib/services.js.map +1 -1
- package/dist/lib/update-steps.d.ts +17 -0
- package/dist/lib/update-steps.d.ts.map +1 -0
- package/dist/lib/update-steps.js +169 -0
- package/dist/lib/update-steps.js.map +1 -0
- package/dist/lib/update.d.ts +2 -0
- package/dist/lib/update.d.ts.map +1 -1
- package/dist/lib/update.js +11 -0
- package/dist/lib/update.js.map +1 -1
- package/dist/ui/components/ErrorBoundary.d.ts +14 -0
- package/dist/ui/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/ui/components/ErrorBoundary.js +19 -0
- package/dist/ui/components/ErrorBoundary.js.map +1 -0
- package/dist/ui/components/ShellOutput.d.ts.map +1 -1
- package/dist/ui/components/ShellOutput.js +8 -5
- package/dist/ui/components/ShellOutput.js.map +1 -1
- package/dist/ui/components/index.d.ts +1 -0
- package/dist/ui/components/index.d.ts.map +1 -1
- package/dist/ui/components/index.js +1 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/views/CertsStatusView.d.ts.map +1 -1
- package/dist/ui/views/CertsStatusView.js +19 -10
- package/dist/ui/views/CertsStatusView.js.map +1 -1
- package/dist/ui/views/DbBackupView.d.ts.map +1 -1
- package/dist/ui/views/DbBackupView.js +4 -2
- package/dist/ui/views/DbBackupView.js.map +1 -1
- package/dist/ui/views/DbStatusView.d.ts.map +1 -1
- package/dist/ui/views/DbStatusView.js +3 -2
- package/dist/ui/views/DbStatusView.js.map +1 -1
- package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -1
- package/dist/ui/views/DiagDatabaseView.js +12 -10
- package/dist/ui/views/DiagDatabaseView.js.map +1 -1
- package/dist/ui/views/DiagNetworkView.d.ts.map +1 -1
- package/dist/ui/views/DiagNetworkView.js +23 -14
- package/dist/ui/views/DiagNetworkView.js.map +1 -1
- package/dist/ui/views/DiagServiceView.d.ts.map +1 -1
- package/dist/ui/views/DiagServiceView.js +6 -5
- package/dist/ui/views/DiagServiceView.js.map +1 -1
- package/dist/ui/views/DockerStatusView.d.ts.map +1 -1
- package/dist/ui/views/DockerStatusView.js +5 -4
- package/dist/ui/views/DockerStatusView.js.map +1 -1
- package/dist/ui/views/MainMenu.d.ts.map +1 -1
- package/dist/ui/views/MainMenu.js +50 -4
- package/dist/ui/views/MainMenu.js.map +1 -1
- package/dist/ui/views/MigrateRunView.js +1 -1
- package/dist/ui/views/MigrateRunView.js.map +1 -1
- package/dist/ui/views/MigrateWatchView.d.ts.map +1 -1
- package/dist/ui/views/MigrateWatchView.js +2 -2
- package/dist/ui/views/MigrateWatchView.js.map +1 -1
- package/dist/ui/views/OfflineApplyView.d.ts +6 -0
- package/dist/ui/views/OfflineApplyView.d.ts.map +1 -0
- package/dist/ui/views/OfflineApplyView.js +109 -0
- package/dist/ui/views/OfflineApplyView.js.map +1 -0
- package/dist/ui/views/OfflineDownloadView.d.ts +6 -0
- package/dist/ui/views/OfflineDownloadView.d.ts.map +1 -0
- package/dist/ui/views/OfflineDownloadView.js +67 -0
- package/dist/ui/views/OfflineDownloadView.js.map +1 -0
- package/dist/ui/views/OfflineFetchView.d.ts +6 -0
- package/dist/ui/views/OfflineFetchView.d.ts.map +1 -0
- package/dist/ui/views/OfflineFetchView.js +64 -0
- package/dist/ui/views/OfflineFetchView.js.map +1 -0
- package/dist/ui/views/OfflineInspectView.d.ts +6 -0
- package/dist/ui/views/OfflineInspectView.d.ts.map +1 -0
- package/dist/ui/views/OfflineInspectView.js +65 -0
- package/dist/ui/views/OfflineInspectView.js.map +1 -0
- package/dist/ui/views/OfflineListView.d.ts.map +1 -1
- package/dist/ui/views/OfflineListView.js +2 -6
- package/dist/ui/views/OfflineListView.js.map +1 -1
- package/dist/ui/views/SettingsView.d.ts +6 -0
- package/dist/ui/views/SettingsView.d.ts.map +1 -0
- package/dist/ui/views/SettingsView.js +68 -0
- package/dist/ui/views/SettingsView.js.map +1 -0
- package/dist/ui/views/UpdateView.d.ts.map +1 -1
- package/dist/ui/views/UpdateView.js +20 -134
- package/dist/ui/views/UpdateView.js.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA0LrD"}
|
package/dist/commands/config.js
CHANGED
|
@@ -11,6 +11,8 @@ import { getSecrets } from '../lib/secrets.js';
|
|
|
11
11
|
import { CertsStatusView } from '../ui/views/CertsStatusView.js';
|
|
12
12
|
import { confirm } from '../utils/prompt.js';
|
|
13
13
|
import * as out from '../utils/output.js';
|
|
14
|
+
import { enableIpv6, disableIpv6, getIpv6Status } from '../lib/ipv6.js';
|
|
15
|
+
import { getPrefs, savePrefs } from '../lib/prefs.js';
|
|
14
16
|
function getLoggingLevel() {
|
|
15
17
|
const { composeFile } = getPaths();
|
|
16
18
|
if (!existsSync(composeFile))
|
|
@@ -19,13 +21,6 @@ function getLoggingLevel() {
|
|
|
19
21
|
const match = content.match(/LOGGING_LEVEL=(\w+)/);
|
|
20
22
|
return match ? match[1] : 'warning';
|
|
21
23
|
}
|
|
22
|
-
function getIpv6Status() {
|
|
23
|
-
const { composeFile } = getPaths();
|
|
24
|
-
if (!existsSync(composeFile))
|
|
25
|
-
return 'unknown';
|
|
26
|
-
const content = readFileSync(composeFile, 'utf-8');
|
|
27
|
-
return content.includes('EXTERNAL_IP=$DEFAULT_IPV6') ? 'enabled' : 'disabled';
|
|
28
|
-
}
|
|
29
24
|
export function registerConfigCommand(program) {
|
|
30
25
|
// Logging
|
|
31
26
|
program
|
|
@@ -69,23 +64,22 @@ export function registerConfigCommand(program) {
|
|
|
69
64
|
console.log('Usage: ct ipv6 <enable|disable>');
|
|
70
65
|
return;
|
|
71
66
|
}
|
|
72
|
-
const { composeFile } = getPaths();
|
|
73
|
-
let content = readFileSync(composeFile, 'utf-8');
|
|
74
67
|
if (action === 'enable') {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
await enableIpv6();
|
|
69
|
+
const prefs = getPrefs();
|
|
70
|
+
savePrefs({ ...prefs, ipv6: true });
|
|
71
|
+
console.log('IPv6 enabled (preference saved).');
|
|
78
72
|
}
|
|
79
73
|
else if (action === 'disable') {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
await disableIpv6();
|
|
75
|
+
const prefs = getPrefs();
|
|
76
|
+
savePrefs({ ...prefs, ipv6: false });
|
|
77
|
+
console.log('IPv6 disabled (preference saved).');
|
|
83
78
|
}
|
|
84
79
|
else {
|
|
85
80
|
out.fail(`Invalid action: ${action}. Use enable or disable.`);
|
|
86
81
|
return;
|
|
87
82
|
}
|
|
88
|
-
await writeFileSafe(composeFile, content);
|
|
89
83
|
try {
|
|
90
84
|
await execa('systemctl', ['restart', 'docker-compose-app.service']);
|
|
91
85
|
out.ok('Service restarted');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offline.d.ts","sourceRoot":"","sources":["../../src/commands/offline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"offline.d.ts","sourceRoot":"","sources":["../../src/commands/offline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAiJtD"}
|
package/dist/commands/offline.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { render } from 'ink';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
import { composeUp } from '../lib/compose.js';
|
|
8
|
-
import { getPaths } from '../lib/paths.js';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { runStepsCli } from '../lib/update-steps.js';
|
|
5
|
+
import { fetchSteps, downloadSteps, applySteps, inspectBundle, validateBundle, } from '../lib/offline-steps.js';
|
|
9
6
|
import * as out from '../utils/output.js';
|
|
10
7
|
import { OfflineListView } from '../ui/views/OfflineListView.js';
|
|
11
8
|
export function registerOfflineCommand(program) {
|
|
@@ -15,97 +12,43 @@ export function registerOfflineCommand(program) {
|
|
|
15
12
|
offline.command('fetch <version>')
|
|
16
13
|
.description('Download pre-built config bundle from cloud (fast, no Docker images)')
|
|
17
14
|
.action(async (version) => {
|
|
18
|
-
const { gcsBundleBaseUrl } = getPaths();
|
|
19
|
-
const bundleFile = `calltelemetry-bundle-${version}.tar.gz`;
|
|
20
|
-
const bundleUrl = `${gcsBundleBaseUrl}/${version}/${bundleFile}`;
|
|
21
15
|
out.header('Fetching Pre-built Bundle');
|
|
22
16
|
console.log(`Version: ${version}`);
|
|
23
17
|
console.log();
|
|
24
18
|
try {
|
|
25
|
-
await
|
|
26
|
-
stdout: 'inherit',
|
|
27
|
-
stderr: 'inherit',
|
|
28
|
-
});
|
|
19
|
+
await runStepsCli(fetchSteps(version));
|
|
29
20
|
}
|
|
30
21
|
catch {
|
|
31
|
-
out.errorBox('
|
|
22
|
+
out.errorBox('Fetch failed', [
|
|
32
23
|
`Version ${version} may not exist.`,
|
|
33
24
|
'Check: https://github.com/calltelemetry/calltelemetry/releases',
|
|
34
25
|
]);
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
// Verify checksum if available
|
|
38
|
-
const checksumUrl = `${bundleUrl}.sha256`;
|
|
39
|
-
try {
|
|
40
|
-
await execa('curl', ['-sfL', checksumUrl, '-o', `${bundleFile}.sha256`]);
|
|
41
|
-
await execa('sha256sum', ['-c', `${bundleFile}.sha256`]);
|
|
42
|
-
out.ok('Checksum verified');
|
|
43
|
-
await rm(`${bundleFile}.sha256`, { force: true });
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
out.info('Checksum verification skipped');
|
|
26
|
+
process.exit(1);
|
|
47
27
|
}
|
|
28
|
+
console.log();
|
|
48
29
|
out.successBox('Bundle Downloaded');
|
|
49
|
-
console.log(`File:
|
|
30
|
+
console.log(`File: calltelemetry-bundle-${version}.tar.gz`);
|
|
50
31
|
console.log();
|
|
51
|
-
console.log(`To apply: ct offline apply
|
|
32
|
+
console.log(`To apply: ct offline apply calltelemetry-bundle-${version}.tar.gz`);
|
|
52
33
|
});
|
|
53
34
|
offline.command('download <version>')
|
|
54
35
|
.description('Build full offline bundle with Docker images (slow)')
|
|
55
36
|
.action(async (version) => {
|
|
56
|
-
const { gcsBundleBaseUrl } = getPaths();
|
|
57
|
-
const configBundle = `calltelemetry-bundle-${version}.tar.gz`;
|
|
58
|
-
const bundleDir = `calltelemetry-offline-${version}`;
|
|
59
|
-
const bundleName = `calltelemetry-offline-${version}.tar.gz`;
|
|
60
37
|
out.header('Creating Offline Bundle (with Docker Images)');
|
|
61
38
|
console.log(`Version: ${version}`);
|
|
62
39
|
console.log();
|
|
63
|
-
// Download config bundle
|
|
64
|
-
console.log('Step 1: Downloading config bundle...');
|
|
65
|
-
const bundleUrl = `${gcsBundleBaseUrl}/${version}/${configBundle}`;
|
|
66
40
|
try {
|
|
67
|
-
await
|
|
68
|
-
stdout: 'inherit', stderr: 'inherit',
|
|
69
|
-
});
|
|
41
|
+
await runStepsCli(downloadSteps(version));
|
|
70
42
|
}
|
|
71
43
|
catch {
|
|
72
|
-
out.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
await rm(bundleDir, { recursive: true, force: true });
|
|
78
|
-
await mkdir(bundleDir, { recursive: true });
|
|
79
|
-
await execa('tar', ['-xzf', configBundle, '-C', bundleDir, '--strip-components=1']);
|
|
80
|
-
await rm(configBundle, { force: true });
|
|
81
|
-
// Pull images
|
|
82
|
-
console.log('Step 3: Pulling Docker images...');
|
|
83
|
-
const composePath = join(bundleDir, 'docker-compose.yml');
|
|
84
|
-
if (!existsSync(composePath)) {
|
|
85
|
-
out.fail('docker-compose.yml not found in bundle');
|
|
86
|
-
await rm(bundleDir, { recursive: true, force: true });
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
const content = readFileSync(composePath, 'utf-8');
|
|
90
|
-
const images = [];
|
|
91
|
-
for (const line of content.split('\n')) {
|
|
92
|
-
const match = line.match(/image:\s*["']?([^"'\s]+)/);
|
|
93
|
-
if (match)
|
|
94
|
-
images.push(match[1]);
|
|
95
|
-
}
|
|
96
|
-
for (const img of images) {
|
|
97
|
-
console.log(` Pulling: ${img}`);
|
|
98
|
-
await execa('docker', ['pull', img]).catch(() => out.warn(`Failed to pull ${img}`));
|
|
44
|
+
out.errorBox('Download failed', [
|
|
45
|
+
`Failed to build offline bundle for version ${version}.`,
|
|
46
|
+
'Check network connectivity and Docker status.',
|
|
47
|
+
]);
|
|
48
|
+
process.exit(1);
|
|
99
49
|
}
|
|
100
|
-
|
|
101
|
-
console.log(
|
|
102
|
-
await execa('docker', ['save', ...images, '-o', join(bundleDir, 'images.tar')], {
|
|
103
|
-
stdout: 'inherit',
|
|
104
|
-
});
|
|
105
|
-
// Create final bundle
|
|
106
|
-
console.log('Step 5: Creating final bundle archive...');
|
|
107
|
-
await execa('tar', ['-czf', bundleName, bundleDir]);
|
|
108
|
-
await rm(bundleDir, { recursive: true, force: true });
|
|
50
|
+
const bundleName = `calltelemetry-offline-${version}.tar.gz`;
|
|
51
|
+
console.log();
|
|
109
52
|
out.successBox('Offline Bundle Created');
|
|
110
53
|
console.log(`File: ${bundleName}`);
|
|
111
54
|
console.log();
|
|
@@ -117,49 +60,79 @@ export function registerOfflineCommand(program) {
|
|
|
117
60
|
.action(async (bundle) => {
|
|
118
61
|
if (!existsSync(bundle)) {
|
|
119
62
|
out.fail(`Bundle file not found: ${bundle}`);
|
|
120
|
-
|
|
63
|
+
process.exit(1);
|
|
121
64
|
}
|
|
122
|
-
const { installDir, backupDir } = getPaths();
|
|
123
65
|
out.header('Applying Offline Bundle');
|
|
124
66
|
console.log(`Bundle: ${bundle}`);
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
// Load Docker images
|
|
131
|
-
const imagesFile = join(extractDir, 'images.tar');
|
|
132
|
-
if (existsSync(imagesFile)) {
|
|
133
|
-
console.log('Loading Docker images...');
|
|
134
|
-
await execa('docker', ['load', '-i', imagesFile], { stdout: 'inherit' });
|
|
135
|
-
}
|
|
136
|
-
// Install configs
|
|
137
|
-
console.log('Installing configuration files...');
|
|
138
|
-
await mkdir(backupDir, { recursive: true });
|
|
139
|
-
const configFiles = ['docker-compose.yml', 'Caddyfile', 'cli.sh', 'nats.conf'];
|
|
140
|
-
for (const file of configFiles) {
|
|
141
|
-
const src = join(extractDir, file);
|
|
142
|
-
if (existsSync(src)) {
|
|
143
|
-
const dest = join(installDir, file);
|
|
144
|
-
if (existsSync(dest)) {
|
|
145
|
-
await copyFile(dest, join(backupDir, `${file}.backup`));
|
|
146
|
-
}
|
|
147
|
-
await copyFile(src, dest);
|
|
148
|
-
console.log(` - ${file}`);
|
|
149
|
-
}
|
|
67
|
+
// Pre-apply validation & summary
|
|
68
|
+
const validation = await validateBundle(bundle);
|
|
69
|
+
if (!validation.valid) {
|
|
70
|
+
out.fail(validation.error);
|
|
71
|
+
process.exit(1);
|
|
150
72
|
}
|
|
151
|
-
|
|
73
|
+
const info = await inspectBundle(bundle);
|
|
74
|
+
console.log(`Size: ${info.sizeLabel}`);
|
|
75
|
+
if (info.version)
|
|
76
|
+
console.log(`Version: ${info.version}`);
|
|
77
|
+
console.log(`Configs: ${info.configFiles.join(', ') || 'none'}`);
|
|
78
|
+
console.log(`Images: ${info.hasImages ? `${info.imageNames.length} bundled` : 'none (config-only)'}`);
|
|
152
79
|
console.log();
|
|
153
|
-
console.log('Restarting services...');
|
|
154
80
|
try {
|
|
155
|
-
await
|
|
81
|
+
await runStepsCli(applySteps(bundle));
|
|
156
82
|
}
|
|
157
83
|
catch {
|
|
158
|
-
|
|
84
|
+
out.errorBox('Apply failed', [
|
|
85
|
+
'Your previous version is still running.',
|
|
86
|
+
'Check logs with: docker compose logs --tail 50',
|
|
87
|
+
]);
|
|
88
|
+
process.exit(1);
|
|
159
89
|
}
|
|
90
|
+
console.log();
|
|
160
91
|
out.successBox('Offline Bundle Applied');
|
|
161
92
|
console.log('Check status with: ct status');
|
|
162
93
|
});
|
|
94
|
+
offline.command('inspect <bundle>')
|
|
95
|
+
.description('Inspect contents of an offline bundle without applying')
|
|
96
|
+
.action(async (bundle) => {
|
|
97
|
+
if (!existsSync(bundle)) {
|
|
98
|
+
out.fail(`Bundle file not found: ${bundle}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
const validation = await validateBundle(bundle);
|
|
102
|
+
if (!validation.valid) {
|
|
103
|
+
out.fail(validation.error);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
const info = await inspectBundle(bundle);
|
|
107
|
+
out.header('Bundle Contents');
|
|
108
|
+
console.log(`File: ${bundle}`);
|
|
109
|
+
console.log(`Size: ${info.sizeLabel}`);
|
|
110
|
+
if (info.version)
|
|
111
|
+
console.log(`Version: ${info.version}`);
|
|
112
|
+
console.log();
|
|
113
|
+
console.log('Configuration files:');
|
|
114
|
+
if (info.configFiles.length > 0) {
|
|
115
|
+
for (const f of info.configFiles) {
|
|
116
|
+
console.log(` - ${f}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
console.log(' (none found)');
|
|
121
|
+
}
|
|
122
|
+
console.log();
|
|
123
|
+
console.log('Docker images:');
|
|
124
|
+
if (info.hasImages && info.imageNames.length > 0) {
|
|
125
|
+
for (const img of info.imageNames) {
|
|
126
|
+
console.log(` - ${img}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else if (info.hasImages) {
|
|
130
|
+
console.log(' images.tar present (could not parse image names)');
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
console.log(' (none — config-only bundle)');
|
|
134
|
+
}
|
|
135
|
+
});
|
|
163
136
|
offline.command('list')
|
|
164
137
|
.description('List images in current docker-compose.yml')
|
|
165
138
|
.action(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offline.js","sourceRoot":"","sources":["../../src/commands/offline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"offline.js","sourceRoot":"","sources":["../../src/commands/offline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Registered as `ct self-update`. Delegates to the shared updateCli()
|
|
4
|
+
* with interactive (non-silent) output.
|
|
5
5
|
*/
|
|
6
|
-
export declare function selfUpdate(): Promise<void>;
|
|
7
6
|
export declare function registerSelfUpdateCommand(program: Command): void;
|
|
8
7
|
//# sourceMappingURL=self-update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-update.d.ts","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"self-update.d.ts","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,QAOzD"}
|
|
@@ -1,59 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as out from '../utils/output.js';
|
|
1
|
+
import { updateCli } from '../lib/auto-update.js';
|
|
3
2
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* Registered as `ct self-update`. Delegates to the shared updateCli()
|
|
4
|
+
* with interactive (non-silent) output.
|
|
6
5
|
*/
|
|
7
|
-
export async function selfUpdate() {
|
|
8
|
-
console.log('Checking for CLI updates...');
|
|
9
|
-
try {
|
|
10
|
-
const { stdout: installed } = await execa('npm', ['ls', '-g', '@calltelemetry/cli', '--json']);
|
|
11
|
-
const local = JSON.parse(installed)?.dependencies?.['@calltelemetry/cli']?.version;
|
|
12
|
-
const { stdout: registryJson } = await execa('npm', ['view', '@calltelemetry/cli', 'version', '--json']);
|
|
13
|
-
const latest = JSON.parse(registryJson);
|
|
14
|
-
if (local && local === latest) {
|
|
15
|
-
out.ok(`CLI is up to date (v${local})`);
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
console.log(`Updating CLI: ${local ?? 'unknown'} → ${latest}...`);
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
// Can't determine versions — just run the install
|
|
22
|
-
console.log('Installing latest CLI...');
|
|
23
|
-
}
|
|
24
|
-
// Try user-level install first, fallback to sudo
|
|
25
|
-
try {
|
|
26
|
-
await execa('npm', ['install', '-g', '@calltelemetry/cli'], {
|
|
27
|
-
stdout: 'inherit',
|
|
28
|
-
stderr: 'inherit',
|
|
29
|
-
});
|
|
30
|
-
out.ok('CLI updated successfully');
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
const isPermission = err.stderr?.toString().includes('EACCES') || err.exitCode === 243;
|
|
34
|
-
if (!isPermission) {
|
|
35
|
-
out.warn('CLI self-update failed. You can update manually: npm install -g @calltelemetry/cli');
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
// Permission denied — retry with sudo
|
|
39
|
-
try {
|
|
40
|
-
await execa('sudo', ['npm', 'install', '-g', '@calltelemetry/cli'], {
|
|
41
|
-
stdout: 'inherit',
|
|
42
|
-
stderr: 'inherit',
|
|
43
|
-
});
|
|
44
|
-
out.ok('CLI updated successfully');
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
out.warn('CLI self-update failed. You can update manually: sudo npm install -g @calltelemetry/cli');
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
6
|
export function registerSelfUpdateCommand(program) {
|
|
52
7
|
program
|
|
53
8
|
.command('self-update')
|
|
54
9
|
.description('Update the ct CLI tool to the latest version')
|
|
55
10
|
.action(async () => {
|
|
56
|
-
await
|
|
11
|
+
await updateCli(program.version() ?? '0.0.0');
|
|
57
12
|
});
|
|
58
13
|
}
|
|
59
14
|
//# sourceMappingURL=self-update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAkJrD"}
|