@calltelemetry/cli 0.12.11 → 0.12.13
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 +25 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +42 -3
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/db.d.ts +24 -0
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +43 -4
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/go-parity.d.ts +32 -0
- package/dist/commands/go-parity.d.ts.map +1 -0
- package/dist/commands/go-parity.js +359 -0
- package/dist/commands/go-parity.js.map +1 -0
- package/dist/commands/jtapi.d.ts.map +1 -1
- package/dist/commands/jtapi.js +2 -0
- package/dist/commands/jtapi.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +2 -0
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/network.d.ts.map +1 -1
- package/dist/commands/network.js +63 -50
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/offline.d.ts.map +1 -1
- package/dist/commands/offline.js +2 -0
- package/dist/commands/offline.js.map +1 -1
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +2 -0
- package/dist/commands/seed.js.map +1 -1
- package/dist/commands/ship-certs.d.ts +7 -0
- package/dist/commands/ship-certs.d.ts.map +1 -0
- package/dist/commands/ship-certs.js +105 -0
- package/dist/commands/ship-certs.js.map +1 -0
- package/dist/commands/ship-db.d.ts +8 -0
- package/dist/commands/ship-db.d.ts.map +1 -0
- package/dist/commands/ship-db.js +358 -0
- package/dist/commands/ship-db.js.map +1 -0
- package/dist/commands/ship-diag.d.ts +10 -0
- package/dist/commands/ship-diag.d.ts.map +1 -0
- package/dist/commands/ship-diag.js +73 -0
- package/dist/commands/ship-diag.js.map +1 -0
- package/dist/commands/ship-docker.d.ts +6 -0
- package/dist/commands/ship-docker.d.ts.map +1 -0
- package/dist/commands/ship-docker.js +153 -0
- package/dist/commands/ship-docker.js.map +1 -0
- package/dist/commands/ship-ipv6.d.ts +6 -0
- package/dist/commands/ship-ipv6.d.ts.map +1 -0
- package/dist/commands/ship-ipv6.js +59 -0
- package/dist/commands/ship-ipv6.js.map +1 -0
- package/dist/commands/ship-logging.d.ts +7 -0
- package/dist/commands/ship-logging.d.ts.map +1 -0
- package/dist/commands/ship-logging.js +71 -0
- package/dist/commands/ship-logging.js.map +1 -0
- package/dist/commands/ship-migrate.d.ts +6 -0
- package/dist/commands/ship-migrate.d.ts.map +1 -0
- package/dist/commands/ship-migrate.js +152 -0
- package/dist/commands/ship-migrate.js.map +1 -0
- package/dist/commands/ship-offline.d.ts +6 -0
- package/dist/commands/ship-offline.d.ts.map +1 -0
- package/dist/commands/ship-offline.js +110 -0
- package/dist/commands/ship-offline.js.map +1 -0
- package/dist/commands/ship-os-updates.d.ts +6 -0
- package/dist/commands/ship-os-updates.d.ts.map +1 -0
- package/dist/commands/ship-os-updates.js +116 -0
- package/dist/commands/ship-os-updates.js.map +1 -0
- package/dist/commands/ship-postgres.d.ts +6 -0
- package/dist/commands/ship-postgres.d.ts.map +1 -0
- package/dist/commands/ship-postgres.js +84 -0
- package/dist/commands/ship-postgres.js.map +1 -0
- package/dist/commands/ship-rollback.d.ts +7 -0
- package/dist/commands/ship-rollback.d.ts.map +1 -0
- package/dist/commands/ship-rollback.js +63 -0
- package/dist/commands/ship-rollback.js.map +1 -0
- package/dist/commands/ship-services.d.ts +7 -0
- package/dist/commands/ship-services.d.ts.map +1 -0
- package/dist/commands/ship-services.js +127 -0
- package/dist/commands/ship-services.js.map +1 -0
- package/dist/commands/ship-sql-monitor.d.ts +6 -0
- package/dist/commands/ship-sql-monitor.d.ts.map +1 -0
- package/dist/commands/ship-sql-monitor.js +89 -0
- package/dist/commands/ship-sql-monitor.js.map +1 -0
- package/dist/commands/ship-status.d.ts +6 -0
- package/dist/commands/ship-status.d.ts.map +1 -0
- package/dist/commands/ship-status.js +21 -0
- package/dist/commands/ship-status.js.map +1 -0
- package/dist/commands/ship-update.d.ts +31 -0
- package/dist/commands/ship-update.d.ts.map +1 -0
- package/dist/commands/ship-update.js +234 -0
- package/dist/commands/ship-update.js.map +1 -0
- package/dist/commands/ship-users.d.ts +7 -0
- package/dist/commands/ship-users.d.ts.map +1 -0
- package/dist/commands/ship-users.js +118 -0
- package/dist/commands/ship-users.js.map +1 -0
- package/dist/commands/update.d.ts +45 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +74 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/users.d.ts.map +1 -1
- package/dist/commands/users.js +51 -0
- package/dist/commands/users.js.map +1 -1
- package/dist/index.js +3 -72
- package/dist/index.js.map +1 -1
- package/dist/lib/network-apply.d.ts +102 -0
- package/dist/lib/network-apply.d.ts.map +1 -0
- package/dist/lib/network-apply.js +472 -0
- package/dist/lib/network-apply.js.map +1 -0
- package/dist/lib/ops-port.d.ts +205 -0
- package/dist/lib/ops-port.d.ts.map +1 -0
- package/dist/lib/ops-port.js +906 -0
- package/dist/lib/ops-port.js.map +1 -0
- package/dist/lib/public-doc.d.ts +37 -0
- package/dist/lib/public-doc.d.ts.map +1 -0
- package/dist/lib/public-doc.js +27 -0
- package/dist/lib/public-doc.js.map +1 -0
- package/dist/lib/ship-identity.d.ts +9 -0
- package/dist/lib/ship-identity.d.ts.map +1 -0
- package/dist/lib/ship-identity.js +12 -0
- package/dist/lib/ship-identity.js.map +1 -0
- package/dist/lib/ship-logo.d.ts +11 -0
- package/dist/lib/ship-logo.d.ts.map +1 -0
- package/dist/lib/ship-logo.js +17 -0
- package/dist/lib/ship-logo.js.map +1 -0
- package/dist/lib/ship-status.d.ts +21 -0
- package/dist/lib/ship-status.d.ts.map +1 -0
- package/dist/lib/ship-status.js +82 -0
- package/dist/lib/ship-status.js.map +1 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/program.d.ts +22 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +124 -0
- package/dist/program.js.map +1 -0
- package/dist/shell/commands/diag.d.ts.map +1 -1
- package/dist/shell/commands/diag.js +47 -19
- package/dist/shell/commands/diag.js.map +1 -1
- package/dist/shell/commands/ops-mutates.d.ts +16 -0
- package/dist/shell/commands/ops-mutates.d.ts.map +1 -0
- package/dist/shell/commands/ops-mutates.js +62 -0
- package/dist/shell/commands/ops-mutates.js.map +1 -0
- package/dist/shell/commands/registry.d.ts.map +1 -1
- package/dist/shell/commands/registry.js +43 -0
- package/dist/shell/commands/registry.js.map +1 -1
- package/dist/shell/commands/show.d.ts +12 -0
- package/dist/shell/commands/show.d.ts.map +1 -1
- package/dist/shell/commands/show.js +190 -10
- package/dist/shell/commands/show.js.map +1 -1
- package/dist/shell/commands/telemetry.d.ts +11 -0
- package/dist/shell/commands/telemetry.d.ts.map +1 -0
- package/dist/shell/commands/telemetry.js +49 -0
- package/dist/shell/commands/telemetry.js.map +1 -0
- package/dist/shell/network-onboarding.d.ts +7 -4
- package/dist/shell/network-onboarding.d.ts.map +1 -1
- package/dist/shell/network-onboarding.js +22 -38
- package/dist/shell/network-onboarding.js.map +1 -1
- package/dist/ship-entry.d.ts +3 -0
- package/dist/ship-entry.d.ts.map +1 -0
- package/dist/ship-entry.js +122 -0
- package/dist/ship-entry.js.map +1 -0
- package/package.json +9 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-db.js","sourceRoot":"","sources":["../../src/commands/ship-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slim non-Ink diagnostics for the ship binary (showtech via step runner).
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
export declare function runShipShowtech(opts: {
|
|
6
|
+
policyMinutes?: string;
|
|
7
|
+
skipDiskBenchmark?: boolean;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare function registerShipDiagCommand(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=ship-diag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-diag.d.ts","sourceRoot":"","sources":["../../src/commands/ship-diag.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiC9D"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { getPaths } from '../lib/paths.js';
|
|
3
|
+
import { showtechSteps } from '../lib/showtech-steps.js';
|
|
4
|
+
import { runStepsCli } from '../lib/update-steps.js';
|
|
5
|
+
import * as out from '../utils/output.js';
|
|
6
|
+
function timestamp() {
|
|
7
|
+
return new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
8
|
+
}
|
|
9
|
+
export async function runShipShowtech(opts) {
|
|
10
|
+
const { installDir } = getPaths();
|
|
11
|
+
const bundleDir = join(installDir, `ct-showtech-${timestamp()}`);
|
|
12
|
+
const policyMinutes = opts.policyMinutes ? parseInt(opts.policyMinutes, 10) : undefined;
|
|
13
|
+
if (opts.policyMinutes && (policyMinutes === undefined || Number.isNaN(policyMinutes))) {
|
|
14
|
+
out.fail('--policy-minutes must be a number');
|
|
15
|
+
process.exitCode = 1;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
console.log('Collecting show-tech support bundle...');
|
|
19
|
+
console.log(`Bundle dir: ${bundleDir}`);
|
|
20
|
+
console.log();
|
|
21
|
+
const steps = showtechSteps(bundleDir, {
|
|
22
|
+
policyMinutes: policyMinutes !== undefined && !Number.isNaN(policyMinutes) ? policyMinutes : undefined,
|
|
23
|
+
includeDiskBenchmark: !opts.skipDiskBenchmark,
|
|
24
|
+
});
|
|
25
|
+
// Best-effort collection: log step failures but continue so operators
|
|
26
|
+
// still get a partial bundle (parity with shell debug showtech).
|
|
27
|
+
let failed = 0;
|
|
28
|
+
for (const step of steps) {
|
|
29
|
+
try {
|
|
30
|
+
await runStepsCli([step]);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
failed += 1;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
console.log();
|
|
37
|
+
if (failed > 0) {
|
|
38
|
+
out.warn(`Show-tech finished with ${failed} step failure(s); archive may be partial.`);
|
|
39
|
+
process.exitCode = 1;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
out.ok('Show-tech complete (see archive path above).');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function registerShipDiagCommand(program) {
|
|
46
|
+
const diag = program.command('diag').description('Diagnostics');
|
|
47
|
+
const showtechAction = async (opts) => {
|
|
48
|
+
try {
|
|
49
|
+
await runShipShowtech(opts);
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
out.fail(err?.message ?? String(err));
|
|
53
|
+
process.exitCode = 1;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
diag
|
|
57
|
+
.command('showtech')
|
|
58
|
+
.description('Collect support bundle (logs, config, health) — text step runner')
|
|
59
|
+
.option('--policy-minutes <minutes>', 'Include policy history for last N minutes')
|
|
60
|
+
.option('--skip-disk-benchmark', 'Skip fio disk benchmark in health report')
|
|
61
|
+
.action(showtechAction);
|
|
62
|
+
// Alias: ct showtech
|
|
63
|
+
program
|
|
64
|
+
.command('showtech')
|
|
65
|
+
.description('Collect support bundle (alias for diag showtech)')
|
|
66
|
+
.option('--policy-minutes <minutes>', 'Include policy history for last N minutes')
|
|
67
|
+
.option('--skip-disk-benchmark', 'Skip fio disk benchmark in health report')
|
|
68
|
+
.action(showtechAction);
|
|
69
|
+
diag.action(() => {
|
|
70
|
+
console.log('Usage: ct diag showtech [--policy-minutes N] [--skip-disk-benchmark]');
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=ship-diag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-diag.js","sourceRoot":"","sources":["../../src/commands/ship-diag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-docker.d.ts","sourceRoot":"","sources":["../../src/commands/ship-docker.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwFzC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgEhE"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import * as out from '../utils/output.js';
|
|
3
|
+
async function docker(args, opts) {
|
|
4
|
+
const result = await execa('docker', args, {
|
|
5
|
+
reject: false,
|
|
6
|
+
all: true,
|
|
7
|
+
...(opts?.inherit ? { stdio: 'inherit' } : {}),
|
|
8
|
+
});
|
|
9
|
+
if (opts?.inherit)
|
|
10
|
+
return '';
|
|
11
|
+
if (result.exitCode !== 0) {
|
|
12
|
+
throw new Error((result.stderr || result.stdout || result.all || `docker ${args.join(' ')} failed`).trim());
|
|
13
|
+
}
|
|
14
|
+
return (result.stdout || result.all || '').trim();
|
|
15
|
+
}
|
|
16
|
+
async function printStatus() {
|
|
17
|
+
console.log('Docker status');
|
|
18
|
+
try {
|
|
19
|
+
const info = await docker(['info', '--format', '{{.ServerVersion}}|{{.NCPU}}|{{.MemTotal}}']);
|
|
20
|
+
const [ver, cpus, mem] = info.split('|');
|
|
21
|
+
console.log(` Engine : ${ver || 'unknown'}`);
|
|
22
|
+
console.log(` CPUs : ${cpus || '?'}`);
|
|
23
|
+
console.log(` Mem : ${mem ? `${Math.round(Number(mem) / (1024 ** 3))} GiB` : '?'}`);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
out.warn(`docker info: ${err instanceof Error ? err.message : String(err)}`);
|
|
27
|
+
}
|
|
28
|
+
console.log();
|
|
29
|
+
console.log('Containers (docker ps -a):');
|
|
30
|
+
try {
|
|
31
|
+
const ps = await docker([
|
|
32
|
+
'ps',
|
|
33
|
+
'-a',
|
|
34
|
+
'--format',
|
|
35
|
+
'table {{.Names}}\t{{.Status}}\t{{.Image}}',
|
|
36
|
+
]);
|
|
37
|
+
console.log(ps || ' (none)');
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
41
|
+
process.exitCode = 1;
|
|
42
|
+
}
|
|
43
|
+
console.log();
|
|
44
|
+
console.log('Images (top 15 by size):');
|
|
45
|
+
try {
|
|
46
|
+
const images = await docker([
|
|
47
|
+
'images',
|
|
48
|
+
'--format',
|
|
49
|
+
'table {{.Repository}}:{{.Tag}}\t{{.ID}}\t{{.Size}}',
|
|
50
|
+
]);
|
|
51
|
+
const lines = images.split('\n');
|
|
52
|
+
console.log(lines.slice(0, 16).join('\n'));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// optional
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function printNetwork() {
|
|
59
|
+
console.log('Docker networks');
|
|
60
|
+
const nets = await docker([
|
|
61
|
+
'network',
|
|
62
|
+
'ls',
|
|
63
|
+
'--format',
|
|
64
|
+
'table {{.Name}}\t{{.Driver}}\t{{.Scope}}',
|
|
65
|
+
]);
|
|
66
|
+
console.log(nets);
|
|
67
|
+
// Inspect compose project network if present
|
|
68
|
+
for (const name of ['calltelemetry_ct', 'calltelemetry_default', 'ct_default']) {
|
|
69
|
+
try {
|
|
70
|
+
const detail = await docker([
|
|
71
|
+
'network',
|
|
72
|
+
'inspect',
|
|
73
|
+
name,
|
|
74
|
+
'--format',
|
|
75
|
+
'{{.Name}} driver={{.Driver}} subnet={{range .IPAM.Config}}{{.Subnet}}{{end}}',
|
|
76
|
+
]);
|
|
77
|
+
console.log();
|
|
78
|
+
console.log(`Inspect ${name}:`);
|
|
79
|
+
console.log(` ${detail}`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// try next
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export function registerShipDockerCommand(program) {
|
|
88
|
+
const dockerCmd = program.command('docker').description('Docker host management');
|
|
89
|
+
dockerCmd
|
|
90
|
+
.command('status')
|
|
91
|
+
.description('Show containers, images, and engine info (default)')
|
|
92
|
+
.action(async () => {
|
|
93
|
+
try {
|
|
94
|
+
await printStatus();
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
98
|
+
process.exitCode = 1;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
dockerCmd
|
|
102
|
+
.command('network')
|
|
103
|
+
.description('List Docker networks (and inspect compose network when present)')
|
|
104
|
+
.action(async () => {
|
|
105
|
+
try {
|
|
106
|
+
await printNetwork();
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
110
|
+
process.exitCode = 1;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
dockerCmd
|
|
114
|
+
.command('prune')
|
|
115
|
+
.description('Prune unused Docker data (containers/images/networks; not volumes by default)')
|
|
116
|
+
.option('-y, --yes', 'Confirm without prompt')
|
|
117
|
+
.option('--volumes', 'Also prune unused volumes (destructive)')
|
|
118
|
+
.action(async (opts) => {
|
|
119
|
+
try {
|
|
120
|
+
if (!opts.yes && process.stdin.isTTY) {
|
|
121
|
+
out.warn('This runs docker system prune -f' + (opts.volumes ? ' --volumes' : ''));
|
|
122
|
+
out.info('Re-run with --yes: ct docker prune --yes');
|
|
123
|
+
process.exitCode = 1;
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (!opts.yes && !process.stdin.isTTY) {
|
|
127
|
+
out.fail('Non-interactive docker prune requires --yes');
|
|
128
|
+
process.exitCode = 1;
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const args = ['system', 'prune', '-f'];
|
|
132
|
+
if (opts.volumes)
|
|
133
|
+
args.push('--volumes');
|
|
134
|
+
console.log(`Running: docker ${args.join(' ')}`);
|
|
135
|
+
await execa('docker', args, { stdio: 'inherit' });
|
|
136
|
+
out.ok('Docker prune complete');
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
140
|
+
process.exitCode = 1;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
dockerCmd.action(async () => {
|
|
144
|
+
try {
|
|
145
|
+
await printStatus();
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
149
|
+
process.exitCode = 1;
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=ship-docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-docker.js","sourceRoot":"","sources":["../../src/commands/ship-docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-ipv6.d.ts","sourceRoot":"","sources":["../../src/commands/ship-ipv6.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmC9D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import { enableIpv6, disableIpv6, getIpv6Status } from '../lib/ipv6.js';
|
|
3
|
+
import { composeUp } from '../lib/compose.js';
|
|
4
|
+
import { getPrefs, savePrefs } from '../lib/prefs.js';
|
|
5
|
+
import * as out from '../utils/output.js';
|
|
6
|
+
async function restartServices() {
|
|
7
|
+
try {
|
|
8
|
+
await execa('systemctl', ['restart', 'docker-compose-app.service']);
|
|
9
|
+
out.ok('Service restarted');
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
try {
|
|
13
|
+
await composeUp(['-d']);
|
|
14
|
+
out.ok('Stack recreated via docker compose up -d');
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
out.warn(`IPv6 changed; restart failed: ${e?.message ?? e}`);
|
|
18
|
+
out.info('Apply with: ct restart');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function registerShipIpv6Command(program) {
|
|
23
|
+
program
|
|
24
|
+
.command('ipv6 [action]')
|
|
25
|
+
.description('Show or toggle IPv6 support (enable|disable)')
|
|
26
|
+
.action(async (action) => {
|
|
27
|
+
if (!action || action === 'status') {
|
|
28
|
+
console.log(`IPv6 Status: ${getIpv6Status()}`);
|
|
29
|
+
console.log();
|
|
30
|
+
console.log('Usage: ct ipv6 <enable|disable>');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
if (action === 'enable') {
|
|
35
|
+
await enableIpv6();
|
|
36
|
+
const prefs = getPrefs();
|
|
37
|
+
savePrefs({ ...prefs, ipv6: true });
|
|
38
|
+
console.log('IPv6 enabled (preference saved).');
|
|
39
|
+
await restartServices();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (action === 'disable') {
|
|
43
|
+
await disableIpv6();
|
|
44
|
+
const prefs = getPrefs();
|
|
45
|
+
savePrefs({ ...prefs, ipv6: false });
|
|
46
|
+
console.log('IPv6 disabled (preference saved).');
|
|
47
|
+
await restartServices();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
out.fail(`Invalid action: ${action}. Use enable or disable.`);
|
|
51
|
+
process.exitCode = 1;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
55
|
+
process.exitCode = 1;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ship-ipv6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-ipv6.js","sourceRoot":"","sources":["../../src/commands/ship-ipv6.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC;QACpE,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACxB,GAAG,CAAC,EAAE,CAAC,0CAA0C,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7D,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,MAAe,EAAE,EAAE;QAChC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,EAAE,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,UAAU,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACzB,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAChD,MAAM,eAAe,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACzB,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBACjD,MAAM,eAAe,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,mBAAmB,MAAM,0BAA0B,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ship (no-Ink) logging level: show or set LOGGING_LEVEL in docker-compose.yml.
|
|
3
|
+
* Argv forms: `ct logging`, `ct logging status`, `ct logging debug|info|warning|error`.
|
|
4
|
+
*/
|
|
5
|
+
import type { Command } from 'commander';
|
|
6
|
+
export declare function registerShipLoggingCommand(program: Command): void;
|
|
7
|
+
//# sourceMappingURL=ship-logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-logging.d.ts","sourceRoot":"","sources":["../../src/commands/ship-logging.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2DzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmBjE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { execa } from 'execa';
|
|
3
|
+
import { writeFileSafe } from '../lib/fs.js';
|
|
4
|
+
import { composeUp } from '../lib/compose.js';
|
|
5
|
+
import { getPaths } from '../lib/paths.js';
|
|
6
|
+
import * as out from '../utils/output.js';
|
|
7
|
+
const VALID_LEVELS = ['debug', 'info', 'warning', 'error'];
|
|
8
|
+
function getLoggingLevel() {
|
|
9
|
+
const { composeFile } = getPaths();
|
|
10
|
+
if (!existsSync(composeFile))
|
|
11
|
+
return 'unknown';
|
|
12
|
+
const content = readFileSync(composeFile, 'utf-8');
|
|
13
|
+
const match = content.match(/LOGGING_LEVEL=(\w+)/);
|
|
14
|
+
return match ? match[1] : 'warning';
|
|
15
|
+
}
|
|
16
|
+
function printStatus() {
|
|
17
|
+
console.log(`Logging Level: ${getLoggingLevel()}`);
|
|
18
|
+
console.log();
|
|
19
|
+
console.log(`Available levels: ${VALID_LEVELS.join(', ')}`);
|
|
20
|
+
console.log('Usage: ct logging <level>');
|
|
21
|
+
}
|
|
22
|
+
async function setLoggingLevel(level) {
|
|
23
|
+
const { composeFile } = getPaths();
|
|
24
|
+
if (!existsSync(composeFile)) {
|
|
25
|
+
out.fail(`docker-compose.yml not found (${composeFile})`);
|
|
26
|
+
process.exitCode = 1;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const content = readFileSync(composeFile, 'utf-8');
|
|
30
|
+
if (!/LOGGING_LEVEL=\w+/.test(content)) {
|
|
31
|
+
out.fail('LOGGING_LEVEL not found in docker-compose.yml');
|
|
32
|
+
process.exitCode = 1;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const updated = content.replace(/LOGGING_LEVEL=\w+/, `LOGGING_LEVEL=${level}`);
|
|
36
|
+
await writeFileSafe(composeFile, updated);
|
|
37
|
+
console.log(`Logging level set to ${level}`);
|
|
38
|
+
try {
|
|
39
|
+
await execa('systemctl', ['restart', 'docker-compose-app.service']);
|
|
40
|
+
out.ok('Service restarted');
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
try {
|
|
44
|
+
await composeUp(['-d']);
|
|
45
|
+
out.ok('Stack recreated via docker compose up -d');
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
out.warn(`Level written; restart failed: ${e?.message ?? e}`);
|
|
49
|
+
out.info('Apply with: ct restart');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export function registerShipLoggingCommand(program) {
|
|
54
|
+
program
|
|
55
|
+
.command('logging [level]')
|
|
56
|
+
.description('Show or set appliance logging level (debug, info, warning, error)')
|
|
57
|
+
.action(async (level) => {
|
|
58
|
+
if (!level || level === 'status') {
|
|
59
|
+
printStatus();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (!VALID_LEVELS.includes(level)) {
|
|
63
|
+
out.fail(`Invalid logging level '${level}'`);
|
|
64
|
+
console.log(`Available levels: ${VALID_LEVELS.join(', ')}`);
|
|
65
|
+
process.exitCode = 1;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
await setLoggingLevel(level);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=ship-logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-logging.js","sourceRoot":"","sources":["../../src/commands/ship-logging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-migrate.d.ts","sourceRoot":"","sources":["../../src/commands/ship-migrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4GzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8DjE"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { composeExec } from '../lib/compose.js';
|
|
2
|
+
import { DB_USER, DB_NAME, PG_ENV } from '../lib/db.js';
|
|
3
|
+
import { rpc } from '../lib/rpc.js';
|
|
4
|
+
import { attachMigrateLegacy } from './go-parity.js';
|
|
5
|
+
import * as out from '../utils/output.js';
|
|
6
|
+
async function psqlTerse(query) {
|
|
7
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-tAc', query], { env: PG_ENV, pipe: true });
|
|
8
|
+
return (result.stdout ?? '').trim();
|
|
9
|
+
}
|
|
10
|
+
async function migrateStatus() {
|
|
11
|
+
const raw = await rpc('Ecto.Migrator.migrations(Cdrcisco.Repo) |> Enum.map(fn {status, version, name} -> "#{status}|#{version}|#{name}" end) |> Enum.join("\\n") |> IO.puts()');
|
|
12
|
+
const lines = raw
|
|
13
|
+
.trim()
|
|
14
|
+
.split('\n')
|
|
15
|
+
.map((l) => l.trim())
|
|
16
|
+
.filter((l) => l.includes('|'));
|
|
17
|
+
if (lines.length === 0) {
|
|
18
|
+
console.log('No migrations found (or web RPC unavailable).');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const upCount = lines.filter((l) => l.startsWith('up')).length;
|
|
22
|
+
const downCount = lines.filter((l) => l.startsWith('down')).length;
|
|
23
|
+
console.log('Migration status');
|
|
24
|
+
console.log(` Applied: ${upCount} Pending: ${downCount}`);
|
|
25
|
+
console.log();
|
|
26
|
+
console.log(' Status Version Name');
|
|
27
|
+
for (const line of lines) {
|
|
28
|
+
const [status, version, ...rest] = line.split('|').map((c) => c.trim());
|
|
29
|
+
const name = rest.join('|');
|
|
30
|
+
console.log(` ${(status ?? '').padEnd(7)} ${(version ?? '').padEnd(18)} ${name}`);
|
|
31
|
+
}
|
|
32
|
+
if (downCount > 0) {
|
|
33
|
+
out.warn(`${downCount} pending — run: ct migrate run`);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
out.ok('All migrations applied');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function migrateRun() {
|
|
40
|
+
console.log('Running pending Ecto migrations...');
|
|
41
|
+
const output = await rpc('Ecto.Migrator.run(Cdrcisco.Repo, :up, all: true) |> inspect() |> IO.puts()');
|
|
42
|
+
if (output.trim())
|
|
43
|
+
console.log(output.trim());
|
|
44
|
+
out.ok('Migrations applied');
|
|
45
|
+
}
|
|
46
|
+
async function migrateHistory() {
|
|
47
|
+
const result = await psqlTerse('SELECT version || \'|\' || coalesce(inserted_at::text, \'\') FROM schema_migrations ORDER BY version DESC LIMIT 20;');
|
|
48
|
+
if (!result) {
|
|
49
|
+
console.log('No migration history in schema_migrations.');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
console.log('Migration history (last 20)');
|
|
53
|
+
console.log(' Version Inserted at');
|
|
54
|
+
for (const line of result.split('\n').filter(Boolean)) {
|
|
55
|
+
const [version, inserted] = line.split('|');
|
|
56
|
+
console.log(` ${(version ?? '').padEnd(18)} ${inserted ?? ''}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function migrateWatch(intervalSec) {
|
|
60
|
+
const ms = Math.max(1, intervalSec) * 1000;
|
|
61
|
+
console.log(`Polling migrations every ${intervalSec}s (Ctrl-C to stop).\n`);
|
|
62
|
+
let running = true;
|
|
63
|
+
const onSigint = () => {
|
|
64
|
+
running = false;
|
|
65
|
+
};
|
|
66
|
+
process.once('SIGINT', onSigint);
|
|
67
|
+
try {
|
|
68
|
+
while (running) {
|
|
69
|
+
try {
|
|
70
|
+
const output = await rpc('ms = Ecto.Migrator.migrations(Cdrcisco.Repo); total = length(ms); applied = Enum.count(ms, fn {s, _, _} -> s == :up end); IO.puts("#{applied}/#{total}")');
|
|
71
|
+
const ts = new Date().toISOString();
|
|
72
|
+
console.log(`${ts} applied ${output.trim()}`);
|
|
73
|
+
if (output.trim().match(/^(\d+)\/\1$/)) {
|
|
74
|
+
out.ok('All migrations applied');
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
out.warn(`Poll failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
80
|
+
}
|
|
81
|
+
if (!running)
|
|
82
|
+
break;
|
|
83
|
+
await new Promise((r) => setTimeout(r, ms));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
process.removeListener('SIGINT', onSigint);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export function registerShipMigrateCommand(program) {
|
|
91
|
+
const migrate = program.command('migrate').description('Database migration commands');
|
|
92
|
+
attachMigrateLegacy(migrate);
|
|
93
|
+
migrate
|
|
94
|
+
.command('status')
|
|
95
|
+
.description('Show Ecto migration status (default)')
|
|
96
|
+
.action(async () => {
|
|
97
|
+
try {
|
|
98
|
+
await migrateStatus();
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
102
|
+
process.exitCode = 1;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
migrate
|
|
106
|
+
.command('run')
|
|
107
|
+
.description('Run pending Ecto migrations')
|
|
108
|
+
.action(async () => {
|
|
109
|
+
try {
|
|
110
|
+
await migrateRun();
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
114
|
+
process.exitCode = 1;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
migrate
|
|
118
|
+
.command('history')
|
|
119
|
+
.description('Show recent schema_migrations rows')
|
|
120
|
+
.action(async () => {
|
|
121
|
+
try {
|
|
122
|
+
await migrateHistory();
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
126
|
+
process.exitCode = 1;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
migrate
|
|
130
|
+
.command('watch')
|
|
131
|
+
.description('Poll migration progress (plain text)')
|
|
132
|
+
.option('-i, --interval <seconds>', 'Refresh interval', '5')
|
|
133
|
+
.action(async (opts) => {
|
|
134
|
+
try {
|
|
135
|
+
await migrateWatch(parseInt(opts.interval ?? '5', 10) || 5);
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
139
|
+
process.exitCode = 1;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
migrate.action(async () => {
|
|
143
|
+
try {
|
|
144
|
+
await migrateStatus();
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
148
|
+
process.exitCode = 1;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=ship-migrate.js.map
|