@calltelemetry/cli 0.13.11 → 0.13.12
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/lib/auto-update.d.ts +19 -0
- package/dist/lib/auto-update.d.ts.map +1 -1
- package/dist/lib/auto-update.js +67 -5
- package/dist/lib/auto-update.js.map +1 -1
- package/dist/lib/migration-018-shell-completion.d.ts +28 -0
- package/dist/lib/migration-018-shell-completion.d.ts.map +1 -0
- package/dist/lib/migration-018-shell-completion.js +143 -0
- package/dist/lib/migration-018-shell-completion.js.map +1 -0
- package/dist/lib/migrations.d.ts.map +1 -1
- package/dist/lib/migrations.js +6 -0
- package/dist/lib/migrations.js.map +1 -1
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/package.json +1 -1
|
@@ -5,13 +5,32 @@ export interface UpdateCliOptions {
|
|
|
5
5
|
version?: string;
|
|
6
6
|
/** Absolute installer URL from the channel document. */
|
|
7
7
|
installerUrl?: string;
|
|
8
|
+
/** Test override: sha256 of the currently installed CLI payload. */
|
|
9
|
+
installedPayloadSha256?: string;
|
|
8
10
|
}
|
|
9
11
|
interface CliChannel {
|
|
10
12
|
version: string;
|
|
11
13
|
installerUrl?: string;
|
|
14
|
+
/** Payload digest published with the channel (full sha256 or 12-char prefix). */
|
|
15
|
+
sha256?: string;
|
|
12
16
|
}
|
|
13
17
|
export declare function fetchLatestCliChannel(): Promise<CliChannel>;
|
|
14
18
|
export declare function fetchLatestCliVersion(): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Read the payload digest stamp the generated installer writes into the
|
|
21
|
+
* release root (`<prefix>/releases/<version>/.payload-sha256`). Walks up from
|
|
22
|
+
* the running dist entry so installer-managed installs resolve their own
|
|
23
|
+
* stamp; returns undefined for npm/dev checkouts or missing/invalid stamps.
|
|
24
|
+
*/
|
|
25
|
+
export declare function readInstalledPayloadHash(distUrl?: string): string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Compare the installed payload digest against the channel digest. The
|
|
28
|
+
* channel may publish a 12-char short digest while the installer stamps the
|
|
29
|
+
* full sha256, so one side being a prefix of the other counts as a match.
|
|
30
|
+
* Returns undefined when either side is unknown — callers must then fall
|
|
31
|
+
* back to version-only behavior instead of forcing a download.
|
|
32
|
+
*/
|
|
33
|
+
export declare function payloadHashesMatch(installed: string | undefined, channel: string | undefined): boolean | undefined;
|
|
15
34
|
export declare function installCliFromGetDomain(opts?: UpdateCliOptions): Promise<void>;
|
|
16
35
|
/**
|
|
17
36
|
* Update the CLI through get.calltelemetry.com. Used for both interactive
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../../src/lib/auto-update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../../src/lib/auto-update.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkCD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,UAAU,CAAC,CAsBjE;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAM7D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,MAAwB,GAAG,MAAM,GAAG,SAAS,CAiB9F;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAMlH;AAED,wBAAsB,uBAAuB,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCxF;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmElG;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E"}
|
package/dist/lib/auto-update.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { execa } from 'execa';
|
|
2
2
|
import { mkdir, rm } from 'node:fs/promises';
|
|
3
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
3
4
|
import { tmpdir } from 'node:os';
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
5
7
|
import { getPaths } from './paths.js';
|
|
6
8
|
import { debug } from './log.js';
|
|
7
9
|
import * as out from '../utils/output.js';
|
|
10
|
+
const PAYLOAD_STAMP_FILE = '.payload-sha256';
|
|
11
|
+
const DIGEST_PATTERN = /^[0-9a-f]{12,64}$/;
|
|
8
12
|
function parseChannel(body) {
|
|
9
13
|
const trimmed = body.trim();
|
|
10
14
|
if (!trimmed)
|
|
@@ -17,6 +21,9 @@ function parseChannel(body) {
|
|
|
17
21
|
return {
|
|
18
22
|
version: parsed.version,
|
|
19
23
|
installerUrl: typeof parsed.installer === 'string' ? parsed.installer : undefined,
|
|
24
|
+
sha256: typeof parsed.sha256 === 'string' && DIGEST_PATTERN.test(parsed.sha256)
|
|
25
|
+
? parsed.sha256.toLowerCase()
|
|
26
|
+
: undefined,
|
|
20
27
|
};
|
|
21
28
|
}
|
|
22
29
|
if (typeof parsed === 'object' && parsed !== null) {
|
|
@@ -44,7 +51,8 @@ export async function fetchLatestCliChannel() {
|
|
|
44
51
|
timeout: 10000,
|
|
45
52
|
});
|
|
46
53
|
const digest = digestBody.trim();
|
|
47
|
-
if (
|
|
54
|
+
if (DIGEST_PATTERN.test(digest)) {
|
|
55
|
+
channel.sha256 = digest.toLowerCase();
|
|
48
56
|
channel.installerUrl = `${ctCliInstallerBaseUrl}/install-${channel.version}-${digest.slice(0, 12)}.sh`;
|
|
49
57
|
}
|
|
50
58
|
}
|
|
@@ -60,6 +68,48 @@ export async function fetchLatestCliVersion() {
|
|
|
60
68
|
});
|
|
61
69
|
return parseChannel(stdout).version;
|
|
62
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Read the payload digest stamp the generated installer writes into the
|
|
73
|
+
* release root (`<prefix>/releases/<version>/.payload-sha256`). Walks up from
|
|
74
|
+
* the running dist entry so installer-managed installs resolve their own
|
|
75
|
+
* stamp; returns undefined for npm/dev checkouts or missing/invalid stamps.
|
|
76
|
+
*/
|
|
77
|
+
export function readInstalledPayloadHash(distUrl = import.meta.url) {
|
|
78
|
+
try {
|
|
79
|
+
let dir = dirname(fileURLToPath(distUrl));
|
|
80
|
+
for (let depth = 0; depth < 6; depth += 1) {
|
|
81
|
+
const stampPath = join(dir, PAYLOAD_STAMP_FILE);
|
|
82
|
+
if (existsSync(stampPath)) {
|
|
83
|
+
const value = readFileSync(stampPath, 'utf8').trim().toLowerCase();
|
|
84
|
+
return DIGEST_PATTERN.test(value) ? value : undefined;
|
|
85
|
+
}
|
|
86
|
+
const parent = dirname(dir);
|
|
87
|
+
if (parent === dir)
|
|
88
|
+
return undefined;
|
|
89
|
+
dir = parent;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Non-file URLs (bundled/eval) or unreadable filesystem: hash unknown.
|
|
94
|
+
}
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Compare the installed payload digest against the channel digest. The
|
|
99
|
+
* channel may publish a 12-char short digest while the installer stamps the
|
|
100
|
+
* full sha256, so one side being a prefix of the other counts as a match.
|
|
101
|
+
* Returns undefined when either side is unknown — callers must then fall
|
|
102
|
+
* back to version-only behavior instead of forcing a download.
|
|
103
|
+
*/
|
|
104
|
+
export function payloadHashesMatch(installed, channel) {
|
|
105
|
+
if (!installed || !channel)
|
|
106
|
+
return undefined;
|
|
107
|
+
const a = installed.toLowerCase();
|
|
108
|
+
const b = channel.toLowerCase();
|
|
109
|
+
if (!DIGEST_PATTERN.test(a) || !DIGEST_PATTERN.test(b))
|
|
110
|
+
return undefined;
|
|
111
|
+
return a.startsWith(b) || b.startsWith(a);
|
|
112
|
+
}
|
|
63
113
|
export async function installCliFromGetDomain(opts = {}) {
|
|
64
114
|
const { silent = false } = opts;
|
|
65
115
|
const channel = opts.version ? undefined : await fetchLatestCliChannel();
|
|
@@ -115,10 +165,12 @@ export async function updateCli(currentVersion, opts = {}) {
|
|
|
115
165
|
let local;
|
|
116
166
|
let latest;
|
|
117
167
|
let installerUrl;
|
|
168
|
+
let channelSha;
|
|
118
169
|
try {
|
|
119
170
|
const channel = await fetchLatestCliChannel();
|
|
120
171
|
latest = channel.version;
|
|
121
172
|
installerUrl = channel.installerUrl;
|
|
173
|
+
channelSha = channel.sha256;
|
|
122
174
|
}
|
|
123
175
|
catch (err) {
|
|
124
176
|
if (!silent) {
|
|
@@ -133,11 +185,21 @@ export async function updateCli(currentVersion, opts = {}) {
|
|
|
133
185
|
}
|
|
134
186
|
// Use currentVersion as the local version (more reliable than npm ls)
|
|
135
187
|
local = currentVersion;
|
|
136
|
-
|
|
137
|
-
|
|
188
|
+
// Skip the download only when BOTH the version and the payload hash are
|
|
189
|
+
// unchanged. A re-cut release published at the same version ships a new
|
|
190
|
+
// digest in the channel document, which forces a re-download even though
|
|
191
|
+
// the version marker did not move. When either digest is unknown (npm
|
|
192
|
+
// installs, legacy mirrors), fall back to version-only behavior.
|
|
193
|
+
const installedSha = opts.installedPayloadSha256 ?? readInstalledPayloadHash();
|
|
194
|
+
const payloadMatch = payloadHashesMatch(installedSha, channelSha);
|
|
195
|
+
if (latest !== 'unknown' && local === latest && payloadMatch !== false) {
|
|
196
|
+
logOk(`CLI is up to date (v${local}${payloadMatch ? `, payload ${channelSha?.slice(0, 12)}` : ''})`);
|
|
138
197
|
return;
|
|
139
198
|
}
|
|
140
|
-
if (latest !== 'unknown') {
|
|
199
|
+
if (latest !== 'unknown' && local === latest && payloadMatch === false) {
|
|
200
|
+
log(`Re-cut release detected for v${latest} (payload ${installedSha?.slice(0, 12)} → ${channelSha?.slice(0, 12)}); reinstalling...`);
|
|
201
|
+
}
|
|
202
|
+
else if (latest !== 'unknown') {
|
|
141
203
|
log(`Updating CLI: ${local ?? 'unknown'} → ${latest}...`);
|
|
142
204
|
}
|
|
143
205
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/lib/auto-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/lib/auto-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 018: Deploy ct shell tab completion (bash/zsh).
|
|
3
|
+
*
|
|
4
|
+
* Older appliances never had completion deployed: the Go CLI's best-effort
|
|
5
|
+
* `ensureShellCompletion` hook (configstatus.EnsureStartupFiles) only writes
|
|
6
|
+
* when the target files are missing, silently no-ops when the caller is not
|
|
7
|
+
* root, and no appliance migration ever tracked the deployment — so an
|
|
8
|
+
* appliance upgraded in place could sit with no `ct <TAB>` completion and no
|
|
9
|
+
* record anywhere that it was missing.
|
|
10
|
+
*
|
|
11
|
+
* This migration deploys and verifies both artifacts, recording the result in
|
|
12
|
+
* ~/.ct/migrations.json:
|
|
13
|
+
* 1. /etc/profile.d/ct-completion.sh — login-shell auto-source hook. This is
|
|
14
|
+
* the PRIMARY loader on the appliance: the OVA does not ship the
|
|
15
|
+
* `bash-completion` package, so /etc/bash_completion.d is not sourced by
|
|
16
|
+
* anything without it.
|
|
17
|
+
* 2. /etc/bash_completion.d/ct — generated by `ct completion bash` (Go CLI
|
|
18
|
+
* command tree), sourced by the bash-completion package when present.
|
|
19
|
+
*
|
|
20
|
+
* Idempotent and self-healing: rewrites an artifact when its content is stale
|
|
21
|
+
* (missing markers / drifted from the current command tree output) rather than
|
|
22
|
+
* only when missing. Writes go through sudo when direct writes are not
|
|
23
|
+
* permitted (the appliance runs ct as the unprivileged `calltelemetry` user
|
|
24
|
+
* with NOPASSWD sudo). CT_TEST_PROFILE_DIR / CT_TEST_BASH_COMPLETION_DIR
|
|
25
|
+
* override the target directories for tests, mirroring the Go hook.
|
|
26
|
+
*/
|
|
27
|
+
export declare function migrateShellCompletion(): Promise<boolean>;
|
|
28
|
+
//# sourceMappingURL=migration-018-shell-completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-018-shell-completion.d.ts","sourceRoot":"","sources":["../../src/lib/migration-018-shell-completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAsFH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAoC/D"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 018: Deploy ct shell tab completion (bash/zsh).
|
|
3
|
+
*
|
|
4
|
+
* Older appliances never had completion deployed: the Go CLI's best-effort
|
|
5
|
+
* `ensureShellCompletion` hook (configstatus.EnsureStartupFiles) only writes
|
|
6
|
+
* when the target files are missing, silently no-ops when the caller is not
|
|
7
|
+
* root, and no appliance migration ever tracked the deployment — so an
|
|
8
|
+
* appliance upgraded in place could sit with no `ct <TAB>` completion and no
|
|
9
|
+
* record anywhere that it was missing.
|
|
10
|
+
*
|
|
11
|
+
* This migration deploys and verifies both artifacts, recording the result in
|
|
12
|
+
* ~/.ct/migrations.json:
|
|
13
|
+
* 1. /etc/profile.d/ct-completion.sh — login-shell auto-source hook. This is
|
|
14
|
+
* the PRIMARY loader on the appliance: the OVA does not ship the
|
|
15
|
+
* `bash-completion` package, so /etc/bash_completion.d is not sourced by
|
|
16
|
+
* anything without it.
|
|
17
|
+
* 2. /etc/bash_completion.d/ct — generated by `ct completion bash` (Go CLI
|
|
18
|
+
* command tree), sourced by the bash-completion package when present.
|
|
19
|
+
*
|
|
20
|
+
* Idempotent and self-healing: rewrites an artifact when its content is stale
|
|
21
|
+
* (missing markers / drifted from the current command tree output) rather than
|
|
22
|
+
* only when missing. Writes go through sudo when direct writes are not
|
|
23
|
+
* permitted (the appliance runs ct as the unprivileged `calltelemetry` user
|
|
24
|
+
* with NOPASSWD sudo). CT_TEST_PROFILE_DIR / CT_TEST_BASH_COMPLETION_DIR
|
|
25
|
+
* override the target directories for tests, mirroring the Go hook.
|
|
26
|
+
*/
|
|
27
|
+
import { readFileSync, writeFileSync, unlinkSync } from 'node:fs';
|
|
28
|
+
import { spawnSync } from 'node:child_process';
|
|
29
|
+
import { basename } from 'node:path';
|
|
30
|
+
const PROFILE_HEADER_MARKER = 'ct-completion.sh — Auto-enable ct CLI tab completion';
|
|
31
|
+
/** Byte-identical to the script the Go CLI writes (clitree.InstallCompletion
|
|
32
|
+
* and configstatus.ensureShellCompletion) so the two deployers never fight. */
|
|
33
|
+
const PROFILE_SCRIPT = `#!/bin/bash
|
|
34
|
+
# ct-completion.sh — Auto-enable ct CLI tab completion
|
|
35
|
+
if command -v ct >/dev/null 2>&1; then
|
|
36
|
+
if [ -n "$BASH_VERSION" ]; then
|
|
37
|
+
if ! complete -p ct >/dev/null 2>&1; then
|
|
38
|
+
source <(ct completion bash 2>/dev/null) 2>/dev/null || true
|
|
39
|
+
fi
|
|
40
|
+
elif [ -n "$ZSH_VERSION" ]; then
|
|
41
|
+
if ! whence -w _ct >/dev/null 2>&1; then
|
|
42
|
+
source <(ct completion zsh 2>/dev/null) 2>/dev/null || true
|
|
43
|
+
fi
|
|
44
|
+
fi
|
|
45
|
+
fi
|
|
46
|
+
`;
|
|
47
|
+
function profileDir() {
|
|
48
|
+
return process.env.CT_TEST_PROFILE_DIR || '/etc/profile.d';
|
|
49
|
+
}
|
|
50
|
+
function bashCompletionDir() {
|
|
51
|
+
return process.env.CT_TEST_BASH_COMPLETION_DIR || '/etc/bash_completion.d';
|
|
52
|
+
}
|
|
53
|
+
function profileTarget() {
|
|
54
|
+
return `${profileDir()}/ct-completion.sh`;
|
|
55
|
+
}
|
|
56
|
+
function bashTarget() {
|
|
57
|
+
return `${bashCompletionDir()}/ct`;
|
|
58
|
+
}
|
|
59
|
+
/** Write via direct writeFileSync, falling back to sudo cp when the direct
|
|
60
|
+
* write is not permitted (non-root caller, root-owned target). */
|
|
61
|
+
function writePrivileged(target, content, mode) {
|
|
62
|
+
try {
|
|
63
|
+
writeFileSync(target, content, { mode });
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Fall through to sudo.
|
|
68
|
+
}
|
|
69
|
+
const tmp = `/tmp/ct-completion-${basename(target)}-${Date.now()}`;
|
|
70
|
+
try {
|
|
71
|
+
writeFileSync(tmp, content, { mode: 0o600 });
|
|
72
|
+
const cp = spawnSync('sudo', ['cp', tmp, target], { stdio: 'pipe' });
|
|
73
|
+
if (cp.status !== 0) {
|
|
74
|
+
throw new Error(`sudo cp to ${target} failed (exit ${cp.status})`);
|
|
75
|
+
}
|
|
76
|
+
spawnSync('sudo', ['chmod', mode.toString(8), target], { stdio: 'pipe' });
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
try {
|
|
80
|
+
unlinkSync(tmp);
|
|
81
|
+
}
|
|
82
|
+
catch { /* ignore */ }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** Current cobra-generated bash completion from the Go CLI on PATH, or null
|
|
86
|
+
* when the binary is absent/failed (legacy appliance, air-gapped shell). */
|
|
87
|
+
function generatedBashCompletion() {
|
|
88
|
+
const probe = spawnSync('ct', ['completion', 'bash'], {
|
|
89
|
+
encoding: 'utf-8',
|
|
90
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
91
|
+
});
|
|
92
|
+
if (probe.status === 0 && probe.stdout && probe.stdout.trim().length > 0) {
|
|
93
|
+
return probe.stdout;
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
/** True when the on-disk profile hook is present and current. */
|
|
98
|
+
function profileScriptCurrent() {
|
|
99
|
+
try {
|
|
100
|
+
const content = readFileSync(profileTarget(), 'utf-8');
|
|
101
|
+
return content.includes(PROFILE_HEADER_MARKER) && content.includes('ct completion bash');
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export async function migrateShellCompletion() {
|
|
108
|
+
let changed = false;
|
|
109
|
+
// 1. Profile auto-source hook — the loader that works without the
|
|
110
|
+
// bash-completion package. Hard-fail (records in migrations.json) when
|
|
111
|
+
// it cannot be deployed; everything else is best-effort.
|
|
112
|
+
if (!profileScriptCurrent()) {
|
|
113
|
+
writePrivileged(profileTarget(), PROFILE_SCRIPT, 0o644);
|
|
114
|
+
if (!profileScriptCurrent()) {
|
|
115
|
+
throw new Error(`failed to deploy ${profileTarget()}`);
|
|
116
|
+
}
|
|
117
|
+
changed = true;
|
|
118
|
+
}
|
|
119
|
+
// 2. Generated system completion — refresh when drifted from the current
|
|
120
|
+
// command tree so upgraded binaries stay consistent.
|
|
121
|
+
const generated = generatedBashCompletion();
|
|
122
|
+
if (generated !== null) {
|
|
123
|
+
let stale = true;
|
|
124
|
+
try {
|
|
125
|
+
stale = readFileSync(bashTarget(), 'utf-8') !== generated;
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
stale = true;
|
|
129
|
+
}
|
|
130
|
+
if (stale) {
|
|
131
|
+
try {
|
|
132
|
+
writePrivileged(bashTarget(), generated, 0o644);
|
|
133
|
+
changed = true;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// bash-completion package is absent on the stock OVA anyway; the
|
|
137
|
+
// profile hook above is the effective loader. Not fatal.
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return changed;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=migration-018-shell-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-018-shell-completion.js","sourceRoot":"","sources":["../../src/lib/migration-018-shell-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;CAC/B;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;CAC/B;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAyBD,eAAO,MAAM,UAAU,EAAE,SAAS,EA2FjC,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,cAAc,CAcnD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAG9D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC1B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA4C/C;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC1B,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwC1E;AAED,wBAAgB,kBAAkB,IAAI,KAAK,CAAC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACpD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAgCD"}
|
package/dist/lib/migrations.js
CHANGED
|
@@ -27,6 +27,7 @@ import { migrateDockerFirewallBackend } from './migration-014-docker-firewall-ba
|
|
|
27
27
|
import { migrateDockerInternalNoProxy } from './migration-015-docker-internal-no-proxy.js';
|
|
28
28
|
import { migrateSeaweedfsRecovery } from './migration-016-seaweedfs-recovery.js';
|
|
29
29
|
import { migrateDefaultOnStorage } from './migration-017-default-on-storage.js';
|
|
30
|
+
import { migrateShellCompletion } from './migration-018-shell-completion.js';
|
|
30
31
|
export const MIGRATIONS = [
|
|
31
32
|
{
|
|
32
33
|
id: '001_cgnat_docker_subnets',
|
|
@@ -113,6 +114,11 @@ export const MIGRATIONS = [
|
|
|
113
114
|
description: 'Default-on SeaweedFS storage profile + S3_ENABLED for alert PDF archival (API-2241)',
|
|
114
115
|
run: migrateDefaultOnStorage,
|
|
115
116
|
},
|
|
117
|
+
{
|
|
118
|
+
id: '018_shell_completion',
|
|
119
|
+
description: 'Deploy ct shell tab completion (profile.d hook + bash completion script)',
|
|
120
|
+
run: migrateShellCompletion,
|
|
121
|
+
},
|
|
116
122
|
];
|
|
117
123
|
export function loadMigrationState() {
|
|
118
124
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAuB7E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAExD,oBAAoB;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/version.d.ts
CHANGED
package/dist/lib/version.js
CHANGED