kimu-cli 0.1.1 → 1.2.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 +47 -2
- package/README.md +18 -7
- package/bin/kimu.js +54 -47
- package/dist/commands/build.d.ts +3 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +54 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/dev.d.ts +3 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +58 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +255 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/install.d.ts +3 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +58 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +173 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/new.d.ts +16 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +316 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/remove.d.ts +3 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +133 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/serve.d.ts +3 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +91 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/types/cli-types.d.ts +7 -0
- package/dist/types/cli-types.d.ts.map +1 -1
- package/dist/utils/module-installer.d.ts +11 -0
- package/dist/utils/module-installer.d.ts.map +1 -0
- package/dist/utils/module-installer.js +123 -0
- package/dist/utils/module-installer.js.map +1 -0
- package/dist/utils/registry.d.ts +8 -0
- package/dist/utils/registry.d.ts.map +1 -0
- package/dist/utils/registry.js +109 -0
- package/dist/utils/registry.js.map +1 -0
- package/docs/README.md +126 -0
- package/docs/command-kimu.md +14 -0
- package/docs/commands/create.md +60 -15
- package/docs/commands/install.md +52 -8
- package/docs/commands/list.md +39 -51
- package/docs/commands/new.md +626 -0
- package/docs/configuration-files.md +192 -0
- package/docs/getting-started.md +386 -0
- package/docs/index.md +57 -27
- package/docs/intro.md +30 -8
- package/docs/quick-reference.md +335 -0
- package/package.json +101 -101
- package/templates/generators/README.md +76 -0
- package/templates/generators/extension/config.json +45 -0
- package/templates/generators/extension/templates/component.ts.template +66 -0
- package/templates/generators/extension/templates/style.css.template +40 -0
- package/templates/generators/extension/templates/view.html.template +9 -0
- package/templates/generators/module/config.json +35 -0
- package/templates/generators/module/templates/README.md.template +62 -0
- package/templates/generators/module/templates/module.ts.template +36 -0
- package/templates/generators/module/templates/service.ts.template +41 -0
- package/docs/command-kimu-new.md +0 -207
- package/docs/command-kimu-old.md +0 -51
|
@@ -0,0 +1,58 @@
|
|
|
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.setupInstallCommand = setupInstallCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const module_installer_1 = require("../utils/module-installer");
|
|
10
|
+
function setupInstallCommand(program) {
|
|
11
|
+
const install = program
|
|
12
|
+
.command('install')
|
|
13
|
+
.alias('i')
|
|
14
|
+
.description('Install modules or extensions for your KIMU project');
|
|
15
|
+
// kimu install module <name>
|
|
16
|
+
install
|
|
17
|
+
.command('module <name>')
|
|
18
|
+
.alias('m')
|
|
19
|
+
.description('Install a KIMU module from the registry')
|
|
20
|
+
.option('--save-dev', 'install as development dependency')
|
|
21
|
+
.option('--registry <url>', 'use custom registry URL')
|
|
22
|
+
.option('--version <version>', 'install specific version')
|
|
23
|
+
.option('--force', 'force reinstall if already installed')
|
|
24
|
+
.option('--verbose', 'show detailed installation progress')
|
|
25
|
+
.action(async (name, options) => {
|
|
26
|
+
const spinner = (0, ora_1.default)(`Installing module ${name}...`).start();
|
|
27
|
+
try {
|
|
28
|
+
await (0, module_installer_1.installModuleOrExtension)(name, { ...options, type: 'module' });
|
|
29
|
+
spinner.succeed(chalk_1.default.green(`✅ Module ${name} installed successfully!`));
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
spinner.fail(chalk_1.default.red(`❌ Failed to install module ${name}: ${error.message}`));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
// kimu install extension <name>
|
|
37
|
+
install
|
|
38
|
+
.command('extension <name>')
|
|
39
|
+
.alias('e')
|
|
40
|
+
.description('Install a KIMU extension from the registry')
|
|
41
|
+
.option('--save-dev', 'install as development dependency')
|
|
42
|
+
.option('--registry <url>', 'use custom registry URL')
|
|
43
|
+
.option('--version <version>', 'install specific version')
|
|
44
|
+
.option('--force', 'force reinstall if already installed')
|
|
45
|
+
.option('--verbose', 'show detailed installation progress')
|
|
46
|
+
.action(async (name, options) => {
|
|
47
|
+
const spinner = (0, ora_1.default)(`Installing extension ${name}...`).start();
|
|
48
|
+
try {
|
|
49
|
+
await (0, module_installer_1.installModuleOrExtension)(name, { ...options, type: 'extension' });
|
|
50
|
+
spinner.succeed(chalk_1.default.green(`✅ Extension ${name} installed successfully!`));
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
spinner.fail(chalk_1.default.red(`❌ Failed to install extension ${name}: ${error.message}`));
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;;;;AAKA,kDAuDC;AA3DD,kDAA0B;AAC1B,8CAAsB;AACtB,gEAAqE;AAErE,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,qDAAqD,CAAC,CAAC;IAEtE,6BAA6B;IAC7B,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;SACzD,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;SACzD,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,qBAAqB,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,IAAA,2CAAwB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,OAAO,CACb,eAAK,CAAC,KAAK,CAAC,YAAY,IAAI,0BAA0B,CAAC,CACxD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,GAAG,CAAC,8BAA8B,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAClE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,gCAAgC;IAChC,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;SACzD,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;SACzD,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,wBAAwB,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,IAAA,2CAAwB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,OAAO,CACb,eAAK,CAAC,KAAK,CAAC,eAAe,IAAI,0BAA0B,CAAC,CAC3D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,GAAG,CAAC,iCAAiC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CACrE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuHvD"}
|
|
@@ -0,0 +1,173 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.setupListCommand = setupListCommand;
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const ora_1 = __importDefault(require("ora"));
|
|
42
|
+
const fs = __importStar(require("fs-extra"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const registry_1 = require("../utils/registry");
|
|
45
|
+
async function getInstalledPackages() {
|
|
46
|
+
const modules = [];
|
|
47
|
+
const extensions = [];
|
|
48
|
+
try {
|
|
49
|
+
// Read modules from modules-manifest.json
|
|
50
|
+
const modulesManifestPath = path.join(process.cwd(), 'src', 'modules', 'modules-manifest.json');
|
|
51
|
+
if (await fs.pathExists(modulesManifestPath)) {
|
|
52
|
+
const modulesManifest = await fs.readJson(modulesManifestPath);
|
|
53
|
+
modules.push(...(modulesManifest.installedModules?.map((mod) => mod.name) || []));
|
|
54
|
+
}
|
|
55
|
+
// Read extensions from extensions-manifest.json
|
|
56
|
+
const extensionsManifestPath = path.join(process.cwd(), 'src', 'extensions', 'extensions-manifest.json');
|
|
57
|
+
if (await fs.pathExists(extensionsManifestPath)) {
|
|
58
|
+
const extensionsManifest = await fs.readJson(extensionsManifestPath);
|
|
59
|
+
extensions.push(...(extensionsManifest.installedExtensions?.map((ext) => ext.tag || ext.name) || []));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
// Ignore errors, return empty arrays
|
|
64
|
+
}
|
|
65
|
+
return { modules, extensions };
|
|
66
|
+
}
|
|
67
|
+
function setupListCommand(program) {
|
|
68
|
+
const list = program
|
|
69
|
+
.command('list')
|
|
70
|
+
.alias('l')
|
|
71
|
+
.description('List available or installed modules and extensions');
|
|
72
|
+
// kimu list modules
|
|
73
|
+
list
|
|
74
|
+
.command('modules')
|
|
75
|
+
.alias('m')
|
|
76
|
+
.description('List available modules from the registry')
|
|
77
|
+
.option('--verbose', 'show detailed information')
|
|
78
|
+
.action(async (options) => {
|
|
79
|
+
const spinner = (0, ora_1.default)('Fetching available modules...').start();
|
|
80
|
+
try {
|
|
81
|
+
const registry = registry_1.KimuRegistry.getInstance();
|
|
82
|
+
const modules = await registry.listModules();
|
|
83
|
+
const installed = await getInstalledPackages();
|
|
84
|
+
spinner.succeed(chalk_1.default.green(`✅ Found ${modules.length} modules`));
|
|
85
|
+
console.log('\n📦 Available Modules:\n');
|
|
86
|
+
modules.forEach((mod) => {
|
|
87
|
+
const isInstalled = installed.modules.includes(mod.name);
|
|
88
|
+
const statusIcon = isInstalled ? chalk_1.default.green('✓') : chalk_1.default.gray('○');
|
|
89
|
+
const statusText = isInstalled ? chalk_1.default.green('[installed]') : '';
|
|
90
|
+
console.log(` ${statusIcon} ${chalk_1.default.cyan(mod.name)} ${chalk_1.default.gray(`v${mod.version}`)} ${statusText}`);
|
|
91
|
+
if (options.verbose) {
|
|
92
|
+
console.log(` ${chalk_1.default.dim(mod.description)}`);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
console.log('');
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
spinner.fail(chalk_1.default.red(`❌ Failed to fetch modules: ${error.message}`));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
// kimu list extensions
|
|
103
|
+
list
|
|
104
|
+
.command('extensions')
|
|
105
|
+
.alias('e')
|
|
106
|
+
.description('List available extensions from the registry')
|
|
107
|
+
.option('--verbose', 'show detailed information')
|
|
108
|
+
.action(async (options) => {
|
|
109
|
+
const spinner = (0, ora_1.default)('Fetching available extensions...').start();
|
|
110
|
+
try {
|
|
111
|
+
const registry = registry_1.KimuRegistry.getInstance();
|
|
112
|
+
const extensions = await registry.listExtensions();
|
|
113
|
+
const installed = await getInstalledPackages();
|
|
114
|
+
spinner.succeed(chalk_1.default.green(`✅ Found ${extensions.length} extensions`));
|
|
115
|
+
console.log('\n🧩 Available Extensions:\n');
|
|
116
|
+
extensions.forEach((ext) => {
|
|
117
|
+
const isInstalled = installed.extensions.includes(ext.name);
|
|
118
|
+
const statusIcon = isInstalled ? chalk_1.default.green('✓') : chalk_1.default.gray('○');
|
|
119
|
+
const statusText = isInstalled ? chalk_1.default.green('[installed]') : '';
|
|
120
|
+
console.log(` ${statusIcon} ${chalk_1.default.cyan(ext.name)} ${chalk_1.default.gray(`v${ext.version}`)} ${statusText}`);
|
|
121
|
+
if (options.verbose) {
|
|
122
|
+
console.log(` ${chalk_1.default.dim(ext.description)}`);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
console.log('');
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
spinner.fail(chalk_1.default.red(`❌ Failed to fetch extensions: ${error.message}`));
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
// kimu list installed
|
|
133
|
+
list
|
|
134
|
+
.command('installed')
|
|
135
|
+
.alias('i')
|
|
136
|
+
.description('List installed modules and extensions in your project')
|
|
137
|
+
.option('--verbose', 'show detailed information')
|
|
138
|
+
.action(async () => {
|
|
139
|
+
const spinner = (0, ora_1.default)('Checking installed packages...').start();
|
|
140
|
+
try {
|
|
141
|
+
const installed = await getInstalledPackages();
|
|
142
|
+
const total = installed.modules.length + installed.extensions.length;
|
|
143
|
+
if (total === 0) {
|
|
144
|
+
spinner.info(chalk_1.default.yellow('⚠️ No installed packages detected'));
|
|
145
|
+
console.log('\n📋 Installed Packages:\n');
|
|
146
|
+
console.log(' (No installed packages found in kimu.config.json)');
|
|
147
|
+
console.log('');
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
spinner.succeed(chalk_1.default.green(`✅ Found ${total} installed packages`));
|
|
151
|
+
console.log('\n📋 Installed Packages:\n');
|
|
152
|
+
if (installed.modules.length > 0) {
|
|
153
|
+
console.log(chalk_1.default.bold(' Modules:'));
|
|
154
|
+
installed.modules.forEach((name) => {
|
|
155
|
+
console.log(` ${chalk_1.default.green('✓')} ${chalk_1.default.cyan(name)}`);
|
|
156
|
+
});
|
|
157
|
+
console.log('');
|
|
158
|
+
}
|
|
159
|
+
if (installed.extensions.length > 0) {
|
|
160
|
+
console.log(chalk_1.default.bold(' Extensions:'));
|
|
161
|
+
installed.extensions.forEach((name) => {
|
|
162
|
+
console.log(` ${chalk_1.default.green('✓')} ${chalk_1.default.cyan(name)}`);
|
|
163
|
+
});
|
|
164
|
+
console.log('');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
spinner.fail(chalk_1.default.red(`❌ Failed to check installed packages: ${error.message}`));
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* New command implementation - Create components from templates
|
|
3
|
+
* Template-based generator system for extensibility
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import { Logger } from '../utils/logger';
|
|
7
|
+
import { NewOptions } from '../types/cli-types';
|
|
8
|
+
/**
|
|
9
|
+
* Setup new command
|
|
10
|
+
*/
|
|
11
|
+
export declare function setupNewCommand(program: Command): void;
|
|
12
|
+
/**
|
|
13
|
+
* Handle new command
|
|
14
|
+
*/
|
|
15
|
+
export declare function handleNewCommand(type: string, name: string, options: NewOptions, logger: Logger): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=new.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAwRhD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6CtD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyCf"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* New command implementation - Create components from templates
|
|
4
|
+
* Template-based generator system for extensibility
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.setupNewCommand = setupNewCommand;
|
|
44
|
+
exports.handleNewCommand = handleNewCommand;
|
|
45
|
+
const fs = __importStar(require("fs-extra"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
48
|
+
const ora_1 = __importDefault(require("ora"));
|
|
49
|
+
const logger_1 = require("../utils/logger");
|
|
50
|
+
const constants_1 = require("../config/constants");
|
|
51
|
+
/**
|
|
52
|
+
* Get the templates directory path
|
|
53
|
+
*/
|
|
54
|
+
function getTemplatesDir() {
|
|
55
|
+
// In development, templates are in the project root
|
|
56
|
+
// When published, they're in the package root
|
|
57
|
+
const devPath = path.join(__dirname, '../../templates/generators');
|
|
58
|
+
const prodPath = path.join(__dirname, '../templates/generators');
|
|
59
|
+
if (fs.existsSync(devPath)) {
|
|
60
|
+
return devPath;
|
|
61
|
+
}
|
|
62
|
+
else if (fs.existsSync(prodPath)) {
|
|
63
|
+
return prodPath;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw new Error('Templates directory not found');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Discover available generator types
|
|
71
|
+
*/
|
|
72
|
+
function discoverGenerators() {
|
|
73
|
+
const templatesDir = getTemplatesDir();
|
|
74
|
+
if (!fs.existsSync(templatesDir)) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
const entries = fs.readdirSync(templatesDir, { withFileTypes: true });
|
|
78
|
+
return entries
|
|
79
|
+
.filter(entry => entry.isDirectory())
|
|
80
|
+
.map(entry => entry.name)
|
|
81
|
+
.filter(name => fs.existsSync(path.join(templatesDir, name, 'config.json')));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Load generator configuration
|
|
85
|
+
*/
|
|
86
|
+
function loadGeneratorConfig(type) {
|
|
87
|
+
const templatesDir = getTemplatesDir();
|
|
88
|
+
const configPath = path.join(templatesDir, type, 'config.json');
|
|
89
|
+
if (!fs.existsSync(configPath)) {
|
|
90
|
+
throw new Error(`Generator config not found: ${configPath}`);
|
|
91
|
+
}
|
|
92
|
+
return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Convert kebab-case to PascalCase
|
|
96
|
+
*/
|
|
97
|
+
function toPascalCase(str) {
|
|
98
|
+
return str
|
|
99
|
+
.split('-')
|
|
100
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
101
|
+
.join('');
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Convert kebab-case to camelCase
|
|
105
|
+
*/
|
|
106
|
+
function toCamelCase(str) {
|
|
107
|
+
const pascal = toPascalCase(str);
|
|
108
|
+
return pascal.charAt(0).toLowerCase() + pascal.slice(1);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Convert kebab-case to Title Case
|
|
112
|
+
*/
|
|
113
|
+
function toTitleCase(str) {
|
|
114
|
+
return str
|
|
115
|
+
.split('-')
|
|
116
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
117
|
+
.join(' ');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Convert kebab-case to snake_case
|
|
121
|
+
*/
|
|
122
|
+
function toSnakeCase(str) {
|
|
123
|
+
return str.replace(/-/g, '_');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Replace placeholders in text
|
|
127
|
+
*/
|
|
128
|
+
function replacePlaceholders(text, name, targetPath) {
|
|
129
|
+
const replacements = {
|
|
130
|
+
'{{name}}': name,
|
|
131
|
+
'{{className}}': toPascalCase(name),
|
|
132
|
+
'{{kebabName}}': name,
|
|
133
|
+
'{{camelName}}': toCamelCase(name),
|
|
134
|
+
'{{titleName}}': toTitleCase(name),
|
|
135
|
+
'{{snakeName}}': toSnakeCase(name),
|
|
136
|
+
'{{targetPath}}': targetPath,
|
|
137
|
+
};
|
|
138
|
+
let result = text;
|
|
139
|
+
for (const [placeholder, value] of Object.entries(replacements)) {
|
|
140
|
+
result = result.replace(new RegExp(placeholder.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), value);
|
|
141
|
+
}
|
|
142
|
+
return result;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Register component in manifest or config
|
|
146
|
+
*/
|
|
147
|
+
async function registerComponent(config, name, targetPath, logger) {
|
|
148
|
+
if (!config.registration || !config.registration.enabled) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const { file, type, path: configPath, entry } = config.registration;
|
|
152
|
+
if (!fs.existsSync(file)) {
|
|
153
|
+
logger.warn(`Registration file not found: ${file}. Skipping registration.`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const content = JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
157
|
+
if (type === 'array') {
|
|
158
|
+
// Add to array (e.g., extension-manifest.json)
|
|
159
|
+
const entryWithPlaceholders = JSON.stringify(entry);
|
|
160
|
+
const finalEntry = JSON.parse(replacePlaceholders(entryWithPlaceholders, name, targetPath));
|
|
161
|
+
content.push(finalEntry);
|
|
162
|
+
}
|
|
163
|
+
else if (type === 'object' && configPath) {
|
|
164
|
+
// Add to nested object (e.g., kimu.config.json modules.installed)
|
|
165
|
+
const pathParts = configPath.split('.');
|
|
166
|
+
let current = content;
|
|
167
|
+
for (let i = 0; i < pathParts.length - 1; i++) {
|
|
168
|
+
const key = pathParts[i];
|
|
169
|
+
if (key && !current[key]) {
|
|
170
|
+
current[key] = {};
|
|
171
|
+
}
|
|
172
|
+
if (key) {
|
|
173
|
+
current = current[key];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const lastKey = pathParts[pathParts.length - 1];
|
|
177
|
+
if (lastKey && !Array.isArray(current[lastKey])) {
|
|
178
|
+
current[lastKey] = [];
|
|
179
|
+
}
|
|
180
|
+
if (lastKey) {
|
|
181
|
+
current[lastKey].push(name);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
fs.writeFileSync(file, JSON.stringify(content, null, 2) + '\n');
|
|
185
|
+
logger.success(`Registered in ${file}`);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Create component from generator template
|
|
189
|
+
*/
|
|
190
|
+
async function createFromTemplate(type, name, options, logger, spinner) {
|
|
191
|
+
// Load generator configuration
|
|
192
|
+
const config = loadGeneratorConfig(type);
|
|
193
|
+
const templatesDir = getTemplatesDir();
|
|
194
|
+
const templateDir = path.join(templatesDir, type, 'templates');
|
|
195
|
+
// Resolve target path with placeholders
|
|
196
|
+
const targetPath = options.path || replacePlaceholders(config.targetPath, name, '');
|
|
197
|
+
// Check if component already exists
|
|
198
|
+
if (fs.existsSync(targetPath) && !options.force) {
|
|
199
|
+
spinner.fail(chalk_1.default.red(`Component already exists: ${targetPath}`));
|
|
200
|
+
logger.error('Use --force to overwrite');
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
// Create target directory
|
|
204
|
+
fs.ensureDirSync(targetPath);
|
|
205
|
+
spinner.text = `Creating ${type} structure...`;
|
|
206
|
+
// Process each template file
|
|
207
|
+
for (const fileConfig of config.files) {
|
|
208
|
+
const templatePath = path.join(templateDir, fileConfig.template);
|
|
209
|
+
const outputPath = path.join(targetPath, replacePlaceholders(fileConfig.output, name, targetPath));
|
|
210
|
+
if (!fs.existsSync(templatePath)) {
|
|
211
|
+
logger.warn(`Template not found: ${templatePath}`);
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
// Read template content
|
|
215
|
+
const templateContent = fs.readFileSync(templatePath, 'utf-8');
|
|
216
|
+
// Replace placeholders
|
|
217
|
+
const finalContent = replacePlaceholders(templateContent, name, targetPath);
|
|
218
|
+
// Write output file
|
|
219
|
+
fs.writeFileSync(outputPath, finalContent);
|
|
220
|
+
if (options.verbose) {
|
|
221
|
+
logger.debug(`Created: ${outputPath}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Register component if enabled
|
|
225
|
+
if (options.register !== false) {
|
|
226
|
+
spinner.text = `Registering ${type}...`;
|
|
227
|
+
await registerComponent(config, name, targetPath, logger);
|
|
228
|
+
}
|
|
229
|
+
spinner.succeed(chalk_1.default.green(`✅ ${config.name} ${chalk_1.default.cyan(name)} created successfully!`));
|
|
230
|
+
// Show post-creation instructions
|
|
231
|
+
if (config.postCreate && config.postCreate.length > 0) {
|
|
232
|
+
logger.newLine();
|
|
233
|
+
logger.info(chalk_1.default.bold('Next steps:'));
|
|
234
|
+
for (const instruction of config.postCreate) {
|
|
235
|
+
const finalInstruction = replacePlaceholders(instruction, name, targetPath);
|
|
236
|
+
logger.bullet(finalInstruction);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Setup new command
|
|
242
|
+
*/
|
|
243
|
+
function setupNewCommand(program) {
|
|
244
|
+
program
|
|
245
|
+
.command('new <type> <name>')
|
|
246
|
+
.description('Create a new component from template (extension, module, etc.)')
|
|
247
|
+
.option('--path <path>', 'custom path for the component')
|
|
248
|
+
.option('--force', 'overwrite if component already exists')
|
|
249
|
+
.option('--no-register', 'skip registration in manifest/config')
|
|
250
|
+
.option('--verbose', 'enable verbose output')
|
|
251
|
+
.action(async (type, name, options) => {
|
|
252
|
+
const logger = new logger_1.Logger(options.verbose);
|
|
253
|
+
await handleNewCommand(type, name, options, logger);
|
|
254
|
+
});
|
|
255
|
+
// Add list subcommand to show available generators
|
|
256
|
+
program
|
|
257
|
+
.command('new:list')
|
|
258
|
+
.description('List all available component generators')
|
|
259
|
+
.action(() => {
|
|
260
|
+
const generators = discoverGenerators();
|
|
261
|
+
console.log(chalk_1.default.bold('\nAvailable component generators:\n'));
|
|
262
|
+
if (generators.length === 0) {
|
|
263
|
+
console.log(chalk_1.default.yellow(' No generators found.'));
|
|
264
|
+
console.log(chalk_1.default.gray(' Check templates/generators/ directory.\n'));
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
for (const type of generators) {
|
|
268
|
+
try {
|
|
269
|
+
const config = loadGeneratorConfig(type);
|
|
270
|
+
console.log(` ${chalk_1.default.cyan(type.padEnd(15))} ${chalk_1.default.gray(config.description)}`);
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
console.log(` ${chalk_1.default.cyan(type.padEnd(15))} ${chalk_1.default.red('(config error)')}`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
console.log('\nUsage: kimu new <type> <name>\n');
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Handle new command
|
|
281
|
+
*/
|
|
282
|
+
async function handleNewCommand(type, name, options, logger) {
|
|
283
|
+
const spinner = (0, ora_1.default)('Creating component...').start();
|
|
284
|
+
try {
|
|
285
|
+
// Check if we're in a KIMU project
|
|
286
|
+
if (!fs.existsSync(constants_1.KIMU_CONFIG_FILE)) {
|
|
287
|
+
spinner.fail(chalk_1.default.red('Not in a KIMU project directory'));
|
|
288
|
+
logger.error(`Run this command from the root of a KIMU project (${constants_1.KIMU_CONFIG_FILE} not found)`);
|
|
289
|
+
process.exit(1);
|
|
290
|
+
}
|
|
291
|
+
// Validate component type
|
|
292
|
+
const availableTypes = discoverGenerators();
|
|
293
|
+
if (!availableTypes.includes(type)) {
|
|
294
|
+
spinner.fail(chalk_1.default.red(`Invalid component type: ${type}`));
|
|
295
|
+
logger.error(`Valid types: ${availableTypes.join(', ')}`);
|
|
296
|
+
logger.info('Run "kimu new:list" to see all available generators');
|
|
297
|
+
process.exit(1);
|
|
298
|
+
}
|
|
299
|
+
// Validate component name
|
|
300
|
+
const namePattern = /^[a-z0-9-]+$/;
|
|
301
|
+
if (!namePattern.test(name)) {
|
|
302
|
+
spinner.fail(chalk_1.default.red('Invalid component name'));
|
|
303
|
+
logger.error('Component name must contain only lowercase letters, numbers, and hyphens');
|
|
304
|
+
process.exit(1);
|
|
305
|
+
}
|
|
306
|
+
spinner.text = `Creating ${type} ${chalk_1.default.cyan(name)}...`;
|
|
307
|
+
// Create component from template
|
|
308
|
+
await createFromTemplate(type, name, options, logger, spinner);
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
spinner.fail(chalk_1.default.red('Failed to create component'));
|
|
312
|
+
logger.error('Error details:', error);
|
|
313
|
+
process.exit(1);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2FzD"}
|