craftdesk 0.2.0 → 0.4.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/CHANGELOG.md +57 -0
- package/README.md +968 -92
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +303 -7
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/convert.d.ts +8 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +146 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/info.d.ts +8 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +66 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +9 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts +5 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +24 -4
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +72 -7
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.d.ts +8 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +158 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +8 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +51 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/outdated.d.ts +23 -0
- package/dist/commands/outdated.d.ts.map +1 -0
- package/dist/commands/outdated.js +268 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/publish.d.ts +8 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +198 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/remove.d.ts +5 -0
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +52 -11
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +60 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +369 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/whoami.d.ts +8 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +58 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/converters/base-converter.d.ts +89 -0
- package/dist/converters/base-converter.d.ts.map +1 -0
- package/dist/converters/base-converter.js +249 -0
- package/dist/converters/base-converter.js.map +1 -0
- package/dist/converters/continue-converter.d.ts +53 -0
- package/dist/converters/continue-converter.d.ts.map +1 -0
- package/dist/converters/continue-converter.js +243 -0
- package/dist/converters/continue-converter.js.map +1 -0
- package/dist/converters/cursor-converter.d.ts +70 -0
- package/dist/converters/cursor-converter.d.ts.map +1 -0
- package/dist/converters/cursor-converter.js +272 -0
- package/dist/converters/cursor-converter.js.map +1 -0
- package/dist/index.js +35 -4
- package/dist/index.js.map +1 -1
- package/dist/services/config-manager.d.ts +128 -10
- package/dist/services/config-manager.d.ts.map +1 -1
- package/dist/services/config-manager.js +189 -18
- package/dist/services/config-manager.js.map +1 -1
- package/dist/services/converter.d.ts +53 -0
- package/dist/services/converter.d.ts.map +1 -0
- package/dist/services/converter.js +185 -0
- package/dist/services/converter.js.map +1 -0
- package/dist/services/craft-wrapper.d.ts +108 -0
- package/dist/services/craft-wrapper.d.ts.map +1 -0
- package/dist/services/craft-wrapper.js +268 -0
- package/dist/services/craft-wrapper.js.map +1 -0
- package/dist/services/git-resolver.d.ts +9 -3
- package/dist/services/git-resolver.d.ts.map +1 -1
- package/dist/services/git-resolver.js +35 -10
- package/dist/services/git-resolver.js.map +1 -1
- package/dist/services/installer.d.ts +51 -1
- package/dist/services/installer.d.ts.map +1 -1
- package/dist/services/installer.js +245 -14
- package/dist/services/installer.js.map +1 -1
- package/dist/services/plugin-resolver.d.ts +80 -0
- package/dist/services/plugin-resolver.d.ts.map +1 -0
- package/dist/services/plugin-resolver.js +182 -0
- package/dist/services/plugin-resolver.js.map +1 -0
- package/dist/services/registry-client.d.ts +132 -5
- package/dist/services/registry-client.d.ts.map +1 -1
- package/dist/services/registry-client.js +239 -34
- package/dist/services/registry-client.js.map +1 -1
- package/dist/services/settings-manager.d.ts +151 -0
- package/dist/services/settings-manager.d.ts.map +1 -0
- package/dist/services/settings-manager.js +333 -0
- package/dist/services/settings-manager.js.map +1 -0
- package/dist/types/claude-settings.d.ts +155 -0
- package/dist/types/claude-settings.d.ts.map +1 -0
- package/dist/types/claude-settings.js +20 -0
- package/dist/types/claude-settings.js.map +1 -0
- package/dist/types/converter.d.ts +98 -0
- package/dist/types/converter.d.ts.map +1 -0
- package/dist/types/converter.js +6 -0
- package/dist/types/converter.js.map +1 -0
- package/dist/types/craftdesk-json.d.ts +63 -3
- package/dist/types/craftdesk-json.d.ts.map +1 -1
- package/dist/types/craftdesk-lock.d.ts +62 -1
- package/dist/types/craftdesk-lock.d.ts.map +1 -1
- package/dist/utils/crypto.d.ts +23 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +52 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/file-system.d.ts +43 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +45 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +75 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +76 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/version-utils.d.ts +63 -0
- package/dist/utils/version-utils.d.ts.map +1 -0
- package/dist/utils/version-utils.js +130 -0
- package/dist/utils/version-utils.js.map +1 -0
- package/package.json +36 -9
- package/.claude/settings.local.json +0 -17
- package/.github/workflows/ci.yml +0 -94
- package/API.md +0 -414
- package/TESTING.md +0 -263
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -56
- package/dist/commands/config.js.map +0 -1
- package/dist/types/config.d.ts +0 -17
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -3
- package/dist/types/config.js.map +0 -1
- package/docs/DEPENDENCY_RESOLUTION.md +0 -237
- package/examples/craftdesk-all-sources.json +0 -79
- package/examples/craftdesk-git-monorepo.json +0 -41
- package/examples/craftdesk-multi-registry.json +0 -40
- package/examples/craftdesk-with-registries.json +0 -49
- package/examples/simple-craftdesk.json +0 -10
- package/src/commands/add.ts +0 -314
- package/src/commands/init.ts +0 -55
- package/src/commands/install.ts +0 -126
- package/src/commands/list.ts +0 -126
- package/src/commands/remove.ts +0 -82
- package/src/index.ts +0 -56
- package/src/services/config-manager.ts +0 -150
- package/src/services/git-resolver.ts +0 -370
- package/src/services/installer.ts +0 -314
- package/src/services/registry-client.ts +0 -163
- package/src/types/craftdesk-json.ts +0 -53
- package/src/types/craftdesk-lock.ts +0 -38
- package/src/utils/file-system.ts +0 -55
- package/src/utils/logger.ts +0 -82
- package/tests/fixtures/craftdesk-git.json +0 -17
- package/tests/fixtures/craftdesk.json +0 -15
- package/tests/helpers/test-utils.ts +0 -60
- package/tests/integration/init-command.test.ts +0 -70
- package/tests/integration/list-command.test.ts +0 -77
- package/tests/unit/config-manager.test.ts +0 -228
- package/tests/unit/git-resolver.test.ts +0 -303
- package/tests/unit/installer.test.ts +0 -105
- package/tsconfig.json +0 -20
- package/vitest.config.ts +0 -29
package/dist/commands/remove.js
CHANGED
|
@@ -5,15 +5,21 @@ const commander_1 = require("commander");
|
|
|
5
5
|
const file_system_1 = require("../utils/file-system");
|
|
6
6
|
const logger_1 = require("../utils/logger");
|
|
7
7
|
const installer_1 = require("../services/installer");
|
|
8
|
+
/**
|
|
9
|
+
* Creates the remove command for removing a craft dependency from the project.
|
|
10
|
+
*
|
|
11
|
+
* @returns The configured Commander command instance
|
|
12
|
+
*/
|
|
8
13
|
function createRemoveCommand() {
|
|
9
14
|
return new commander_1.Command('remove')
|
|
10
15
|
.description('Remove a dependency')
|
|
11
16
|
.argument('<craft>', 'Craft name to remove')
|
|
12
|
-
.
|
|
13
|
-
|
|
17
|
+
.option('-f, --force', 'Force removal even if other crafts depend on it')
|
|
18
|
+
.action(async (craftName, options) => {
|
|
19
|
+
await removeCommand(craftName, options);
|
|
14
20
|
});
|
|
15
21
|
}
|
|
16
|
-
async function removeCommand(craftName) {
|
|
22
|
+
async function removeCommand(craftName, options = {}) {
|
|
17
23
|
try {
|
|
18
24
|
// Read craftdesk.json
|
|
19
25
|
const craftDeskJson = await (0, file_system_1.readCraftDeskJson)();
|
|
@@ -21,17 +27,38 @@ async function removeCommand(craftName) {
|
|
|
21
27
|
logger_1.logger.error('No craftdesk.json found in current directory');
|
|
22
28
|
process.exit(1);
|
|
23
29
|
}
|
|
30
|
+
// Read lockfile to check for dependencies
|
|
31
|
+
const lockfile = await (0, file_system_1.readCraftDeskLock)();
|
|
32
|
+
// Check if other plugins depend on this craft
|
|
33
|
+
if (lockfile?.pluginTree && !options.force) {
|
|
34
|
+
const dependents = [];
|
|
35
|
+
for (const [pluginName, pluginInfo] of Object.entries(lockfile.pluginTree)) {
|
|
36
|
+
if (pluginInfo.dependencies?.includes(craftName)) {
|
|
37
|
+
dependents.push(`${pluginName}@${pluginInfo.version}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (dependents.length > 0) {
|
|
41
|
+
logger_1.logger.warn(`Warning: ${craftName} is required by:`);
|
|
42
|
+
for (const dep of dependents) {
|
|
43
|
+
logger_1.logger.warn(` - ${dep}`);
|
|
44
|
+
}
|
|
45
|
+
logger_1.logger.log('');
|
|
46
|
+
logger_1.logger.info('Use --force to remove anyway');
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
24
50
|
// Check if craft exists in any dependency field
|
|
25
51
|
let found = false;
|
|
26
52
|
let foundInField = null;
|
|
27
53
|
const depFields = ['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies'];
|
|
28
54
|
for (const field of depFields) {
|
|
29
|
-
|
|
55
|
+
const deps = craftDeskJson[field];
|
|
56
|
+
if (deps && deps[craftName]) {
|
|
30
57
|
found = true;
|
|
31
58
|
foundInField = field;
|
|
32
|
-
delete
|
|
59
|
+
delete deps[craftName];
|
|
33
60
|
// Remove empty objects
|
|
34
|
-
if (Object.keys(
|
|
61
|
+
if (Object.keys(deps).length === 0) {
|
|
35
62
|
delete craftDeskJson[field];
|
|
36
63
|
}
|
|
37
64
|
break;
|
|
@@ -44,22 +71,35 @@ async function removeCommand(craftName) {
|
|
|
44
71
|
// Save updated craftdesk.json
|
|
45
72
|
await (0, file_system_1.writeCraftDeskJson)(craftDeskJson);
|
|
46
73
|
logger_1.logger.success(`Removed ${craftName} from ${foundInField}`);
|
|
47
|
-
//
|
|
48
|
-
const lockfile = await (0, file_system_1.readCraftDeskLock)();
|
|
74
|
+
// Update lockfile if it exists
|
|
49
75
|
if (lockfile && lockfile.crafts[craftName]) {
|
|
50
76
|
const craftEntry = lockfile.crafts[craftName];
|
|
51
77
|
// Remove from file system
|
|
52
78
|
await installer_1.installer.removeCraft(craftName, craftEntry.type);
|
|
53
79
|
// Remove from lockfile
|
|
54
80
|
delete lockfile.crafts[craftName];
|
|
55
|
-
//
|
|
81
|
+
// Clean up plugin tree in lockfile
|
|
82
|
+
if (lockfile.pluginTree && lockfile.pluginTree[craftName]) {
|
|
83
|
+
delete lockfile.pluginTree[craftName];
|
|
84
|
+
}
|
|
85
|
+
// Update requiredBy for other plugins
|
|
86
|
+
if (lockfile.pluginTree) {
|
|
87
|
+
for (const [_pluginName, pluginInfo] of Object.entries(lockfile.pluginTree)) {
|
|
88
|
+
if (pluginInfo.requiredBy) {
|
|
89
|
+
pluginInfo.requiredBy = pluginInfo.requiredBy.filter(dep => dep !== craftName);
|
|
90
|
+
}
|
|
91
|
+
if (pluginInfo.dependencies) {
|
|
92
|
+
pluginInfo.dependencies = pluginInfo.dependencies.filter(dep => dep !== craftName);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
56
96
|
// Save updated lockfile
|
|
57
97
|
await (0, file_system_1.writeCraftDeskLock)(lockfile);
|
|
58
98
|
logger_1.logger.success('Updated craftdesk.lock');
|
|
59
99
|
}
|
|
60
100
|
else {
|
|
61
101
|
// Try to remove from file system anyway (best effort)
|
|
62
|
-
const typesToTry = ['skill', 'agent', 'command', 'hook'];
|
|
102
|
+
const typesToTry = ['skill', 'agent', 'command', 'hook', 'plugin'];
|
|
63
103
|
for (const type of typesToTry) {
|
|
64
104
|
await installer_1.installer.removeCraft(craftName, type);
|
|
65
105
|
}
|
|
@@ -67,7 +107,8 @@ async function removeCommand(craftName) {
|
|
|
67
107
|
logger_1.logger.success('Craft removed successfully!');
|
|
68
108
|
}
|
|
69
109
|
catch (error) {
|
|
70
|
-
|
|
110
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
111
|
+
logger_1.logger.error(`Failed to remove craft: ${message}`);
|
|
71
112
|
process.exit(1);
|
|
72
113
|
}
|
|
73
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the search command for finding crafts in the registry by keyword.
|
|
4
|
+
*
|
|
5
|
+
* @returns The configured Commander command instance
|
|
6
|
+
*/
|
|
7
|
+
export declare function createSearchCommand(): Command;
|
|
8
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSearchCommand = createSearchCommand;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const registry_client_1 = require("../services/registry-client");
|
|
6
|
+
const logger_1 = require("../utils/logger");
|
|
7
|
+
/**
|
|
8
|
+
* Creates the search command for finding crafts in the registry by keyword.
|
|
9
|
+
*
|
|
10
|
+
* @returns The configured Commander command instance
|
|
11
|
+
*/
|
|
12
|
+
function createSearchCommand() {
|
|
13
|
+
return new commander_1.Command('search')
|
|
14
|
+
.description('Search for crafts in the registry')
|
|
15
|
+
.argument('<query>', 'Search query')
|
|
16
|
+
.option('-t, --type <type>', 'Filter by type (skill, agent, command, hook, plugin)')
|
|
17
|
+
.option('-l, --limit <limit>', 'Maximum number of results', '20')
|
|
18
|
+
.option('--json', 'Output as JSON')
|
|
19
|
+
.action(async (query, options) => {
|
|
20
|
+
await searchCommand(query, options);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async function searchCommand(query, options) {
|
|
24
|
+
try {
|
|
25
|
+
logger_1.logger.startSpinner(`Searching for "${query}"...`);
|
|
26
|
+
const results = await registry_client_1.registryClient.searchCrafts(query, options.type || undefined);
|
|
27
|
+
if (!results || results.length === 0) {
|
|
28
|
+
logger_1.logger.failSpinner(`No crafts found matching "${query}"`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
logger_1.logger.succeedSpinner(`Found ${results.length} craft(s)`);
|
|
32
|
+
// Apply limit
|
|
33
|
+
const limit = parseInt(options.limit || '20', 10);
|
|
34
|
+
const displayResults = results.slice(0, limit);
|
|
35
|
+
if (options.json) {
|
|
36
|
+
console.log(JSON.stringify(displayResults, null, 2));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.log('');
|
|
40
|
+
for (const craft of displayResults) {
|
|
41
|
+
console.log(` ${craft.author}/${craft.name}@${craft.version} (${craft.type})`);
|
|
42
|
+
if (craft.description) {
|
|
43
|
+
console.log(` ${craft.description}`);
|
|
44
|
+
}
|
|
45
|
+
console.log('');
|
|
46
|
+
}
|
|
47
|
+
if (results.length > limit) {
|
|
48
|
+
logger_1.logger.info(`Showing ${limit} of ${results.length} results. Use --limit to see more.`);
|
|
49
|
+
}
|
|
50
|
+
logger_1.logger.info(`\nTo install a craft, run: craftdesk add <author>/<name>`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
55
|
+
logger_1.logger.failSpinner();
|
|
56
|
+
logger_1.logger.error(`Search failed: ${message}`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":";;AAeA,kDAUC;AAzBD,yCAAoC;AACpC,iEAA6D;AAC7D,4CAAyC;AAQzC;;;;GAIG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAI,mBAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,mCAAmC,CAAC;SAChD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;SACnC,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,IAAI,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA6B,EAAE,EAAE;QAC7D,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,OAA6B;IACvE,IAAI,CAAC;QACH,eAAM,CAAC,YAAY,CAAC,kBAAkB,KAAK,MAAM,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,MAAM,gCAAc,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;QAEpF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,eAAM,CAAC,WAAW,CAAC,6BAA6B,KAAK,GAAG,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,eAAM,CAAC,cAAc,CAAC,SAAS,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;QAE1D,cAAc;QACd,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBAChF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC1C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAC3B,eAAM,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,OAAO,CAAC,MAAM,oCAAoC,CAAC,CAAC;YACzF,CAAC;YAED,eAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,eAAM,CAAC,WAAW,EAAE,CAAC;QACrB,eAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the update command for updating installed crafts to newer versions.
|
|
4
|
+
*
|
|
5
|
+
* @returns The configured Commander command instance
|
|
6
|
+
*/
|
|
7
|
+
export declare function createUpdateCommand(): Command;
|
|
8
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAW7C"}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createUpdateCommand = createUpdateCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const file_system_1 = require("../utils/file-system");
|
|
12
|
+
const logger_1 = require("../utils/logger");
|
|
13
|
+
const registry_client_1 = require("../services/registry-client");
|
|
14
|
+
const installer_1 = require("../services/installer");
|
|
15
|
+
const config_manager_1 = require("../services/config-manager");
|
|
16
|
+
const version_utils_1 = require("../utils/version-utils");
|
|
17
|
+
/**
|
|
18
|
+
* Creates the update command for updating installed crafts to newer versions.
|
|
19
|
+
*
|
|
20
|
+
* @returns The configured Commander command instance
|
|
21
|
+
*/
|
|
22
|
+
function createUpdateCommand() {
|
|
23
|
+
return new commander_1.Command('update')
|
|
24
|
+
.description('Update installed crafts to newer versions')
|
|
25
|
+
.argument('[craft]', 'Specific craft to update (optional)')
|
|
26
|
+
.option('--dry-run', 'Preview updates without applying')
|
|
27
|
+
.option('--git-only', 'Only update git-based dependencies')
|
|
28
|
+
.option('--registry-only', 'Only update registry dependencies')
|
|
29
|
+
.option('--latest', 'Ignore version constraints, update to latest')
|
|
30
|
+
.action(async (craft, options) => {
|
|
31
|
+
await updateCommand(craft, options);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async function updateCommand(craftName, options) {
|
|
35
|
+
try {
|
|
36
|
+
// Read craftdesk.json for project info
|
|
37
|
+
const craftDeskJson = await (0, file_system_1.readCraftDeskJson)();
|
|
38
|
+
if (!craftDeskJson) {
|
|
39
|
+
logger_1.logger.error('No craftdesk.json found in current directory');
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
// Read lockfile to get installed versions
|
|
43
|
+
const lockfile = await (0, file_system_1.readCraftDeskLock)();
|
|
44
|
+
if (!lockfile || !lockfile.crafts || Object.keys(lockfile.crafts).length === 0) {
|
|
45
|
+
logger_1.logger.warn('No crafts installed. Run "craftdesk install" first.');
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
logger_1.logger.info('Checking for updates...\n');
|
|
49
|
+
// Find available updates
|
|
50
|
+
const updates = await findAvailableUpdates(lockfile, options);
|
|
51
|
+
// Filter to specific craft if provided
|
|
52
|
+
const toUpdate = craftName
|
|
53
|
+
? updates.filter(u => u.name === craftName || u.name.endsWith(`/${craftName}`))
|
|
54
|
+
: updates;
|
|
55
|
+
if (craftName && toUpdate.length === 0) {
|
|
56
|
+
const inLockfile = Object.keys(lockfile.crafts).find(n => n === craftName || n.endsWith(`/${craftName}`));
|
|
57
|
+
if (inLockfile) {
|
|
58
|
+
logger_1.logger.success(`${craftName} is already up to date!`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
logger_1.logger.error(`Craft '${craftName}' is not installed.`);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (toUpdate.length === 0) {
|
|
67
|
+
logger_1.logger.success('All crafts are up to date!');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Display update preview
|
|
71
|
+
displayUpdatePreview(toUpdate);
|
|
72
|
+
if (options.dryRun) {
|
|
73
|
+
logger_1.logger.info('\nRun without --dry-run to apply updates.');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Perform updates
|
|
77
|
+
logger_1.logger.info('\nUpdating crafts...\n');
|
|
78
|
+
let successCount = 0;
|
|
79
|
+
let errorCount = 0;
|
|
80
|
+
for (const update of toUpdate) {
|
|
81
|
+
try {
|
|
82
|
+
logger_1.logger.startSpinner(`Updating ${update.name}...`);
|
|
83
|
+
// Get new lock entry
|
|
84
|
+
const newEntry = await fetchNewLockEntry(update, options.latest);
|
|
85
|
+
if (!newEntry) {
|
|
86
|
+
logger_1.logger.failSpinner(`Failed to fetch update info for ${update.name}`);
|
|
87
|
+
errorCount++;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// Remove old installation
|
|
91
|
+
const installPath = config_manager_1.configManager.getInstallPath();
|
|
92
|
+
const typeDir = installer_1.installer.getTypeDirectory(update.lockEntry.type);
|
|
93
|
+
const craftDir = path_1.default.join(process.cwd(), installPath, typeDir, update.name);
|
|
94
|
+
if (await fs_extra_1.default.pathExists(craftDir)) {
|
|
95
|
+
await fs_extra_1.default.remove(craftDir);
|
|
96
|
+
}
|
|
97
|
+
// Install new version
|
|
98
|
+
await installer_1.installer.installCraft(update.name, newEntry);
|
|
99
|
+
// Update lockfile entry
|
|
100
|
+
lockfile.crafts[update.name] = newEntry;
|
|
101
|
+
// Update craftdesk.json dependency if needed
|
|
102
|
+
if (craftDeskJson.dependencies && craftDeskJson.dependencies[update.name]) {
|
|
103
|
+
const currentDep = craftDeskJson.dependencies[update.name];
|
|
104
|
+
// Only update if using exact version or if --latest flag
|
|
105
|
+
const isString = typeof currentDep === 'string';
|
|
106
|
+
const usesCaretRange = isString && currentDep.startsWith('^');
|
|
107
|
+
if (options.latest || !usesCaretRange) {
|
|
108
|
+
if (isString) {
|
|
109
|
+
craftDeskJson.dependencies[update.name] = newEntry.version;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// It's a DependencyConfig - update version field
|
|
113
|
+
const depConfig = craftDeskJson.dependencies[update.name];
|
|
114
|
+
depConfig.version = newEntry.version;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
logger_1.logger.succeedSpinner(`Updated ${update.name}: ${(0, version_utils_1.colorize)(update.current, 'red')} → ${(0, version_utils_1.colorize)(newEntry.version, 'green')}`);
|
|
119
|
+
successCount++;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
123
|
+
logger_1.logger.failSpinner(`Failed to update ${update.name}: ${message}`);
|
|
124
|
+
errorCount++;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Update lockfile metadata
|
|
128
|
+
lockfile.generatedAt = new Date().toISOString();
|
|
129
|
+
if (lockfile.metadata) {
|
|
130
|
+
lockfile.metadata.totalCrafts = Object.keys(lockfile.crafts).length;
|
|
131
|
+
}
|
|
132
|
+
// Write updated files
|
|
133
|
+
await (0, file_system_1.writeCraftDeskLock)(lockfile);
|
|
134
|
+
await (0, file_system_1.writeCraftDeskJson)(craftDeskJson);
|
|
135
|
+
// Summary
|
|
136
|
+
console.log('');
|
|
137
|
+
if (successCount > 0) {
|
|
138
|
+
logger_1.logger.success(`Updated ${successCount} craft(s)`);
|
|
139
|
+
}
|
|
140
|
+
if (errorCount > 0) {
|
|
141
|
+
logger_1.logger.warn(`${errorCount} craft(s) failed to update`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
146
|
+
logger_1.logger.error(`Failed to update: ${message}`);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async function findAvailableUpdates(lockfile, options) {
|
|
151
|
+
const updates = [];
|
|
152
|
+
for (const [name, entry] of Object.entries(lockfile.crafts)) {
|
|
153
|
+
const lockEntry = entry;
|
|
154
|
+
// Skip based on options
|
|
155
|
+
if (options.gitOnly && !lockEntry.git)
|
|
156
|
+
continue;
|
|
157
|
+
if (options.registryOnly && lockEntry.git)
|
|
158
|
+
continue;
|
|
159
|
+
try {
|
|
160
|
+
let updateInfo = null;
|
|
161
|
+
if (lockEntry.git) {
|
|
162
|
+
// Git-based dependency
|
|
163
|
+
updateInfo = await checkGitUpdate(name, lockEntry);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
// Registry-based dependency
|
|
167
|
+
updateInfo = await checkRegistryUpdate(name, lockEntry);
|
|
168
|
+
}
|
|
169
|
+
if (updateInfo && updateInfo.current !== updateInfo.latest) {
|
|
170
|
+
updates.push(updateInfo);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
175
|
+
logger_1.logger.debug(`Failed to check ${name}: ${message}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return updates;
|
|
179
|
+
}
|
|
180
|
+
async function checkRegistryUpdate(name, entry) {
|
|
181
|
+
try {
|
|
182
|
+
const craftInfo = await registry_client_1.registryClient.getCraftInfo(name);
|
|
183
|
+
if (!craftInfo) {
|
|
184
|
+
logger_1.logger.debug(`Could not fetch registry info for ${name}`);
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
const latestVersion = craftInfo.version || 'unknown';
|
|
188
|
+
const currentVersion = entry.version;
|
|
189
|
+
if (latestVersion === 'unknown' || latestVersion === currentVersion) {
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
name,
|
|
194
|
+
current: currentVersion,
|
|
195
|
+
latest: latestVersion,
|
|
196
|
+
type: entry.type,
|
|
197
|
+
source: 'registry',
|
|
198
|
+
lockEntry: entry
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
203
|
+
logger_1.logger.debug(`Registry check failed for ${name}: ${message}`);
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
async function checkGitUpdate(name, entry) {
|
|
208
|
+
if (!entry.git)
|
|
209
|
+
return null;
|
|
210
|
+
try {
|
|
211
|
+
const gitUrl = entry.git;
|
|
212
|
+
const currentCommit = entry.commit || entry.integrity;
|
|
213
|
+
const currentTag = entry.tag;
|
|
214
|
+
const currentBranch = entry.branch || 'main';
|
|
215
|
+
let latestDisplay = '';
|
|
216
|
+
let hasUpdate = false;
|
|
217
|
+
if (currentTag) {
|
|
218
|
+
// Check for newer tags
|
|
219
|
+
const tags = getRemoteTags(gitUrl);
|
|
220
|
+
if (tags.length > 0) {
|
|
221
|
+
const sortedTags = (0, version_utils_1.sortTagsBySemver)(tags);
|
|
222
|
+
latestDisplay = sortedTags[0] || currentTag;
|
|
223
|
+
hasUpdate = latestDisplay !== currentTag && (0, version_utils_1.isNewerVersion)(currentTag, latestDisplay);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Check for newer commits on branch
|
|
231
|
+
const latestCommit = getRemoteHeadCommit(gitUrl, currentBranch);
|
|
232
|
+
if (latestCommit && currentCommit) {
|
|
233
|
+
const shortCurrent = currentCommit.substring(0, 7);
|
|
234
|
+
const shortLatest = latestCommit.substring(0, 7);
|
|
235
|
+
latestDisplay = shortLatest;
|
|
236
|
+
hasUpdate = shortCurrent !== shortLatest && latestCommit !== currentCommit;
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (!hasUpdate)
|
|
243
|
+
return null;
|
|
244
|
+
const currentDisplay = currentTag || currentCommit?.substring(0, 7) || 'unknown';
|
|
245
|
+
return {
|
|
246
|
+
name,
|
|
247
|
+
current: currentDisplay,
|
|
248
|
+
latest: latestDisplay,
|
|
249
|
+
type: entry.type,
|
|
250
|
+
source: 'git',
|
|
251
|
+
lockEntry: entry
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
256
|
+
logger_1.logger.debug(`Git check failed for ${name}: ${message}`);
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
async function fetchNewLockEntry(update, _latest) {
|
|
261
|
+
if (update.source === 'registry') {
|
|
262
|
+
// Fetch from registry
|
|
263
|
+
const craftInfo = await registry_client_1.registryClient.getCraftInfo(update.name, update.latest);
|
|
264
|
+
if (!craftInfo)
|
|
265
|
+
return null;
|
|
266
|
+
return {
|
|
267
|
+
version: craftInfo.version,
|
|
268
|
+
resolved: craftInfo.download_url || update.lockEntry.resolved,
|
|
269
|
+
integrity: craftInfo.integrity || update.lockEntry.integrity,
|
|
270
|
+
type: craftInfo.type,
|
|
271
|
+
author: craftInfo.author,
|
|
272
|
+
registry: update.lockEntry.registry,
|
|
273
|
+
dependencies: craftInfo.dependencies || update.lockEntry.dependencies
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// Git source - update tag/commit
|
|
278
|
+
const newEntry = { ...update.lockEntry };
|
|
279
|
+
if (update.lockEntry.tag) {
|
|
280
|
+
// Update to new tag
|
|
281
|
+
newEntry.tag = update.latest;
|
|
282
|
+
newEntry.version = update.latest.replace(/^v/, '');
|
|
283
|
+
// Get commit hash for new tag
|
|
284
|
+
const commit = getRemoteTagCommit(update.lockEntry.git, update.latest);
|
|
285
|
+
if (commit) {
|
|
286
|
+
newEntry.commit = commit;
|
|
287
|
+
newEntry.integrity = commit;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
// Update to new commit
|
|
292
|
+
const branch = update.lockEntry.branch || 'main';
|
|
293
|
+
const latestCommit = getRemoteHeadCommit(update.lockEntry.git, branch);
|
|
294
|
+
if (latestCommit) {
|
|
295
|
+
newEntry.commit = latestCommit;
|
|
296
|
+
newEntry.integrity = latestCommit;
|
|
297
|
+
newEntry.version = `0.0.0-${latestCommit.substring(0, 7)}`;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return newEntry;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function displayUpdatePreview(updates) {
|
|
304
|
+
const nameWidth = Math.max(30, ...updates.map(u => u.name.length + 2));
|
|
305
|
+
const colWidth = 14;
|
|
306
|
+
console.log('');
|
|
307
|
+
console.log((0, version_utils_1.padRight)('Craft', nameWidth) +
|
|
308
|
+
(0, version_utils_1.padRight)('Current', colWidth) +
|
|
309
|
+
(0, version_utils_1.padRight)('Latest', colWidth) +
|
|
310
|
+
'Source');
|
|
311
|
+
console.log('-'.repeat(nameWidth + colWidth * 2 + 10));
|
|
312
|
+
for (const update of updates) {
|
|
313
|
+
const _updateType = (0, version_utils_1.getUpdateType)(update.current, update.latest);
|
|
314
|
+
const sourceCol = update.source === 'git' ? 'git' : 'registry';
|
|
315
|
+
console.log((0, version_utils_1.padRight)(update.name, nameWidth) +
|
|
316
|
+
(0, version_utils_1.colorize)((0, version_utils_1.padRight)(update.current, colWidth), 'red') +
|
|
317
|
+
(0, version_utils_1.colorize)((0, version_utils_1.padRight)(update.latest, colWidth), 'green') +
|
|
318
|
+
sourceCol);
|
|
319
|
+
}
|
|
320
|
+
console.log('');
|
|
321
|
+
logger_1.logger.info(`${updates.length} craft(s) can be updated.`);
|
|
322
|
+
}
|
|
323
|
+
function getRemoteTags(gitUrl) {
|
|
324
|
+
try {
|
|
325
|
+
const output = (0, child_process_1.execSync)(`git ls-remote --tags ${gitUrl} 2>/dev/null`, {
|
|
326
|
+
encoding: 'utf8',
|
|
327
|
+
timeout: 15000
|
|
328
|
+
});
|
|
329
|
+
const tags = [];
|
|
330
|
+
const lines = output.split('\n');
|
|
331
|
+
for (const line of lines) {
|
|
332
|
+
const match = line.match(/refs\/tags\/([^^]+)$/);
|
|
333
|
+
if (match && match[1]) {
|
|
334
|
+
tags.push(match[1]);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return tags;
|
|
338
|
+
}
|
|
339
|
+
catch {
|
|
340
|
+
return [];
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
function getRemoteHeadCommit(gitUrl, branch) {
|
|
344
|
+
try {
|
|
345
|
+
const output = (0, child_process_1.execSync)(`git ls-remote ${gitUrl} refs/heads/${branch} 2>/dev/null`, {
|
|
346
|
+
encoding: 'utf8',
|
|
347
|
+
timeout: 15000
|
|
348
|
+
});
|
|
349
|
+
const match = output.match(/^([a-f0-9]+)/);
|
|
350
|
+
return match ? match[1] : null;
|
|
351
|
+
}
|
|
352
|
+
catch {
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
function getRemoteTagCommit(gitUrl, tag) {
|
|
357
|
+
try {
|
|
358
|
+
const output = (0, child_process_1.execSync)(`git ls-remote ${gitUrl} refs/tags/${tag} 2>/dev/null`, {
|
|
359
|
+
encoding: 'utf8',
|
|
360
|
+
timeout: 15000
|
|
361
|
+
});
|
|
362
|
+
const match = output.match(/^([a-f0-9]+)/);
|
|
363
|
+
return match ? match[1] : null;
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
return null;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the whoami command for displaying the currently authenticated user.
|
|
4
|
+
*
|
|
5
|
+
* @returns The configured Commander command instance
|
|
6
|
+
*/
|
|
7
|
+
export declare function createWhoamiCommand(): Command;
|
|
8
|
+
//# sourceMappingURL=whoami.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAO7C"}
|