@lotics/cli 0.83.0 → 0.86.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/README.md +11 -10
- package/dist/cli.js +39 -28
- package/dist/cli_dispatch.test.js +15 -2
- package/dist/client.d.ts +33 -4
- package/dist/client.js +16 -5
- package/dist/generate_app_workflows_dts.js +11 -2
- package/dist/generate_app_workflows_dts.test.js +3 -3
- package/dist/package_commands.d.ts +36 -34
- package/dist/package_commands.js +143 -44
- package/dist/package_commands.test.js +135 -2
- package/dist/src/cli.js +143 -58
- package/package.json +1 -1
package/dist/src/cli.js
CHANGED
|
@@ -29948,18 +29948,32 @@ var LoticsClient = class {
|
|
|
29948
29948
|
/**
|
|
29949
29949
|
* Preview a release — the dry run behind `lotics app release`. Runs the
|
|
29950
29950
|
* binding-aware extract of the origin (aliases stable through the app's current
|
|
29951
|
-
* binding) and reports the next version number, the new + changed aliases,
|
|
29952
|
-
* any extract findings (an `error` blocks the
|
|
29951
|
+
* binding) and reports the next version number, the new + changed aliases, the
|
|
29952
|
+
* bundled-knowledge delta, and any extract findings (an `error` blocks the
|
|
29953
|
+
* apply). An optional `knowledge` declaration (from the pulled app manifest)
|
|
29954
|
+
* re-declares the bundle set — added/dropped/changed docs surface in the delta;
|
|
29955
|
+
* omitted, the current corpus is reconstructed from the pin. No writes. Admin,
|
|
29953
29956
|
* owning-org only.
|
|
29954
29957
|
*/
|
|
29955
|
-
async previewPackageRelease(app_id) {
|
|
29956
|
-
|
|
29958
|
+
async previewPackageRelease(app_id, opts = {}) {
|
|
29959
|
+
const params = new URLSearchParams();
|
|
29960
|
+
if (opts.knowledge !== void 0 && opts.knowledge.length > 0) {
|
|
29961
|
+
params.set("knowledge", JSON.stringify(opts.knowledge));
|
|
29962
|
+
}
|
|
29963
|
+
const query = params.toString();
|
|
29964
|
+
return this.request(
|
|
29965
|
+
"GET",
|
|
29966
|
+
`/v1/apps/${encodeURIComponent(app_id)}/package-release${query ? `?${query}` : ""}`
|
|
29967
|
+
);
|
|
29957
29968
|
}
|
|
29958
29969
|
/**
|
|
29959
29970
|
* Release — snapshot the origin app into the next registry version. The server
|
|
29960
29971
|
* binding-aware-extracts it, repackages its deployed source + dist as the
|
|
29961
29972
|
* bundle, publishes the next `release`-channel version with the changelog, and
|
|
29962
|
-
* re-pins the origin.
|
|
29973
|
+
* re-pins the origin. An optional `knowledge` declaration re-declares the
|
|
29974
|
+
* bundled-knowledge set (added/dropped/re-snapshotted docs; omitted preserves
|
|
29975
|
+
* the current corpus). Error findings from extract surface as a 409; a
|
|
29976
|
+
* missing/archived declared doc is a 400, a foreign-package doc a 409. Admin,
|
|
29963
29977
|
* owning-org only. Backs `lotics app release --yes`.
|
|
29964
29978
|
*/
|
|
29965
29979
|
async releasePackage(app_id, body) {
|
|
@@ -32085,7 +32099,7 @@ function inputDeclToTsType(decl) {
|
|
|
32085
32099
|
}
|
|
32086
32100
|
return null;
|
|
32087
32101
|
}).filter((v) => v !== null);
|
|
32088
|
-
const inner = literals.length > 0 ? literals.join(" | ") : "string";
|
|
32102
|
+
const inner = literals.length > 0 ? `${literals.join(" | ")} | (string & {})` : "string";
|
|
32089
32103
|
return decl.multi === true ? `ReadonlyArray<${inner}>` : inner;
|
|
32090
32104
|
}
|
|
32091
32105
|
case "date_range":
|
|
@@ -32137,7 +32151,7 @@ function outputDeclToTsType(decl) {
|
|
|
32137
32151
|
const literals = options.map(
|
|
32138
32152
|
(o) => o !== null && typeof o === "object" && "value" in o && typeof o.value === "string" ? JSON.stringify(o.value) : null
|
|
32139
32153
|
).filter((v) => v !== null);
|
|
32140
|
-
const inner = literals.length > 0 ? literals.join(" | ") : "string";
|
|
32154
|
+
const inner = literals.length > 0 ? `${literals.join(" | ")} | (string & {})` : "string";
|
|
32141
32155
|
return decl.multi === true ? `ReadonlyArray<${inner}>` : inner;
|
|
32142
32156
|
}
|
|
32143
32157
|
case "object": {
|
|
@@ -50215,7 +50229,8 @@ async function packageDoctor(client, args) {
|
|
|
50215
50229
|
}
|
|
50216
50230
|
if (health.modified.length === 0) {
|
|
50217
50231
|
console.error(
|
|
50218
|
-
health.is_origin ?
|
|
50232
|
+
health.is_origin ? ` Package artifacts: no changes since the last release.
|
|
50233
|
+
(schema additions aren't fingerprinted \u2014 preview them with: lotics app release ${app_id})` : " Package artifacts: pristine \u2014 no local edits an upgrade would revert."
|
|
50219
50234
|
);
|
|
50220
50235
|
} else if (health.is_origin) {
|
|
50221
50236
|
console.error(
|
|
@@ -50410,6 +50425,56 @@ function formatTemplateResolveHint(entry) {
|
|
|
50410
50425
|
const note = entry.baseline_unknown ? " (can't verify the local edit \u2014 older package version; revert overwrites, keep retains)" : " (a local edit \u2014 revert overwrites it with the package's version; keep retains it)";
|
|
50411
50426
|
return ` --resolve template.${entry.alias}=revert|keep${note}`;
|
|
50412
50427
|
}
|
|
50428
|
+
async function resolveWorkspaceContentInstallation(client, package_id) {
|
|
50429
|
+
const workspaceId = client.getWorkspaceId();
|
|
50430
|
+
if (!workspaceId) {
|
|
50431
|
+
throw new Error(
|
|
50432
|
+
"No workspace selected. Pass --workspace <ws> (or select one) to operate on its content installation."
|
|
50433
|
+
);
|
|
50434
|
+
}
|
|
50435
|
+
const installations = await client.listContentInstallations(workspaceId);
|
|
50436
|
+
const match = installations.find((inst) => inst.package_id === package_id);
|
|
50437
|
+
if (!match) {
|
|
50438
|
+
throw new Error(
|
|
50439
|
+
`Package ${package_id} is not installed in this workspace \u2014 install it first: lotics install ${package_id}`
|
|
50440
|
+
);
|
|
50441
|
+
}
|
|
50442
|
+
return match;
|
|
50443
|
+
}
|
|
50444
|
+
async function redirectContentPciForm(client, pci_id, verb) {
|
|
50445
|
+
console.error(
|
|
50446
|
+
`Content installations are addressed by their PACKAGE id now \u2014 ${pci_id} is a server-internal resource id.`
|
|
50447
|
+
);
|
|
50448
|
+
const workspaceId = client.getWorkspaceId();
|
|
50449
|
+
const match = workspaceId ? (await client.listContentInstallations(workspaceId)).find((inst) => inst.id === pci_id) : void 0;
|
|
50450
|
+
if (match) {
|
|
50451
|
+
console.error(` Run: lotics ${verb} ${match.package_id}`);
|
|
50452
|
+
} else {
|
|
50453
|
+
console.error(" Find the package id: lotics package list-content");
|
|
50454
|
+
console.error(` Then run: lotics ${verb} <package_id>`);
|
|
50455
|
+
}
|
|
50456
|
+
process.exit(1);
|
|
50457
|
+
}
|
|
50458
|
+
async function packageUpgradeByPackageId(client, args) {
|
|
50459
|
+
const pkg2 = await client.getPackage(args.package_id);
|
|
50460
|
+
if (pkg2.kind === "content") {
|
|
50461
|
+
const installation = await resolveWorkspaceContentInstallation(client, args.package_id);
|
|
50462
|
+
await packageUpgradeKnowledge(client, {
|
|
50463
|
+
installation_id: installation.id,
|
|
50464
|
+
package_id: pkg2.id,
|
|
50465
|
+
package_name: pkg2.name,
|
|
50466
|
+
version: args.version,
|
|
50467
|
+
resolve: args.resolve,
|
|
50468
|
+
bind_to: parseBindToFlags(args.bindTo),
|
|
50469
|
+
applyAll: args.applyAll
|
|
50470
|
+
});
|
|
50471
|
+
return;
|
|
50472
|
+
}
|
|
50473
|
+
await packageFleetUpgrade(client, {
|
|
50474
|
+
package_id: args.package_id,
|
|
50475
|
+
...args.version !== void 0 ? { version: args.version } : {}
|
|
50476
|
+
});
|
|
50477
|
+
}
|
|
50413
50478
|
async function packageUpgradeKnowledge(client, args) {
|
|
50414
50479
|
const preview = await client.previewContentInstallationUpgrade(args.installation_id, {
|
|
50415
50480
|
...args.version !== void 0 ? { version: args.version } : {}
|
|
@@ -50422,7 +50487,7 @@ async function packageUpgradeKnowledge(client, args) {
|
|
|
50422
50487
|
...args.version !== void 0 ? { version: args.version } : {},
|
|
50423
50488
|
resolutions: resolutions2
|
|
50424
50489
|
});
|
|
50425
|
-
console.error(`Upgraded ${args.
|
|
50490
|
+
console.error(`Upgraded ${args.package_name} (${args.package_id}) \u2192 v${updated.package_version}.`);
|
|
50426
50491
|
};
|
|
50427
50492
|
if (preview.entries.length === 0 && preview.templates.length === 0) {
|
|
50428
50493
|
if (preview.to_version === preview.from_version) {
|
|
@@ -50494,8 +50559,8 @@ function warnMissingExpectedDocs(missing) {
|
|
|
50494
50559
|
}
|
|
50495
50560
|
async function packageInstall(client, args) {
|
|
50496
50561
|
const pkg2 = await client.getPackage(args.package_id);
|
|
50497
|
-
const
|
|
50498
|
-
console.error(`Installing ${pkg2.name} \u2014 ${trustBadge(pkg2)}
|
|
50562
|
+
const kindSuffix = pkg2.kind === "content" ? " (content \u2014 docs/templates, no app)" : "";
|
|
50563
|
+
console.error(`Installing ${pkg2.name} \u2014 ${trustBadge(pkg2)}${kindSuffix}...`);
|
|
50499
50564
|
const result = await client.installPackage(args.package_id, {
|
|
50500
50565
|
...args.version !== void 0 ? { version: args.version } : {},
|
|
50501
50566
|
...args.bind_to && Object.keys(args.bind_to).length > 0 ? { bind_to: args.bind_to } : {},
|
|
@@ -50506,7 +50571,7 @@ async function packageInstall(client, args) {
|
|
|
50506
50571
|
const docs = installation.binding.knowledge;
|
|
50507
50572
|
const templates = installation.binding.templates;
|
|
50508
50573
|
console.error(
|
|
50509
|
-
`Installed ${pkg2.name} v${installation.package_version}
|
|
50574
|
+
`Installed ${pkg2.name} v${installation.package_version} (workspace ${installation.workspace_id}).`
|
|
50510
50575
|
);
|
|
50511
50576
|
const docAliases = Object.keys(docs);
|
|
50512
50577
|
if (docAliases.length > 0) {
|
|
@@ -50521,8 +50586,8 @@ async function packageInstall(client, args) {
|
|
|
50521
50586
|
);
|
|
50522
50587
|
}
|
|
50523
50588
|
warnMissingExpectedDocs(warnings.missing_expected_docs);
|
|
50524
|
-
console.error(` Upgrade later: lotics upgrade ${
|
|
50525
|
-
console.error(` Uninstall: lotics uninstall ${
|
|
50589
|
+
console.error(` Upgrade later: lotics upgrade ${args.package_id}`);
|
|
50590
|
+
console.error(` Uninstall: lotics uninstall ${args.package_id} [--keep-content]`);
|
|
50526
50591
|
return;
|
|
50527
50592
|
}
|
|
50528
50593
|
const { app, knowledge_warnings } = result;
|
|
@@ -50535,22 +50600,29 @@ async function packageInstall(client, args) {
|
|
|
50535
50600
|
console.error(` Health / uninstall: lotics package doctor ${app.id} \xB7 lotics uninstall ${app.id} [--archive-tables]`);
|
|
50536
50601
|
}
|
|
50537
50602
|
async function packageUninstall(client, args) {
|
|
50538
|
-
if (args.id.startsWith("
|
|
50603
|
+
if (args.id.startsWith("apg_")) {
|
|
50539
50604
|
if (args.archive_tables) {
|
|
50540
50605
|
throw new Error(
|
|
50541
|
-
"--archive-tables applies only to an app installation (<app_id>). A content
|
|
50606
|
+
"--archive-tables applies only to an app installation (<app_id>). A content package has no scaffolded tables \u2014 use --keep-content to retain its docs/templates."
|
|
50542
50607
|
);
|
|
50543
50608
|
}
|
|
50544
|
-
const
|
|
50609
|
+
const pkg2 = await client.getPackage(args.id);
|
|
50610
|
+
if (pkg2.kind !== "content") {
|
|
50611
|
+
throw new Error(
|
|
50612
|
+
`Package ${args.id} is an app package \u2014 uninstall an app installation by its app id: lotics uninstall <app_id>.`
|
|
50613
|
+
);
|
|
50614
|
+
}
|
|
50615
|
+
const installation = await resolveWorkspaceContentInstallation(client, args.id);
|
|
50616
|
+
const result2 = await client.uninstallContentPackage(installation.id, {
|
|
50545
50617
|
keep_content: args.keep_content
|
|
50546
50618
|
});
|
|
50547
50619
|
if (args.keep_content) {
|
|
50548
50620
|
console.error(
|
|
50549
|
-
`Uninstalled
|
|
50621
|
+
`Uninstalled ${pkg2.name} (${pkg2.id}) \u2014 its docs and templates were kept as ordinary workspace content.`
|
|
50550
50622
|
);
|
|
50551
50623
|
} else {
|
|
50552
50624
|
console.error(
|
|
50553
|
-
`Uninstalled
|
|
50625
|
+
`Uninstalled ${pkg2.name} (${pkg2.id}) \u2014 archived ${result2.archived_doc_ids.length} doc(s) and ${result2.archived_template_ids.length} template(s).`
|
|
50554
50626
|
);
|
|
50555
50627
|
for (const docId of result2.archived_doc_ids) console.error(` ${docId}`);
|
|
50556
50628
|
for (const templateId of result2.archived_template_ids) console.error(` ${templateId}`);
|
|
@@ -50559,7 +50631,7 @@ async function packageUninstall(client, args) {
|
|
|
50559
50631
|
}
|
|
50560
50632
|
if (args.keep_content) {
|
|
50561
50633
|
throw new Error(
|
|
50562
|
-
"--keep-content applies only to a
|
|
50634
|
+
"--keep-content applies only to a content package (apg_). An app installation (<app_id>) uses --archive-tables to also archive its scaffolded tables."
|
|
50563
50635
|
);
|
|
50564
50636
|
}
|
|
50565
50637
|
const app = await client.getApp(args.id);
|
|
@@ -50603,7 +50675,7 @@ async function packageListContent(client) {
|
|
|
50603
50675
|
const updateAvailable = inst.package_registry?.update_available ?? false;
|
|
50604
50676
|
const versionLabel = latest !== void 0 && latest !== inst.package_version ? `v${inst.package_version} \u2192 latest v${latest}` : `v${inst.package_version}`;
|
|
50605
50677
|
console.error(
|
|
50606
|
-
` ${inst.
|
|
50678
|
+
` ${inst.package_id} ${name} ${versionLabel}` + (updateAvailable ? " \u2192 update available" : "")
|
|
50607
50679
|
);
|
|
50608
50680
|
}
|
|
50609
50681
|
}
|
|
@@ -50765,18 +50837,18 @@ Re-run with --yes to publish v1:`);
|
|
|
50765
50837
|
console.error(` lotics app release ${appId} -m "<what changed>"`);
|
|
50766
50838
|
console.error(` Install it elsewhere: lotics install ${result.package_id}`);
|
|
50767
50839
|
}
|
|
50768
|
-
function resolveOriginAppId(projectDir, explicit) {
|
|
50769
|
-
if (explicit !== void 0 && explicit !== ".") return explicit;
|
|
50770
|
-
const local = readLocalAppManifest(projectDir);
|
|
50771
|
-
if (local?.app_id) return local.app_id;
|
|
50772
|
-
throw new Error(
|
|
50773
|
-
"No app id. Run this from a pulled app project (lotics app pull <app_id>), or pass an app id explicitly."
|
|
50774
|
-
);
|
|
50775
|
-
}
|
|
50776
50840
|
async function appRelease(client, args) {
|
|
50777
50841
|
const projectDir = path6.resolve(args.projectDir ?? process.cwd());
|
|
50778
|
-
const
|
|
50779
|
-
const
|
|
50842
|
+
const local = readLocalAppManifest(projectDir);
|
|
50843
|
+
const explicit = args.app_id !== void 0 && args.app_id !== "." ? args.app_id : void 0;
|
|
50844
|
+
const appId = explicit ?? local?.app_id ?? null;
|
|
50845
|
+
if (appId === null) {
|
|
50846
|
+
throw new Error(
|
|
50847
|
+
"No app id. Run this from a pulled app project (lotics app pull <app_id>), or pass an app id explicitly."
|
|
50848
|
+
);
|
|
50849
|
+
}
|
|
50850
|
+
const knowledge = local && local.app_id === appId && local.knowledge.length > 0 ? local.knowledge : void 0;
|
|
50851
|
+
const preview = await client.previewPackageRelease(appId, { knowledge });
|
|
50780
50852
|
const { lines, hasError } = formatExtractReport(preview.findings);
|
|
50781
50853
|
console.error(`Release preview \u2014 ${appId} \u2192 ${preview.package_id} v${preview.version}:`);
|
|
50782
50854
|
if (preview.added_aliases.length > 0) {
|
|
@@ -50785,7 +50857,16 @@ async function appRelease(client, args) {
|
|
|
50785
50857
|
if (preview.changed_artifacts.length > 0) {
|
|
50786
50858
|
console.error(` Changed (${preview.changed_artifacts.length}): ${preview.changed_artifacts.join(", ")}`);
|
|
50787
50859
|
}
|
|
50788
|
-
|
|
50860
|
+
const k = preview.knowledge ?? { added: [], removed: [], changed: [] };
|
|
50861
|
+
if (k.added.length > 0 || k.removed.length > 0 || k.changed.length > 0) {
|
|
50862
|
+
const parts = [
|
|
50863
|
+
k.added.length > 0 ? `+${k.added.join(", ")}` : null,
|
|
50864
|
+
k.removed.length > 0 ? `dropped ${k.removed.join(", ")}` : null,
|
|
50865
|
+
k.changed.length > 0 ? `changed ${k.changed.join(", ")}` : null
|
|
50866
|
+
].filter((p) => p !== null);
|
|
50867
|
+
console.error(` Knowledge: ${parts.join("; ")}`);
|
|
50868
|
+
}
|
|
50869
|
+
if (preview.added_aliases.length === 0 && preview.changed_artifacts.length === 0 && k.added.length === 0 && k.removed.length === 0 && k.changed.length === 0) {
|
|
50789
50870
|
console.error(" No contract changes since the current version (a fresh code/dist snapshot still ships).");
|
|
50790
50871
|
}
|
|
50791
50872
|
if (lines.length > 0) {
|
|
@@ -50804,7 +50885,7 @@ Re-run with --yes to publish v${preview.version}:`);
|
|
|
50804
50885
|
process.exitCode = 1;
|
|
50805
50886
|
return;
|
|
50806
50887
|
}
|
|
50807
|
-
const result = await client.releasePackage(appId, { changelog: args.changelog });
|
|
50888
|
+
const result = await client.releasePackage(appId, { changelog: args.changelog, knowledge });
|
|
50808
50889
|
console.error(`Released ${result.package_id} v${result.version}.`);
|
|
50809
50890
|
console.error(` The origin was re-pinned to v${result.version} \u2014 verify: lotics package doctor ${appId}`);
|
|
50810
50891
|
}
|
|
@@ -67712,18 +67793,19 @@ COMMANDS
|
|
|
67712
67793
|
Install a package (app: scaffolds/deploys/materializes,
|
|
67713
67794
|
--config sets its knobs; content: installs the doc corpus,
|
|
67714
67795
|
--bind-to consents to adopt a same-named doc on a collision)
|
|
67715
|
-
lotics uninstall <app_id|
|
|
67796
|
+
lotics uninstall <app_id|package_id> [--archive-tables] [--keep-content]
|
|
67716
67797
|
Uninstall \u2014 dispatched by id. App (app_id): archives
|
|
67717
67798
|
artifacts (+ --archive-tables also archives scaffolded
|
|
67718
|
-
tables). Content (
|
|
67719
|
-
unless --keep-content
|
|
67720
|
-
lotics upgrade <app_id|
|
|
67799
|
+
tables). Content package (apg_): archives its package-bound
|
|
67800
|
+
docs unless --keep-content
|
|
67801
|
+
lotics upgrade <app_id|package_id> [--version N] [--resolve <key>=... ] [--bind-to ...] [--apply-all]
|
|
67721
67802
|
Preview-then-apply an upgrade, dispatched by id. App
|
|
67722
67803
|
(app_id): refuses while any drift/modified/bundled-knowledge
|
|
67723
|
-
finding lacks a --resolve.
|
|
67724
|
-
|
|
67725
|
-
|
|
67726
|
-
|
|
67804
|
+
finding lacks a --resolve. Package (apg_): a CONTENT package
|
|
67805
|
+
upgrades THIS workspace's install (--resolve
|
|
67806
|
+
<alias>=apply|keep|archive|recreate|unbind); an APP package
|
|
67807
|
+
FLEET-upgrades every installation across your org (clean
|
|
67808
|
+
apply, findings skip). --apply-all accepts the package's version
|
|
67727
67809
|
lotics package doctor [app_id] Installation health: version pin vs latest, binding
|
|
67728
67810
|
drift, locally modified core, knowledge drift/edits
|
|
67729
67811
|
(exit 1 on findings)
|
|
@@ -67733,7 +67815,8 @@ COMMANDS
|
|
|
67733
67815
|
(re-deploys the pinned source as a bespoke app)
|
|
67734
67816
|
lotics package show <package_id> Registry metadata + version history
|
|
67735
67817
|
lotics package list-content List the workspace's content installations
|
|
67736
|
-
(standalone content installs) \u2014
|
|
67818
|
+
(standalone content installs) \u2014 each row leads with
|
|
67819
|
+
the package id for upgrade/uninstall
|
|
67737
67820
|
lotics package yank <package_id> <version> [--undo]
|
|
67738
67821
|
Refuse new installs/upgrades of a broken published
|
|
67739
67822
|
version (pinned installations keep running)
|
|
@@ -68250,8 +68333,8 @@ async function main() {
|
|
|
68250
68333
|
console.error("Usage (low-traffic consumer / registry ops \u2014 author verbs live on `lotics app`):");
|
|
68251
68334
|
console.error(" The high-traffic consumer verbs are top-level:");
|
|
68252
68335
|
console.error(" lotics install <package_id> [--version N] [--bind-to <alias>=<kdc_id>] [--config key=value ...] Install a package (app or content)");
|
|
68253
|
-
console.error(" lotics uninstall <app_id|
|
|
68254
|
-
console.error(" lotics upgrade <app_id|
|
|
68336
|
+
console.error(" lotics uninstall <app_id|package_id> [--archive-tables] [--keep-content] Uninstall \u2014 dispatched by id (app vs content)");
|
|
68337
|
+
console.error(" lotics upgrade <app_id|package_id> [--version N] [--resolve <key>=... ] [--bind-to ...] [--apply-all] Upgrade \u2014 app install / content install / whole app fleet (apg_)");
|
|
68255
68338
|
console.error(" lotics package doctor [app_id] Health: version pin vs latest + binding/knowledge drift");
|
|
68256
68339
|
console.error(" lotics package config <app_id> [--set key=value ...] Show or edit an installation's config knobs");
|
|
68257
68340
|
console.error(" lotics package eject <app_id> Sever an installation's package link");
|
|
@@ -68429,12 +68512,16 @@ Available workspaces:`);
|
|
|
68429
68512
|
if (command === "uninstall") {
|
|
68430
68513
|
const id = subcommand;
|
|
68431
68514
|
if (!id) {
|
|
68432
|
-
console.error("Usage: lotics uninstall <app_id|
|
|
68515
|
+
console.error("Usage: lotics uninstall <app_id|package_id> [--archive-tables] [--keep-content]");
|
|
68433
68516
|
console.error(
|
|
68434
|
-
"Dispatched by id: an app installation (app_id; --archive-tables to also archive its scaffolded tables) or a
|
|
68517
|
+
"Dispatched by id: an app installation (app_id; --archive-tables to also archive its scaffolded tables) or a content package (apg_ id from `lotics install` / lotics package list-content; --keep-content to retain its docs)."
|
|
68435
68518
|
);
|
|
68436
68519
|
process.exit(1);
|
|
68437
68520
|
}
|
|
68521
|
+
if (id.startsWith("pci_")) {
|
|
68522
|
+
await redirectContentPciForm(client, id, "uninstall");
|
|
68523
|
+
return;
|
|
68524
|
+
}
|
|
68438
68525
|
await packageUninstall(client, {
|
|
68439
68526
|
id,
|
|
68440
68527
|
keep_content: flags.keepContent,
|
|
@@ -68446,10 +68533,10 @@ Available workspaces:`);
|
|
|
68446
68533
|
const target = subcommand;
|
|
68447
68534
|
if (!target) {
|
|
68448
68535
|
console.error(
|
|
68449
|
-
"Usage: lotics upgrade <app_id |
|
|
68536
|
+
"Usage: lotics upgrade <app_id | package_id> [--version N] [--resolve <key>=... ...] [--bind-to ...] [--apply-all]"
|
|
68450
68537
|
);
|
|
68451
68538
|
console.error(
|
|
68452
|
-
"Dispatched by id: an app installation (app_id), a
|
|
68539
|
+
"Dispatched by id: an app installation (app_id), or a package id (apg_) \u2014 a CONTENT package upgrades this workspace's install; an APP package fleet-upgrades every installation across your org."
|
|
68453
68540
|
);
|
|
68454
68541
|
process.exit(1);
|
|
68455
68542
|
}
|
|
@@ -68461,16 +68548,16 @@ Available workspaces:`);
|
|
|
68461
68548
|
process.exit(1);
|
|
68462
68549
|
}
|
|
68463
68550
|
}
|
|
68464
|
-
if (target.startsWith("
|
|
68465
|
-
await
|
|
68551
|
+
if (target.startsWith("pci_")) {
|
|
68552
|
+
await redirectContentPciForm(client, target, "upgrade");
|
|
68466
68553
|
return;
|
|
68467
68554
|
}
|
|
68468
|
-
if (target.startsWith("
|
|
68469
|
-
await
|
|
68470
|
-
|
|
68555
|
+
if (target.startsWith("apg_")) {
|
|
68556
|
+
await packageUpgradeByPackageId(client, {
|
|
68557
|
+
package_id: target,
|
|
68471
68558
|
version: version2,
|
|
68472
68559
|
resolve: flags.resolve,
|
|
68473
|
-
|
|
68560
|
+
bindTo: flags.bindTo,
|
|
68474
68561
|
applyAll: flags.applyAll
|
|
68475
68562
|
});
|
|
68476
68563
|
return;
|
|
@@ -68541,8 +68628,8 @@ Available workspaces:`);
|
|
|
68541
68628
|
}
|
|
68542
68629
|
const movedVerbs = {
|
|
68543
68630
|
install: "lotics install <package_id>",
|
|
68544
|
-
uninstall: "lotics uninstall <app_id|
|
|
68545
|
-
upgrade: "lotics upgrade <app_id|
|
|
68631
|
+
uninstall: "lotics uninstall <app_id|package_id>",
|
|
68632
|
+
upgrade: "lotics upgrade <app_id|package_id>",
|
|
68546
68633
|
"fleet-upgrade": "lotics upgrade <package_id>"
|
|
68547
68634
|
};
|
|
68548
68635
|
if (subcommand !== void 0 && subcommand in movedVerbs) {
|
|
@@ -68829,8 +68916,6 @@ ${JSON.stringify(info.input_schema, null, 2)}`);
|
|
|
68829
68916
|
console.log(JSON.stringify({ error: result.error }, null, 2));
|
|
68830
68917
|
} else {
|
|
68831
68918
|
console.error(result.error);
|
|
68832
|
-
console.error(`
|
|
68833
|
-
Hint: run "lotics tools ${toolName}" to see the expected input schema.`);
|
|
68834
68919
|
}
|
|
68835
68920
|
process.exit(1);
|
|
68836
68921
|
}
|