ingeniuscliq-core 0.1.1 → 0.1.2

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.
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { createBaseDir, joinPaths } from './helpers/index.js';
4
+ import chalk from 'chalk';
5
+ import enquirer from 'enquirer';
6
+ import fs from 'fs';
7
+
8
+ const { prompt } = enquirer;
9
+
10
+ function sanitizeTemplateName(input) {
11
+ return input
12
+ .trim()
13
+ .toLowerCase()
14
+ .replace(/\s+/g, '-') // espacios -> guiones
15
+ .replace(/[^a-z0-9-]/g, '') // solo [a-z0-9-]
16
+ .replace(/-+/g, '-'); // colapsar guiones
17
+ }
18
+
19
+ function ensureDir(dirPath) {
20
+ fs.mkdirSync(dirPath, { recursive: true });
21
+ }
22
+
23
+ function createTemplate(templateNameRaw) {
24
+ const templateName = sanitizeTemplateName(templateNameRaw);
25
+
26
+ if (!templateName) {
27
+ console.error(chalk.red.bold('❌ Error: El nombre de la plantilla es requerido.'));
28
+ process.exit(1);
29
+ }
30
+
31
+ // Base: <cwd>/components/templates/<templateName>
32
+ const baseDir = createBaseDir(templateName, ['components', 'templates']);
33
+
34
+ if (fs.existsSync(baseDir)) {
35
+ console.error(chalk.red.bold(`❌ Error: La plantilla '${templateName}' ya existe en components/templates.`));
36
+ process.exit(1);
37
+ }
38
+
39
+ try {
40
+ // Asegurar carpetas padre
41
+ ensureDir(createBaseDir('', ['components'])); // <cwd>/components
42
+ ensureDir(createBaseDir('', ['components', 'templates'])); // <cwd>/components/templates
43
+
44
+ // Crear carpeta de la plantilla
45
+ ensureDir(baseDir);
46
+ console.log(chalk.green(`✓ Creado directorio: ${chalk.bold(`components/templates/${templateName}`)}`));
47
+
48
+ // Subcarpetas requeridas
49
+ const subdirs = ['components', 'pages', 'styles'];
50
+ subdirs.forEach((dir) => {
51
+ ensureDir(joinPaths(baseDir, dir));
52
+ console.log(chalk.green(`✓ Creado directorio: ${chalk.bold(`components/templates/${templateName}/${dir}`)}`));
53
+ });
54
+
55
+ console.log(chalk.green.bold(`\n✨ Plantilla '${templateName}' creada correctamente.`));
56
+ } catch (error) {
57
+ console.error(chalk.red.bold(`❌ Error creando la plantilla: ${error.message}`));
58
+ process.exit(1);
59
+ }
60
+ }
61
+
62
+ async function promptTemplateName() {
63
+ console.log(chalk.cyan.bold('\n==================================='));
64
+ console.log(chalk.cyan.bold(' Create Template'));
65
+ console.log(chalk.cyan.bold('===================================\n'));
66
+
67
+ const { templateName } = await prompt({
68
+ type: 'input',
69
+ name: 'templateName',
70
+ message: 'Ingresa el nombre de la plantilla:',
71
+ validate: (input) => {
72
+ const val = sanitizeTemplateName(input);
73
+ if (!val) return 'El nombre es requerido.';
74
+ const target = createBaseDir(val, ['components', 'templates']);
75
+ if (fs.existsSync(target)) return `La plantilla '${val}' ya existe.`;
76
+ return true;
77
+ },
78
+ });
79
+
80
+ return templateName;
81
+ }
82
+
83
+ // CLI
84
+ const templateNameArg = process.argv[2];
85
+
86
+ (async function main() {
87
+ let name = templateNameArg;
88
+ if (!name) {
89
+ name = await promptTemplateName();
90
+ }
91
+ createTemplate(name);
92
+ })().catch((err) => {
93
+ console.error(chalk.red.bold(`❌ Error inesperado: ${err.message}`));
94
+ process.exit(1);
95
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ingeniuscliq-core",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "IngeniusCliq Core UI y lógica compartida",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -10,6 +10,7 @@
10
10
  "core/commands"
11
11
  ],
12
12
  "bin": {
13
+ "ingeniuscliq-create-template": "core/commands/create-template.js",
13
14
  "ingeniuscliq-create-module": "core/commands/create-module.js",
14
15
  "ingeniuscliq-rollback-module": "core/commands/rollback-module.js",
15
16
  "ingeniuscliq-create-core-module": "core/commands/create-core-module.js",
@@ -17,6 +18,7 @@
17
18
  },
18
19
  "scripts": {
19
20
  "build": "vite build",
21
+ "create:template": "node core/commands/create-template.js",
20
22
  "create:module": "node core/commands/create-module.js",
21
23
  "create:core-module": "node core/commands/create-core-module.js",
22
24
  "rollback:core-module": "node core/commands/rollback-core-module.js",