@igniter-js/cli 0.1.4 → 0.1.6
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/dist/index.js +373 -191
- package/dist/index.js.map +1 -0
- package/dist/templates/express.server.hbs +33 -0
- package/dist/templates/feature.controller.hbs +14 -4
- package/dist/templates/feature.interface.hbs +27 -5
- package/dist/templates/feature.procedure.hbs +12 -7
- package/dist/templates/globals.hbs +7 -82
- package/dist/templates/igniter.context.hbs +1 -1
- package/dist/templates/layout.hbs +6 -14
- package/dist/templates/page.hbs +4 -37
- package/dist/templates/readme.hbs +25 -42
- package/dist/utils/analyze.js +8 -10
- package/dist/utils/analyze.js.map +1 -0
- package/dist/utils/cli-style.d.ts +55 -0
- package/dist/utils/cli-style.js +171 -0
- package/dist/utils/cli-style.js.map +1 -0
- package/dist/utils/consts.d.ts +4 -9
- package/dist/utils/consts.js +5 -13
- package/dist/utils/consts.js.map +1 -0
- package/dist/utils/handlebars-helpers.js +18 -5
- package/dist/utils/handlebars-helpers.js.map +1 -0
- package/dist/utils/helpers.d.ts +2 -1
- package/dist/utils/helpers.js +44 -17
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/platform-utils.d.ts +46 -0
- package/dist/utils/platform-utils.js +95 -0
- package/dist/utils/platform-utils.js.map +1 -0
- package/dist/utils/prisma-schema-parser.js +11 -16
- package/dist/utils/prisma-schema-parser.js.map +1 -0
- package/dist/utils/project-utils.d.ts +32 -0
- package/dist/utils/project-utils.js +123 -0
- package/dist/utils/project-utils.js.map +1 -0
- package/dist/utils/template-handler.js +4 -5
- package/dist/utils/template-handler.js.map +1 -0
- package/package.json +3 -1
- package/readme.md +23 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isWindows = isWindows;
|
|
4
|
+
exports.normalizePath = normalizePath;
|
|
5
|
+
exports.supportsUnicode = supportsUnicode;
|
|
6
|
+
exports.getVisualElements = getVisualElements;
|
|
7
|
+
const tslib_1 = require("tslib");
|
|
8
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
9
|
+
const is_windows_1 = tslib_1.__importDefault(require("is-windows"));
|
|
10
|
+
/**
|
|
11
|
+
* Funções básicas de utilidade para detecção de plataforma
|
|
12
|
+
* Arquivo separado para evitar referências circulares
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Verifica se está rodando no Windows
|
|
16
|
+
* @returns {boolean} True se estiver rodando no Windows
|
|
17
|
+
*/
|
|
18
|
+
function isWindows() {
|
|
19
|
+
return (0, is_windows_1.default)() || process.platform === 'win32';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Normaliza separadores de caminho para a plataforma atual
|
|
23
|
+
* @param {string} filePath - O caminho a ser normalizado
|
|
24
|
+
* @returns {string} O caminho normalizado
|
|
25
|
+
*/
|
|
26
|
+
function normalizePath(filePath) {
|
|
27
|
+
return path_1.default.normalize(filePath);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Verifica se o terminal suporta caracteres Unicode
|
|
31
|
+
* @returns {boolean} True se o terminal suportar caracteres Unicode
|
|
32
|
+
*/
|
|
33
|
+
function supportsUnicode() {
|
|
34
|
+
// Verificação mais robusta de suporte a Unicode no Windows
|
|
35
|
+
const isWinOS = isWindows();
|
|
36
|
+
// No Windows, verificar também a variável de ambiente TERM
|
|
37
|
+
const termVar = process.env.TERM || '';
|
|
38
|
+
const isPowerShell = process.env.SHELL?.includes('powershell') || false;
|
|
39
|
+
const isWindowsTerminal = process.env.WT_SESSION !== undefined;
|
|
40
|
+
// Windows Terminal e PowerShell Core suportam Unicode bem
|
|
41
|
+
if (isWinOS && (isWindowsTerminal || isPowerShell || termVar.includes('xterm'))) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
// Para outros sistemas, verificar se é um TTY
|
|
45
|
+
return process.stdout.isTTY && !isWinOS;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Obtém elementos visuais apropriados para a plataforma atual
|
|
49
|
+
* @returns {object} Objeto contendo elementos visuais adequados para a plataforma atual
|
|
50
|
+
*/
|
|
51
|
+
function getVisualElements() {
|
|
52
|
+
const hasUnicodeSupport = supportsUnicode();
|
|
53
|
+
// Elementos ASCII simples para baixa compatibilidade
|
|
54
|
+
let elements = {
|
|
55
|
+
verticalLine: '|',
|
|
56
|
+
horizontalLine: '-',
|
|
57
|
+
topRight: '+',
|
|
58
|
+
topLeft: '+',
|
|
59
|
+
bottomRight: '+',
|
|
60
|
+
bottomLeft: '+',
|
|
61
|
+
cross: '+',
|
|
62
|
+
bullet: '*',
|
|
63
|
+
checkmark: '√',
|
|
64
|
+
cross_mark: 'x',
|
|
65
|
+
warning: '!',
|
|
66
|
+
info: 'i',
|
|
67
|
+
arrow: '->'
|
|
68
|
+
};
|
|
69
|
+
// Elementos aprimorados para terminais com melhor suporte a símbolos
|
|
70
|
+
if (hasUnicodeSupport) {
|
|
71
|
+
elements = {
|
|
72
|
+
verticalLine: '│',
|
|
73
|
+
horizontalLine: '─',
|
|
74
|
+
topRight: '┐',
|
|
75
|
+
topLeft: '┌',
|
|
76
|
+
bottomRight: '┘',
|
|
77
|
+
bottomLeft: '└',
|
|
78
|
+
cross: '┼',
|
|
79
|
+
bullet: '•',
|
|
80
|
+
checkmark: '✓',
|
|
81
|
+
cross_mark: '✗',
|
|
82
|
+
warning: '⚠',
|
|
83
|
+
info: 'ℹ',
|
|
84
|
+
arrow: '→'
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return elements;
|
|
88
|
+
}
|
|
89
|
+
exports.default = {
|
|
90
|
+
isWindows,
|
|
91
|
+
normalizePath,
|
|
92
|
+
supportsUnicode,
|
|
93
|
+
getVisualElements
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=platform-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":";;AAaA,8BAEC;AAOD,sCAEC;AAMD,0CAgBC;AAMD,8CAwCC;;AA3FD,wDAAuB;AACvB,oEAA8B;AAE9B;;;GAGG;AAEH;;;GAGG;AACH,SAAgB,SAAS;IACvB,OAAO,IAAA,oBAAK,GAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;AACjC,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe;IAC7B,2DAA2D;IAC3D,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,2DAA2D;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;IACtC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAA;IACvE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAA;IAE9D,0DAA0D;IAC1D,IAAI,OAAO,IAAI,CAAC,iBAAiB,IAAI,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAChF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,8CAA8C;IAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,iBAAiB,GAAG,eAAe,EAAE,CAAA;IAE3C,qDAAqD;IACrD,IAAI,QAAQ,GAAG;QACb,YAAY,EAAE,GAAG;QACjB,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,GAAG;QACf,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,IAAI;KACZ,CAAA;IAED,qEAAqE;IACrE,IAAI,iBAAiB,EAAE,CAAC;QACtB,QAAQ,GAAG;YACT,YAAY,EAAE,GAAG;YACjB,cAAc,EAAE,GAAG;YACnB,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,GAAG;YACZ,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,GAAG;SACX,CAAA;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,kBAAe;IACb,SAAS;IACT,aAAa;IACb,eAAe;IACf,iBAAiB;CAClB,CAAA"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.PrismaSchemaParser = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
6
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
9
7
|
class PrismaSchemaParser {
|
|
10
8
|
constructor(basePath = process.cwd()) {
|
|
11
9
|
this.schemaContent = '';
|
|
@@ -51,15 +49,12 @@ class PrismaSchemaParser {
|
|
|
51
49
|
const fieldsContent = modelMatch[1].trim();
|
|
52
50
|
const fields = this.parseFields(fieldsContent);
|
|
53
51
|
// Transform parsed fields to include relationship info
|
|
54
|
-
return fields.map(field => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
isOptional: field.hasDefault || field.isOptional
|
|
61
|
-
});
|
|
62
|
-
});
|
|
52
|
+
return fields.map(field => ({
|
|
53
|
+
...field,
|
|
54
|
+
isRelation: !!field.relations || this.schemaContent.includes(`model ${field.type} {`),
|
|
55
|
+
isList: field.isList || (field.relations?.type === 'one-to-many' || field.relations?.type === 'many-to-many'),
|
|
56
|
+
isOptional: field.hasDefault || field.isOptional
|
|
57
|
+
}));
|
|
63
58
|
}
|
|
64
59
|
/**
|
|
65
60
|
* Parses field strings into structured field objects
|
|
@@ -136,10 +131,9 @@ class PrismaSchemaParser {
|
|
|
136
131
|
* Parses a relation decorator into a structured object
|
|
137
132
|
*/
|
|
138
133
|
parseRelation(relationString, isList) {
|
|
139
|
-
var _a;
|
|
140
134
|
try {
|
|
141
135
|
// Extract details from @relation(...) string
|
|
142
|
-
const relationDetails =
|
|
136
|
+
const relationDetails = relationString.match(/@relation\(([^)]+)\)/)?.[1].trim();
|
|
143
137
|
if (!relationDetails)
|
|
144
138
|
return undefined;
|
|
145
139
|
// Extract fields and references from the relation
|
|
@@ -258,3 +252,4 @@ class PrismaSchemaParser {
|
|
|
258
252
|
}
|
|
259
253
|
}
|
|
260
254
|
exports.PrismaSchemaParser = PrismaSchemaParser;
|
|
255
|
+
//# sourceMappingURL=prisma-schema-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-schema-parser.js","sourceRoot":"","sources":["../../src/utils/prisma-schema-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verifica se o projeto atual é um projeto Next.js
|
|
3
|
+
* @returns {boolean} true se for um projeto Next.js, false caso contrário
|
|
4
|
+
*/
|
|
5
|
+
export declare function isNextJSProject(projectPath?: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Verifica se o projeto possui uma pasta src
|
|
8
|
+
* @returns {boolean} true se a pasta src existir, false caso contrário
|
|
9
|
+
*/
|
|
10
|
+
export declare function hasSrcFolder(projectPath?: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Retorna o caminho base para o código da aplicação (src/ ou raiz)
|
|
13
|
+
* @returns {string} O caminho base do código
|
|
14
|
+
*/
|
|
15
|
+
export declare function getProjectBasePath(projectPath?: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Retorna o caminho correto para a API do Next.js (com ou sem pasta src)
|
|
18
|
+
* @returns {string} O caminho para a pasta de API
|
|
19
|
+
*/
|
|
20
|
+
export declare function getNextApiPath(projectPath?: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Supported package managers
|
|
23
|
+
*/
|
|
24
|
+
export type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun' | 'deno';
|
|
25
|
+
/**
|
|
26
|
+
* Detects the package manager used in the project
|
|
27
|
+
* Priority: packageManager field in package.json > lock files presence
|
|
28
|
+
* @param projectPath Path to the project root
|
|
29
|
+
* @returns The detected package manager or 'npm' as fallback
|
|
30
|
+
*/
|
|
31
|
+
export declare function getPackageManager(projectPath?: string): PackageManager;
|
|
32
|
+
export declare function getPackageManagerRunner(packageManager: 'bun' | 'npm' | 'yarn' | 'pnpm'): string;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isNextJSProject = isNextJSProject;
|
|
4
|
+
exports.hasSrcFolder = hasSrcFolder;
|
|
5
|
+
exports.getProjectBasePath = getProjectBasePath;
|
|
6
|
+
exports.getNextApiPath = getNextApiPath;
|
|
7
|
+
exports.getPackageManager = getPackageManager;
|
|
8
|
+
exports.getPackageManagerRunner = getPackageManagerRunner;
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
10
|
+
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
11
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
12
|
+
/**
|
|
13
|
+
* Verifica se o projeto atual é um projeto Next.js
|
|
14
|
+
* @returns {boolean} true se for um projeto Next.js, false caso contrário
|
|
15
|
+
*/
|
|
16
|
+
function isNextJSProject(projectPath = process.cwd()) {
|
|
17
|
+
try {
|
|
18
|
+
// Verifica se existe um package.json
|
|
19
|
+
const packageJsonPath = path_1.default.join(projectPath, 'package.json');
|
|
20
|
+
if (!fs_1.default.existsSync(packageJsonPath))
|
|
21
|
+
return false;
|
|
22
|
+
// Lê o package.json e verifica se há dependência do Next.js
|
|
23
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf8'));
|
|
24
|
+
// Verifica nas dependencies e devDependencies
|
|
25
|
+
const hasDependency = packageJson.dependencies?.next !== undefined;
|
|
26
|
+
const hasDevDependency = packageJson.devDependencies?.next !== undefined;
|
|
27
|
+
if (hasDependency || hasDevDependency)
|
|
28
|
+
return true;
|
|
29
|
+
// Verificações adicionais de estrutura Next.js
|
|
30
|
+
const possibleNextFiles = [
|
|
31
|
+
'next.config.js',
|
|
32
|
+
'next.config.mjs',
|
|
33
|
+
'next.config.ts',
|
|
34
|
+
path_1.default.join('src', 'app', 'layout.tsx'),
|
|
35
|
+
path_1.default.join('app', 'layout.tsx')
|
|
36
|
+
];
|
|
37
|
+
return possibleNextFiles.some(file => fs_1.default.existsSync(path_1.default.join(projectPath, file)));
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('Erro ao verificar se é um projeto Next.js:', error);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Verifica se o projeto possui uma pasta src
|
|
46
|
+
* @returns {boolean} true se a pasta src existir, false caso contrário
|
|
47
|
+
*/
|
|
48
|
+
function hasSrcFolder(projectPath = process.cwd()) {
|
|
49
|
+
try {
|
|
50
|
+
const srcPath = path_1.default.join(projectPath, 'src');
|
|
51
|
+
return fs_1.default.existsSync(srcPath) && fs_1.default.statSync(srcPath).isDirectory();
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error('Erro ao verificar a pasta src:', error);
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Retorna o caminho base para o código da aplicação (src/ ou raiz)
|
|
60
|
+
* @returns {string} O caminho base do código
|
|
61
|
+
*/
|
|
62
|
+
function getProjectBasePath(projectPath = process.cwd()) {
|
|
63
|
+
return hasSrcFolder(projectPath) ? path_1.default.join(projectPath, 'src') : projectPath;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Retorna o caminho correto para a API do Next.js (com ou sem pasta src)
|
|
67
|
+
* @returns {string} O caminho para a pasta de API
|
|
68
|
+
*/
|
|
69
|
+
function getNextApiPath(projectPath = process.cwd()) {
|
|
70
|
+
const basePath = getProjectBasePath(projectPath);
|
|
71
|
+
return path_1.default.join(basePath, 'app', 'api');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Detects the package manager used in the project
|
|
75
|
+
* Priority: packageManager field in package.json > lock files presence
|
|
76
|
+
* @param projectPath Path to the project root
|
|
77
|
+
* @returns The detected package manager or 'npm' as fallback
|
|
78
|
+
*/
|
|
79
|
+
function getPackageManager(projectPath = process.cwd()) {
|
|
80
|
+
try {
|
|
81
|
+
const packageJsonPath = path_1.default.join(projectPath, 'package.json');
|
|
82
|
+
// Check package.json packageManager field first
|
|
83
|
+
if (fs_1.default.existsSync(packageJsonPath)) {
|
|
84
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf8'));
|
|
85
|
+
if (packageJson.packageManager) {
|
|
86
|
+
const pm = packageJson.packageManager.split('@')[0];
|
|
87
|
+
if (pm === 'npm' || pm === 'yarn' || pm === 'pnpm' || pm === 'bun') {
|
|
88
|
+
return pm;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Check for lock files
|
|
93
|
+
const lockFiles = {
|
|
94
|
+
'bun.lockb': 'bun',
|
|
95
|
+
'yarn.lock': 'yarn',
|
|
96
|
+
'pnpm-lock.yaml': 'pnpm',
|
|
97
|
+
'package-lock.json': 'npm',
|
|
98
|
+
'deno.lock': 'deno'
|
|
99
|
+
};
|
|
100
|
+
for (const [lockFile, manager] of Object.entries(lockFiles)) {
|
|
101
|
+
if (fs_1.default.existsSync(path_1.default.join(projectPath, lockFile))) {
|
|
102
|
+
return manager;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Fallback to npm if no lock file is found
|
|
106
|
+
return 'npm';
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.error('Error detecting package manager:', error);
|
|
110
|
+
return 'npm';
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function getPackageManagerRunner(packageManager) {
|
|
114
|
+
// Check if the package manager is supported
|
|
115
|
+
const runners = {
|
|
116
|
+
npm: 'npx',
|
|
117
|
+
yarn: 'yarn',
|
|
118
|
+
pnpm: 'pnpx',
|
|
119
|
+
bun: 'bunx'
|
|
120
|
+
};
|
|
121
|
+
return runners[packageManager];
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=project-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-utils.js","sourceRoot":"","sources":["../../src/utils/project-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.TemplateHandler = void 0;
|
|
7
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const handlebars_1 = tslib_1.__importDefault(require("handlebars"));
|
|
8
6
|
const fs_1 = require("fs");
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
10
8
|
class TemplateHandler {
|
|
11
9
|
static render(templateName, data, customPath) {
|
|
12
10
|
if (!templateName.endsWith('.hbs')) {
|
|
@@ -31,3 +29,4 @@ class TemplateHandler {
|
|
|
31
29
|
}
|
|
32
30
|
exports.TemplateHandler = TemplateHandler;
|
|
33
31
|
TemplateHandler.templatesPath = path_1.default.join(__dirname, '..', 'templates');
|
|
32
|
+
//# sourceMappingURL=template-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-handler.js","sourceRoot":"","sources":["../../src/utils/template-handler.ts"],"names":[],"mappings":";;;;AAAA,oEAAoC;AACpC,2BAA4C;AAC5C,wDAAwB;AAExB,MAAa,eAAe;IAG1B,MAAM,CAAC,MAAM,CAAC,YAAoB,EAAE,IAAS,EAAE,UAAmB;QAChE,IAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,YAAY,GAAG,GAAG,YAAY,MAAM,CAAA;QACtC,CAAC;QAED,IAAG,UAAU,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,IAAA,iBAAY,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,oBAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE9B,mEAAmE;QACnE,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,GAAG,MAAM,CAAC;QACvB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,EAA6B;QAC/D,oBAAU,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;;AA5BH,0CA6BC;AA5BgB,6BAAa,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@igniter-js/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Igniter CLI for projects using Igniter Framework",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"homepage": "https://felipebarcelospro.github.io/igniter",
|
|
@@ -43,12 +43,14 @@
|
|
|
43
43
|
"commander": "^11.1.0",
|
|
44
44
|
"handlebars": "^4.7.8",
|
|
45
45
|
"inquirer": "^8.2.6",
|
|
46
|
+
"is-windows": "^1.0.2",
|
|
46
47
|
"ora": "^5.4.1",
|
|
47
48
|
"reflect-metadata": "^0.2.2",
|
|
48
49
|
"zod": "^3.23.8"
|
|
49
50
|
},
|
|
50
51
|
"devDependencies": {
|
|
51
52
|
"@types/inquirer": "^8.2.10",
|
|
53
|
+
"@types/is-windows": "^1.0.2",
|
|
52
54
|
"@types/node": "^20.10.2",
|
|
53
55
|
"@typescript-eslint/eslint-plugin": "^6.13.1",
|
|
54
56
|
"@typescript-eslint/parser": "^6.13.1",
|
package/readme.md
CHANGED
|
@@ -18,6 +18,7 @@ Code generation CLI for Igniter.js projects - the essential tool to boost produc
|
|
|
18
18
|
* **Framework Integration**: Seamlessly integrates with Next.js and the Igniter Framework
|
|
19
19
|
* **Developer Experience**: Intuitive commands and helpful error messages
|
|
20
20
|
* **Productivity Boost**: Automates repetitive tasks and enforces consistency
|
|
21
|
+
* **Cross-Platform**: Works seamlessly on Windows, macOS, and Linux
|
|
21
22
|
|
|
22
23
|
## 📦 Installation
|
|
23
24
|
|
|
@@ -32,9 +33,12 @@ npx @igniter-js/cli
|
|
|
32
33
|
## 🚀 Quick Start
|
|
33
34
|
|
|
34
35
|
```bash
|
|
35
|
-
# Initialize a new project with Igniter Framework
|
|
36
|
+
# Initialize a new project with Igniter Framework in the current directory
|
|
36
37
|
igniter init
|
|
37
38
|
|
|
39
|
+
# Initialize a new project in a specific directory
|
|
40
|
+
igniter init -d my-igniter-app
|
|
41
|
+
|
|
38
42
|
# Generate a new feature
|
|
39
43
|
igniter generate feature -n users
|
|
40
44
|
|
|
@@ -49,9 +53,16 @@ igniter generate feature
|
|
|
49
53
|
Initializes a new Next.js project with the complete Igniter Framework structure:
|
|
50
54
|
|
|
51
55
|
```bash
|
|
56
|
+
# Initialize in the current directory
|
|
52
57
|
igniter init
|
|
58
|
+
|
|
59
|
+
# Initialize in a specific directory (creates the directory if it doesn't exist)
|
|
60
|
+
igniter init -d my-igniter-app
|
|
53
61
|
```
|
|
54
62
|
|
|
63
|
+
Options:
|
|
64
|
+
- `-d, --dir <directory>`: Directory to initialize the project in
|
|
65
|
+
|
|
55
66
|
This command:
|
|
56
67
|
- Creates a Next.js application with TypeScript, Tailwind, and ESLint
|
|
57
68
|
- Sets up the recommended folder structure for Igniter Framework
|
|
@@ -121,6 +132,17 @@ src/
|
|
|
121
132
|
│ └── index.ts # Feature exports
|
|
122
133
|
```
|
|
123
134
|
|
|
135
|
+
## 🔄 Platform Compatibility
|
|
136
|
+
|
|
137
|
+
Igniter CLI is designed to work seamlessly across different platforms:
|
|
138
|
+
|
|
139
|
+
- **Windows**: Full compatibility with Windows command prompt and PowerShell
|
|
140
|
+
- **macOS/Linux**: Native support for Unix-based terminals
|
|
141
|
+
- **Path handling**: Automatic path normalization across different operating systems
|
|
142
|
+
- **Terminal output**: Adaptive terminal styling based on platform capabilities
|
|
143
|
+
|
|
144
|
+
The CLI automatically detects your operating system and adjusts its behavior accordingly to ensure a consistent experience.
|
|
145
|
+
|
|
124
146
|
## 🔧 Advanced Configuration
|
|
125
147
|
|
|
126
148
|
The Igniter CLI can be configured through environment variables:
|