craftdesk 0.3.0 → 0.5.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 +88 -0
- package/README.md +1609 -132
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +306 -8
- 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/detect-agents.d.ts +14 -0
- package/dist/commands/detect-agents.d.ts.map +1 -0
- package/dist/commands/detect-agents.js +86 -0
- package/dist/commands/detect-agents.js.map +1 -0
- package/dist/commands/embed.d.ts +14 -0
- package/dist/commands/embed.d.ts.map +1 -0
- package/dist/commands/embed.js +147 -0
- package/dist/commands/embed.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 +8 -2
- 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 +75 -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 +203 -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 +51 -10
- 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/setup-multi-agent.d.ts +17 -0
- package/dist/commands/setup-multi-agent.d.ts.map +1 -0
- package/dist/commands/setup-multi-agent.js +188 -0
- package/dist/commands/setup-multi-agent.js.map +1 -0
- package/dist/commands/sync.d.ts +14 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +144 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/unembed.d.ts +14 -0
- package/dist/commands/unembed.d.ts.map +1 -0
- package/dist/commands/unembed.js +96 -0
- package/dist/commands/unembed.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 +372 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +14 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +143 -0
- package/dist/commands/verify.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 +56 -3
- package/dist/index.js.map +1 -1
- package/dist/services/agent-detector.d.ts +57 -0
- package/dist/services/agent-detector.d.ts.map +1 -0
- package/dist/services/agent-detector.js +146 -0
- package/dist/services/agent-detector.js.map +1 -0
- 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 +190 -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 +44 -20
- package/dist/services/git-resolver.js.map +1 -1
- package/dist/services/gitignore-manager.d.ts +74 -0
- package/dist/services/gitignore-manager.d.ts.map +1 -0
- package/dist/services/gitignore-manager.js +188 -0
- package/dist/services/gitignore-manager.js.map +1 -0
- package/dist/services/installer.d.ts +60 -1
- package/dist/services/installer.d.ts.map +1 -1
- package/dist/services/installer.js +295 -20
- package/dist/services/installer.js.map +1 -1
- package/dist/services/multi-agent-sync.d.ts +88 -0
- package/dist/services/multi-agent-sync.d.ts.map +1 -0
- package/dist/services/multi-agent-sync.js +316 -0
- package/dist/services/multi-agent-sync.js.map +1 -0
- 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 +183 -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 +76 -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/types/multi-agent.d.ts +85 -0
- package/dist/types/multi-agent.d.ts.map +1 -0
- package/dist/types/multi-agent.js +6 -0
- package/dist/types/multi-agent.js.map +1 -0
- 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 -19
- 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 -373
- 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/list.js
CHANGED
|
@@ -5,6 +5,11 @@ 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 'list' command for listing installed crafts
|
|
10
|
+
*
|
|
11
|
+
* @returns Commander command instance configured for listing crafts
|
|
12
|
+
*/
|
|
8
13
|
function createListCommand() {
|
|
9
14
|
return new commander_1.Command('list')
|
|
10
15
|
.description('List installed crafts')
|
|
@@ -53,22 +58,83 @@ async function listCommand(options) {
|
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
60
|
else {
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
// Group crafts by type
|
|
62
|
+
const lockfile = await (0, file_system_1.readCraftDeskLock)();
|
|
63
|
+
const pluginTree = lockfile?.pluginTree || {};
|
|
64
|
+
const plugins = installedCrafts.filter(c => c.type === 'plugin');
|
|
65
|
+
const skills = installedCrafts.filter(c => c.type === 'skill');
|
|
66
|
+
const agents = installedCrafts.filter(c => c.type === 'agent');
|
|
67
|
+
const commands = installedCrafts.filter(c => c.type === 'command');
|
|
68
|
+
const hooks = installedCrafts.filter(c => c.type === 'hook');
|
|
69
|
+
const others = installedCrafts.filter(c => !['plugin', 'skill', 'agent', 'command', 'hook'].includes(c.type));
|
|
70
|
+
// Show plugins with their dependencies
|
|
71
|
+
if (plugins.length > 0) {
|
|
72
|
+
logger_1.logger.log('\n🔌 Plugins:');
|
|
73
|
+
for (const plugin of plugins) {
|
|
74
|
+
const treeInfo = pluginTree[plugin.name];
|
|
75
|
+
const isDep = treeInfo?.isDependency;
|
|
76
|
+
const suffix = isDep ? ' (dependency)' : '';
|
|
77
|
+
logger_1.logger.log(` ${plugin.name}@${plugin.version}${suffix}`);
|
|
78
|
+
// Show dependencies
|
|
79
|
+
if (treeInfo?.dependencies && treeInfo.dependencies.length > 0) {
|
|
80
|
+
for (let i = 0; i < treeInfo.dependencies.length; i++) {
|
|
81
|
+
const dep = treeInfo.dependencies[i];
|
|
82
|
+
const isLast = i === treeInfo.dependencies.length - 1;
|
|
83
|
+
const connector = isLast ? '└──' : '├──';
|
|
84
|
+
logger_1.logger.log(` ${connector} ${dep}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Show skills
|
|
90
|
+
if (skills.length > 0) {
|
|
91
|
+
logger_1.logger.log('\n📚 Skills:');
|
|
92
|
+
const embeddedSkills = craftDeskJson.embedded || [];
|
|
93
|
+
for (const skill of skills) {
|
|
94
|
+
const isEmbedded = embeddedSkills.includes(skill.name);
|
|
95
|
+
const badge = isEmbedded ? ' 📌 (embedded)' : '';
|
|
96
|
+
logger_1.logger.log(` ${skill.name}@${skill.version}${badge}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Show agents
|
|
100
|
+
if (agents.length > 0) {
|
|
101
|
+
logger_1.logger.log('\n🤖 Agents:');
|
|
102
|
+
for (const agent of agents) {
|
|
103
|
+
logger_1.logger.log(` ${agent.name}@${agent.version}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Show commands
|
|
107
|
+
if (commands.length > 0) {
|
|
108
|
+
logger_1.logger.log('\n⚡ Commands:');
|
|
109
|
+
for (const cmd of commands) {
|
|
110
|
+
logger_1.logger.log(` ${cmd.name}@${cmd.version}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Show hooks
|
|
114
|
+
if (hooks.length > 0) {
|
|
115
|
+
logger_1.logger.log('\n🔗 Hooks:');
|
|
116
|
+
for (const hook of hooks) {
|
|
117
|
+
logger_1.logger.log(` ${hook.name}@${hook.version}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Show others
|
|
121
|
+
if (others.length > 0) {
|
|
122
|
+
logger_1.logger.log('\n📦 Others:');
|
|
123
|
+
for (const other of others) {
|
|
124
|
+
logger_1.logger.log(` ${other.name}@${other.version} (${other.type})`);
|
|
125
|
+
}
|
|
61
126
|
}
|
|
62
127
|
logger_1.logger.log('');
|
|
63
128
|
logger_1.logger.info(`Total: ${installedCrafts.length} crafts installed`);
|
|
64
129
|
}
|
|
65
130
|
}
|
|
66
131
|
catch (error) {
|
|
67
|
-
|
|
132
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
133
|
+
logger_1.logger.error(`Failed to list crafts: ${message}`);
|
|
68
134
|
process.exit(1);
|
|
69
135
|
}
|
|
70
136
|
}
|
|
71
|
-
function
|
|
137
|
+
function _getTypeIcon(type) {
|
|
72
138
|
switch (type) {
|
|
73
139
|
case 'skill':
|
|
74
140
|
return '📚';
|
|
@@ -78,6 +144,8 @@ function getTypeIcon(type) {
|
|
|
78
144
|
return '⚡';
|
|
79
145
|
case 'hook':
|
|
80
146
|
return '🔗';
|
|
147
|
+
case 'plugin':
|
|
148
|
+
return '🔌';
|
|
81
149
|
default:
|
|
82
150
|
return '📦';
|
|
83
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the 'login' command for authenticating with a CraftDesk registry
|
|
4
|
+
*
|
|
5
|
+
* @returns Commander command instance configured for registry authentication
|
|
6
|
+
*/
|
|
7
|
+
export declare function createLoginCommand(): Command;
|
|
8
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAO5C"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createLoginCommand = createLoginCommand;
|
|
37
|
+
const commander_1 = require("commander");
|
|
38
|
+
const readline = __importStar(require("readline"));
|
|
39
|
+
const config_manager_1 = require("../services/config-manager");
|
|
40
|
+
const registry_client_1 = require("../services/registry-client");
|
|
41
|
+
const logger_1 = require("../utils/logger");
|
|
42
|
+
/**
|
|
43
|
+
* Creates the 'login' command for authenticating with a CraftDesk registry
|
|
44
|
+
*
|
|
45
|
+
* @returns Commander command instance configured for registry authentication
|
|
46
|
+
*/
|
|
47
|
+
function createLoginCommand() {
|
|
48
|
+
return new commander_1.Command('login')
|
|
49
|
+
.description('Authenticate with a CraftDesk registry')
|
|
50
|
+
.option('--registry <url>', 'Registry URL to authenticate with')
|
|
51
|
+
.action(async (options) => {
|
|
52
|
+
await loginCommand(options);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async function loginCommand(options) {
|
|
56
|
+
try {
|
|
57
|
+
// 1. Get registry URL
|
|
58
|
+
const registryUrl = options.registry || await config_manager_1.configManager.getDefaultRegistry();
|
|
59
|
+
if (!registryUrl) {
|
|
60
|
+
logger_1.logger.error('No registry configured.');
|
|
61
|
+
logger_1.logger.info('Either specify --registry <url> or add a default registry to craftdesk.json:');
|
|
62
|
+
logger_1.logger.info(' "registries": { "default": { "url": "https://your-registry.com" } }');
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
// 2. Check if already logged in
|
|
66
|
+
const existingToken = await config_manager_1.configManager.getAuthToken(registryUrl);
|
|
67
|
+
if (existingToken) {
|
|
68
|
+
const existingUser = await config_manager_1.configManager.getStoredUsername(registryUrl);
|
|
69
|
+
logger_1.logger.info(`Already logged in to ${registryUrl} as ${existingUser || 'unknown'}`);
|
|
70
|
+
logger_1.logger.info('Run "craftdesk logout" first to log out, or provide a new token.');
|
|
71
|
+
}
|
|
72
|
+
// 3. Prompt for token
|
|
73
|
+
logger_1.logger.info(`\nAuthenticating with ${registryUrl}`);
|
|
74
|
+
logger_1.logger.info('Get your API token from your profile page on the registry website.\n');
|
|
75
|
+
const token = await promptForToken();
|
|
76
|
+
if (!token || token.trim() === '') {
|
|
77
|
+
logger_1.logger.error('No token provided');
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
// 4. Validate token
|
|
81
|
+
logger_1.logger.startSpinner('Verifying token...');
|
|
82
|
+
const userInfo = await registry_client_1.registryClient.verifyToken(registryUrl, token.trim());
|
|
83
|
+
// 5. Save to config
|
|
84
|
+
await config_manager_1.configManager.setAuthToken(registryUrl, token.trim(), userInfo.username);
|
|
85
|
+
logger_1.logger.succeedSpinner(`Logged in as ${userInfo.username}`);
|
|
86
|
+
if (userInfo.organization) {
|
|
87
|
+
logger_1.logger.info(`Organization: ${userInfo.organization}`);
|
|
88
|
+
}
|
|
89
|
+
logger_1.logger.info(`\nToken saved to ${config_manager_1.configManager.getGlobalConfigPath()}`);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
93
|
+
logger_1.logger.failSpinner('Authentication failed');
|
|
94
|
+
logger_1.logger.error(message);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Prompt for API token with hidden input
|
|
100
|
+
*
|
|
101
|
+
* @returns The API token entered by the user
|
|
102
|
+
*/
|
|
103
|
+
async function promptForToken() {
|
|
104
|
+
return new Promise((resolve) => {
|
|
105
|
+
const rl = readline.createInterface({
|
|
106
|
+
input: process.stdin,
|
|
107
|
+
output: process.stdout
|
|
108
|
+
});
|
|
109
|
+
// Try to hide input if terminal supports it
|
|
110
|
+
if (process.stdin.isTTY) {
|
|
111
|
+
process.stdout.write('Token: ');
|
|
112
|
+
let token = '';
|
|
113
|
+
// Use raw mode for hidden input
|
|
114
|
+
process.stdin.setRawMode(true);
|
|
115
|
+
process.stdin.resume();
|
|
116
|
+
process.stdin.setEncoding('utf8');
|
|
117
|
+
const onData = (char) => {
|
|
118
|
+
// Ctrl+C
|
|
119
|
+
if (char === '\u0003') {
|
|
120
|
+
process.stdin.setRawMode(false);
|
|
121
|
+
process.stdout.write('\n');
|
|
122
|
+
rl.close();
|
|
123
|
+
process.exit(0);
|
|
124
|
+
}
|
|
125
|
+
// Enter key
|
|
126
|
+
if (char === '\r' || char === '\n') {
|
|
127
|
+
process.stdin.setRawMode(false);
|
|
128
|
+
process.stdin.removeListener('data', onData);
|
|
129
|
+
process.stdout.write('\n');
|
|
130
|
+
rl.close();
|
|
131
|
+
resolve(token);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
// Backspace
|
|
135
|
+
if (char === '\u007F' || char === '\b') {
|
|
136
|
+
if (token.length > 0) {
|
|
137
|
+
token = token.slice(0, -1);
|
|
138
|
+
// Move cursor back, write space, move back again
|
|
139
|
+
process.stdout.write('\b \b');
|
|
140
|
+
}
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
// Regular character - add to token, display asterisk
|
|
144
|
+
token += char;
|
|
145
|
+
process.stdout.write('*');
|
|
146
|
+
};
|
|
147
|
+
process.stdin.on('data', onData);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// Non-interactive mode - just read the line
|
|
151
|
+
rl.question('Token: ', (answer) => {
|
|
152
|
+
rl.close();
|
|
153
|
+
resolve(answer);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the 'logout' command for removing registry authentication
|
|
4
|
+
*
|
|
5
|
+
* @returns Commander command instance configured for logging out
|
|
6
|
+
*/
|
|
7
|
+
export declare function createLogoutCommand(): Command;
|
|
8
|
+
//# sourceMappingURL=logout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAO7C"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLogoutCommand = createLogoutCommand;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const config_manager_1 = require("../services/config-manager");
|
|
6
|
+
const logger_1 = require("../utils/logger");
|
|
7
|
+
/**
|
|
8
|
+
* Creates the 'logout' command for removing registry authentication
|
|
9
|
+
*
|
|
10
|
+
* @returns Commander command instance configured for logging out
|
|
11
|
+
*/
|
|
12
|
+
function createLogoutCommand() {
|
|
13
|
+
return new commander_1.Command('logout')
|
|
14
|
+
.description('Remove authentication for a registry')
|
|
15
|
+
.option('--registry <url>', 'Registry URL to logout from')
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
await logoutCommand(options);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async function logoutCommand(options) {
|
|
21
|
+
try {
|
|
22
|
+
// 1. Get registry URL
|
|
23
|
+
const registryUrl = options.registry || await config_manager_1.configManager.getDefaultRegistry();
|
|
24
|
+
if (!registryUrl) {
|
|
25
|
+
logger_1.logger.error('No registry specified.');
|
|
26
|
+
logger_1.logger.info('Either specify --registry <url> or add a default registry to craftdesk.json');
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
// 2. Get stored username before removing (for display)
|
|
30
|
+
const username = await config_manager_1.configManager.getStoredUsername(registryUrl);
|
|
31
|
+
// 3. Remove token from config
|
|
32
|
+
const removed = await config_manager_1.configManager.removeAuthToken(registryUrl);
|
|
33
|
+
if (removed) {
|
|
34
|
+
if (username) {
|
|
35
|
+
logger_1.logger.success(`Logged out ${username} from ${registryUrl}`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
logger_1.logger.success(`Logged out from ${registryUrl}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
logger_1.logger.info(`Not logged in to ${registryUrl}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
logger_1.logger.error(message);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":";;AAaA,kDAOC;AApBD,yCAAoC;AACpC,+DAA2D;AAC3D,4CAAyC;AAMzC;;;;GAIG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAI,mBAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QACvC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAsB;IACjD,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,8BAAa,CAAC,kBAAkB,EAAE,CAAC;QAEjF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,eAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvC,eAAM,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,MAAM,8BAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAEpE,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,8BAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEjE,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAM,CAAC,OAAO,CAAC,cAAc,QAAQ,SAAS,WAAW,EAAE,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,OAAO,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;IAEH,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,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the outdated command for checking newer versions of installed crafts.
|
|
4
|
+
*
|
|
5
|
+
* @returns The configured Commander command instance
|
|
6
|
+
*/
|
|
7
|
+
export declare function createOutdatedCommand(): Command;
|
|
8
|
+
/**
|
|
9
|
+
* Exported wrapper for testing - fetches remote git tags from a repository.
|
|
10
|
+
*
|
|
11
|
+
* @param gitUrl - The git repository URL
|
|
12
|
+
* @returns Array of tag names found in the repository
|
|
13
|
+
*/
|
|
14
|
+
export declare function getRemoteTagsExported(gitUrl: string): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Exported wrapper for testing - fetches the latest commit hash from a git branch.
|
|
17
|
+
*
|
|
18
|
+
* @param gitUrl - The git repository URL
|
|
19
|
+
* @param branch - The branch name to check
|
|
20
|
+
* @returns The commit hash or null if not found
|
|
21
|
+
*/
|
|
22
|
+
export declare function getRemoteHeadCommitExported(gitUrl: string, branch: string): string | null;
|
|
23
|
+
//# sourceMappingURL=outdated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outdated.d.ts","sourceRoot":"","sources":["../../src/commands/outdated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAS/C;AA0PD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzF"}
|