@ijuantm/simpl-addon 1.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/install.js +34 -9
- package/package.json +1 -1
package/install.js
CHANGED
|
@@ -56,6 +56,19 @@ const downloadFile = (url, dest) => new Promise((resolve, reject) => {
|
|
|
56
56
|
});
|
|
57
57
|
});
|
|
58
58
|
|
|
59
|
+
const getSimplVersion = () => {
|
|
60
|
+
const simplFile = path.join(process.cwd(), '.simpl');
|
|
61
|
+
|
|
62
|
+
if (!fs.existsSync(simplFile)) throw new Error('Not a Simpl project. Missing .simpl file in current directory.');
|
|
63
|
+
|
|
64
|
+
const content = fs.readFileSync(simplFile, 'utf8');
|
|
65
|
+
const config = JSON.parse(content);
|
|
66
|
+
|
|
67
|
+
if (!config.version) throw new Error('Invalid .simpl file: missing version field');
|
|
68
|
+
|
|
69
|
+
return config.version;
|
|
70
|
+
};
|
|
71
|
+
|
|
59
72
|
const showHelp = () => {
|
|
60
73
|
console.log();
|
|
61
74
|
log(` ╭${'─'.repeat(62)}╮`);
|
|
@@ -63,13 +76,12 @@ const showHelp = () => {
|
|
|
63
76
|
log(` ╰${'─'.repeat(62)}╯`);
|
|
64
77
|
console.log();
|
|
65
78
|
log(` ${COLORS.bold}Usage:${COLORS.reset}`, 'blue');
|
|
66
|
-
log(` ${COLORS.dim}npx @ijuantm/simpl-addon <addon-name
|
|
67
|
-
log(` ${COLORS.dim}npx @ijuantm/simpl-addon --list
|
|
79
|
+
log(` ${COLORS.dim}npx @ijuantm/simpl-addon <addon-name>${COLORS.reset}`);
|
|
80
|
+
log(` ${COLORS.dim}npx @ijuantm/simpl-addon --list${COLORS.reset}`);
|
|
68
81
|
log(` ${COLORS.dim}npx @ijuantm/simpl-addon --help${COLORS.reset}`);
|
|
69
82
|
console.log();
|
|
70
83
|
log(` ${COLORS.bold}Arguments:${COLORS.reset}`, 'blue');
|
|
71
84
|
log(` ${COLORS.dim}addon-name${COLORS.reset} Name of the add-on to install`);
|
|
72
|
-
log(` ${COLORS.dim}version${COLORS.reset} Framework version (default: latest)`);
|
|
73
85
|
console.log();
|
|
74
86
|
log(` ${COLORS.bold}Commands:${COLORS.reset}`, 'blue');
|
|
75
87
|
log(` ${COLORS.dim}--list, -l${COLORS.reset} List all available add-ons`);
|
|
@@ -77,22 +89,25 @@ const showHelp = () => {
|
|
|
77
89
|
console.log();
|
|
78
90
|
log(` ${COLORS.bold}Examples:${COLORS.reset}`, 'blue');
|
|
79
91
|
log(` ${COLORS.dim}npx @ijuantm/simpl-addon auth${COLORS.reset}`);
|
|
80
|
-
log(` ${COLORS.dim}npx @ijuantm/simpl-addon auth 1.5.0${COLORS.reset}`);
|
|
81
92
|
log(` ${COLORS.dim}npx @ijuantm/simpl-addon --list${COLORS.reset}`);
|
|
82
93
|
console.log();
|
|
94
|
+
log(` ${COLORS.bold}Note:${COLORS.reset}`, 'blue');
|
|
95
|
+
log(` Run this command from the root of your Simpl project.`);
|
|
96
|
+
log(` The add-on version will match your Simpl framework version.`);
|
|
97
|
+
console.log();
|
|
83
98
|
};
|
|
84
99
|
|
|
85
100
|
const listAddons = async (version) => {
|
|
86
101
|
console.log();
|
|
87
102
|
log(` ╭${'─'.repeat(62)}╮`);
|
|
88
|
-
log(` │ ${COLORS.bold}Available Add-ons${COLORS.reset} ${COLORS.dim}(${version})${COLORS.reset}${' '.repeat(
|
|
103
|
+
log(` │ ${COLORS.bold}Available Add-ons${COLORS.reset} ${COLORS.dim}(${version})${COLORS.reset}${' '.repeat(40 - version.length)}│`);
|
|
89
104
|
log(` ╰${'─'.repeat(62)}╯`);
|
|
90
105
|
console.log();
|
|
91
106
|
log(' 📦 Fetching available add-ons...', 'bold');
|
|
92
107
|
|
|
93
108
|
try {
|
|
94
109
|
const response = await fetchUrl(`${CDN_BASE}/${version}/add-ons/list.json`);
|
|
95
|
-
const addons = JSON.parse(response)['add-ons'];
|
|
110
|
+
const addons = JSON.parse(String(response))['add-ons'];
|
|
96
111
|
|
|
97
112
|
console.log();
|
|
98
113
|
|
|
@@ -353,19 +368,29 @@ const main = async () => {
|
|
|
353
368
|
process.exit(0);
|
|
354
369
|
}
|
|
355
370
|
|
|
371
|
+
let version;
|
|
372
|
+
|
|
373
|
+
try {
|
|
374
|
+
version = getSimplVersion();
|
|
375
|
+
} catch (error) {
|
|
376
|
+
console.log();
|
|
377
|
+
log(` ${COLORS.red}✗${COLORS.reset} ${error.message}`, 'red');
|
|
378
|
+
console.log();
|
|
379
|
+
|
|
380
|
+
process.exit(1);
|
|
381
|
+
}
|
|
382
|
+
|
|
356
383
|
if (firstArg === '--list' || firstArg === '-l') {
|
|
357
|
-
const version = args[1] || 'latest';
|
|
358
384
|
await listAddons(version);
|
|
359
385
|
|
|
360
386
|
process.exit(0);
|
|
361
387
|
}
|
|
362
388
|
|
|
363
389
|
const addonName = firstArg;
|
|
364
|
-
const version = args[1] || 'latest';
|
|
365
390
|
|
|
366
391
|
console.log();
|
|
367
392
|
log(` ╭${'─'.repeat(62)}╮`);
|
|
368
|
-
log(` │ ${COLORS.bold}Installing Add-on: ${COLORS.cyan}${addonName}${COLORS.reset} ${COLORS.dim}(${version})${COLORS.reset}${' '.repeat(
|
|
393
|
+
log(` │ ${COLORS.bold}Installing Add-on: ${COLORS.cyan}${addonName}${COLORS.reset} ${COLORS.dim}(${version})${COLORS.reset}${' '.repeat(38 - addonName.length - version.length)}│`);
|
|
369
394
|
log(` ╰${'─'.repeat(62)}╯`);
|
|
370
395
|
console.log();
|
|
371
396
|
log(' 📦 Downloading add-on...', 'bold');
|