@signageos/cli 2.3.1 → 2.4.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/README.md +54 -19
- package/dist/Applet/Build/appletBuildCommand.js +28 -72
- package/dist/Applet/Generate/Templates/CHANGELOG.md.template +7 -0
- package/dist/Applet/Generate/Templates/README.md.template +3 -0
- package/dist/Applet/Generate/Templates/rspack.config.mjs.template +12 -12
- package/dist/Applet/Generate/appletGenerateCommand.d.ts +23 -62
- package/dist/Applet/Generate/appletGenerateCommand.js +432 -365
- package/dist/Applet/Start/appletStartCommand.js +70 -132
- package/dist/Applet/Test/Upload/appletTestRunCommand.js +90 -178
- package/dist/Applet/Test/Upload/appletTestRunFacade.js +5 -29
- package/dist/Applet/Test/Upload/appletTestUploadCommand.js +99 -224
- package/dist/Applet/Test/Upload/appletTestUploadFacade.js +51 -105
- package/dist/Applet/Test/appletTestCommand.js +6 -36
- package/dist/Applet/Upload/appletUploadCommand.js +199 -305
- package/dist/Applet/Upload/appletUploadCommandHelper.js +129 -144
- package/dist/Applet/Upload/appletUploadFacade.d.ts +2 -2
- package/dist/Applet/Upload/appletUploadFacade.js +184 -265
- package/dist/Applet/Upload/appletUploadFacadeHelper.js +51 -55
- package/dist/Applet/appletCommand.d.ts +25 -157
- package/dist/Applet/appletCommand.js +9 -39
- package/dist/Applet/appletErrors.js +5 -24
- package/dist/Applet/appletFacade.js +122 -147
- package/dist/Applet/appletServerHelper.js +18 -55
- package/dist/Auth/loginCommand.d.ts +2 -2
- package/dist/Auth/loginCommand.js +105 -136
- package/dist/Cache/tmpCache.js +47 -16
- package/dist/Cli/helper.js +3 -5
- package/dist/Cli/packageVersion.js +99 -131
- package/dist/Command/Autocomplete/Install/installAutocompleteCommand.d.ts +10 -0
- package/dist/Command/Autocomplete/Install/installAutocompleteCommand.js +39 -0
- package/dist/Command/Autocomplete/Install/installAutocompleteCommand.ts +30 -0
- package/dist/Command/Autocomplete/Install/sos-completion.sh +63 -0
- package/dist/Command/Autocomplete/Uninstall/uninstallAutocompleteCommand.d.ts +8 -0
- package/dist/Command/Autocomplete/Uninstall/uninstallAutocompleteCommand.js +120 -0
- package/dist/Command/Autocomplete/autocompleteCommand.d.ts +22 -0
- package/dist/Command/Autocomplete/autocompleteCommand.js +32 -0
- package/dist/Command/autoComplete.d.ts +4 -0
- package/dist/Command/autoComplete.js +184 -0
- package/dist/Command/commandDefinition.d.ts +9 -9
- package/dist/Command/commandDefinition.js +1 -3
- package/dist/Command/commandProcessor.js +41 -131
- package/dist/Command/globalArgs.js +9 -8
- package/dist/CommandLine/IProgressBar.js +0 -1
- package/dist/CommandLine/progressBarFactory.d.ts +1 -1
- package/dist/CommandLine/progressBarFactory.js +42 -13
- package/dist/CustomScript/Generate/customScriptGenerateCommand.js +17 -56
- package/dist/CustomScript/Generate/customScriptGenerateFacade.js +94 -109
- package/dist/CustomScript/Upload/customScriptUploadCommand.js +44 -120
- package/dist/CustomScript/customScriptCommand.d.ts +1 -9
- package/dist/CustomScript/customScriptCommand.js +6 -36
- package/dist/CustomScript/customScriptFacade.d.ts +2 -2
- package/dist/CustomScript/customScriptFacade.js +187 -297
- package/dist/Device/Connect/connectCommand.js +73 -137
- package/dist/Device/Content/setContentCommand.js +33 -78
- package/dist/Device/PowerAction/powerActionCommand.js +22 -65
- package/dist/Device/deviceCommand.js +7 -37
- package/dist/Device/deviceFacade.js +71 -127
- package/dist/Emulator/IEmulator.js +0 -1
- package/dist/Emulator/createDomain.d.ts +0 -1
- package/dist/Emulator/createDomain.js +44 -14
- package/dist/Emulator/emulatorFacade.js +75 -133
- package/dist/Emulator/emulatorFactory.js +123 -126
- package/dist/Firmware/Upload/firmwareUploadCommand.js +133 -221
- package/dist/Firmware/Upload/firmwareUploadFacade.js +75 -112
- package/dist/Firmware/Upload/firmwareUploadHelper.js +38 -6
- package/dist/Firmware/firmwareCommand.js +5 -35
- package/dist/Lib/archive.js +56 -62
- package/dist/Lib/childProcess.js +37 -5
- package/dist/Lib/fileSystem.js +76 -87
- package/dist/Lib/git.d.ts +1 -1
- package/dist/Lib/git.js +58 -87
- package/dist/Organization/Get/organizationGetCommand.js +14 -50
- package/dist/Organization/List/organizationListCommand.js +12 -46
- package/dist/Organization/SetDefault/organizationSetDefaultCommand.js +18 -56
- package/dist/Organization/organizationCommand.js +7 -37
- package/dist/Organization/organizationFacade.js +102 -177
- package/dist/RunControl/runControlHelper.js +14 -64
- package/dist/Timer/wait.js +2 -3
- package/dist/Timing/List/timingListCommand.js +20 -62
- package/dist/Timing/timingCommand.js +5 -35
- package/dist/generalCommand.js +1 -2
- package/dist/helper.d.ts +4 -4
- package/dist/helper.js +61 -122
- package/dist/index.js +19 -46
- package/dist/parameters.js +17 -40
- package/package.json +52 -57
- package/dist/Applet/Build/appletBuildCommand.js.map +0 -1
- package/dist/Applet/Generate/appletGenerateCommand.js.map +0 -1
- package/dist/Applet/Start/appletStartCommand.js.map +0 -1
- package/dist/Applet/Test/Upload/appletTestRunCommand.js.map +0 -1
- package/dist/Applet/Test/Upload/appletTestRunFacade.js.map +0 -1
- package/dist/Applet/Test/Upload/appletTestUploadCommand.js.map +0 -1
- package/dist/Applet/Test/Upload/appletTestUploadFacade.js.map +0 -1
- package/dist/Applet/Test/appletTestCommand.js.map +0 -1
- package/dist/Applet/Upload/appletUploadCommand.js.map +0 -1
- package/dist/Applet/Upload/appletUploadCommandHelper.js.map +0 -1
- package/dist/Applet/Upload/appletUploadFacade.js.map +0 -1
- package/dist/Applet/Upload/appletUploadFacadeHelper.js.map +0 -1
- package/dist/Applet/appletCommand.js.map +0 -1
- package/dist/Applet/appletErrors.js.map +0 -1
- package/dist/Applet/appletFacade.js.map +0 -1
- package/dist/Applet/appletServerHelper.js.map +0 -1
- package/dist/Auth/loginCommand.js.map +0 -1
- package/dist/Cache/tmpCache.js.map +0 -1
- package/dist/Cli/helper.js.map +0 -1
- package/dist/Cli/packageVersion.js.map +0 -1
- package/dist/Command/commandDefinition.js.map +0 -1
- package/dist/Command/commandProcessor.js.map +0 -1
- package/dist/Command/globalArgs.js.map +0 -1
- package/dist/CommandLine/IProgressBar.js.map +0 -1
- package/dist/CommandLine/progressBarFactory.js.map +0 -1
- package/dist/CustomScript/Generate/customScriptGenerateCommand.js.map +0 -1
- package/dist/CustomScript/Generate/customScriptGenerateFacade.js.map +0 -1
- package/dist/CustomScript/Upload/customScriptUploadCommand.js.map +0 -1
- package/dist/CustomScript/customScriptCommand.js.map +0 -1
- package/dist/CustomScript/customScriptFacade.js.map +0 -1
- package/dist/Device/Connect/connectCommand.js.map +0 -1
- package/dist/Device/Content/setContentCommand.js.map +0 -1
- package/dist/Device/PowerAction/powerActionCommand.js.map +0 -1
- package/dist/Device/deviceCommand.js.map +0 -1
- package/dist/Device/deviceFacade.js.map +0 -1
- package/dist/Emulator/IEmulator.js.map +0 -1
- package/dist/Emulator/createDomain.js.map +0 -1
- package/dist/Emulator/emulatorFacade.js.map +0 -1
- package/dist/Emulator/emulatorFactory.js.map +0 -1
- package/dist/Firmware/Upload/firmwareUploadCommand.js.map +0 -1
- package/dist/Firmware/Upload/firmwareUploadFacade.js.map +0 -1
- package/dist/Firmware/Upload/firmwareUploadHelper.js.map +0 -1
- package/dist/Firmware/firmwareCommand.js.map +0 -1
- package/dist/Lib/archive.js.map +0 -1
- package/dist/Lib/childProcess.js.map +0 -1
- package/dist/Lib/fileSystem.js.map +0 -1
- package/dist/Lib/git.js.map +0 -1
- package/dist/Organization/Get/organizationGetCommand.js.map +0 -1
- package/dist/Organization/List/organizationListCommand.js.map +0 -1
- package/dist/Organization/SetDefault/organizationSetDefaultCommand.js.map +0 -1
- package/dist/Organization/organizationCommand.js.map +0 -1
- package/dist/Organization/organizationFacade.js.map +0 -1
- package/dist/RunControl/runControlHelper.js.map +0 -1
- package/dist/Timer/wait.js.map +0 -1
- package/dist/Timing/List/timingListCommand.js.map +0 -1
- package/dist/Timing/timingCommand.js.map +0 -1
- package/dist/generalCommand.js.map +0 -1
- package/dist/helper.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/parameters.js.map +0 -1
|
@@ -1,15 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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);
|
|
10
26
|
};
|
|
11
|
-
return
|
|
12
|
-
|
|
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
|
+
})();
|
|
13
35
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
36
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
37
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -19,79 +41,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
19
41
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
42
|
});
|
|
21
43
|
};
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
50
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
51
|
-
if (!m) return o;
|
|
52
|
-
var i = m.call(o), r, ar = [], e;
|
|
53
|
-
try {
|
|
54
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
55
|
-
}
|
|
56
|
-
catch (error) { e = { error: error }; }
|
|
57
|
-
finally {
|
|
58
|
-
try {
|
|
59
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
60
|
-
}
|
|
61
|
-
finally { if (e) throw e.error; }
|
|
62
|
-
}
|
|
63
|
-
return ar;
|
|
64
|
-
};
|
|
65
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
66
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
67
|
-
if (ar || !(i in from)) {
|
|
68
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
69
|
-
ar[i] = from[i];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
73
|
-
};
|
|
74
|
-
var __values = (this && this.__values) || function(o) {
|
|
75
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
76
|
-
if (m) return m.call(o);
|
|
77
|
-
if (o && typeof o.length === "number") return {
|
|
78
|
-
next: function () {
|
|
79
|
-
if (o && i >= o.length) o = void 0;
|
|
80
|
-
return { value: o && o[i++], done: !o };
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
84
46
|
};
|
|
85
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
86
48
|
exports.appletGenerate = void 0;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
49
|
+
const fs = __importStar(require("fs-extra"));
|
|
50
|
+
const child_process = __importStar(require("child_process"));
|
|
51
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
52
|
+
const path = __importStar(require("path"));
|
|
53
|
+
const prompts_1 = __importDefault(require("prompts"));
|
|
54
|
+
const log_1 = require("@signageos/sdk/dist/Console/log");
|
|
55
|
+
const git_1 = require("../../Lib/git");
|
|
56
|
+
const commandDefinition_1 = require("../../Command/commandDefinition");
|
|
57
|
+
const which_1 = __importDefault(require("which"));
|
|
95
58
|
var Language;
|
|
96
59
|
(function (Language) {
|
|
97
60
|
Language["JavaScript"] = "javascript";
|
|
@@ -107,35 +70,48 @@ var GitOptions;
|
|
|
107
70
|
GitOptions["No"] = "no";
|
|
108
71
|
GitOptions["Yes"] = "yes";
|
|
109
72
|
})(GitOptions || (GitOptions = {}));
|
|
110
|
-
var
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
73
|
+
var Packager;
|
|
74
|
+
(function (Packager) {
|
|
75
|
+
Packager["Npm"] = "npm";
|
|
76
|
+
Packager["Pnpm"] = "pnpm";
|
|
77
|
+
Packager["Yarn"] = "yarn";
|
|
78
|
+
Packager["Bun"] = "bun";
|
|
79
|
+
})(Packager || (Packager = {}));
|
|
80
|
+
const NAME_REGEXP = /^\w(\w|\d|-)*\w$/;
|
|
81
|
+
let PACKAGER_EXECUTABLE = 'npm';
|
|
82
|
+
const OPTION_LIST = [
|
|
83
|
+
{ name: 'name', type: String, description: `Applet name. Match RegExp: ${NAME_REGEXP.toString()}` },
|
|
84
|
+
{ name: 'applet-version', type: String, description: 'Applet initial version. Use semantic version', defaultValue: '0.0.0' },
|
|
115
85
|
{ name: 'target-dir', type: String, description: 'Directory where will be the applet generated to' },
|
|
116
|
-
{ name: '
|
|
117
|
-
{ name: '
|
|
118
|
-
{ name: '
|
|
119
|
-
{ name: '
|
|
86
|
+
{ name: 'git', type: String, description: 'Init applet as git repository "no" (default) or "yes"' },
|
|
87
|
+
{ name: 'packager', type: String, description: 'Use preferred package manager "npm" (default), "pnpm", "yarn" or "bun"' },
|
|
88
|
+
{ name: 'npm-registry', type: String, description: 'NPM registry URL. If you have your private npm registry' },
|
|
89
|
+
{ name: 'language', type: String, description: 'Generate applet with "typescript" or "javascript" source code' },
|
|
90
|
+
{ name: 'bundler', type: String, description: 'Generate applet with "webpack" (default) or "rspack"' },
|
|
120
91
|
];
|
|
121
|
-
|
|
92
|
+
const DEPENDENCIES = {
|
|
122
93
|
common: [
|
|
123
94
|
'@signageos/front-applet@latest',
|
|
124
|
-
'@signageos/front-display@
|
|
95
|
+
'@signageos/front-display@latest',
|
|
125
96
|
'@signageos/webpack-plugin@latest',
|
|
126
|
-
'es-check@
|
|
97
|
+
'es-check@9',
|
|
127
98
|
/* required for transpilation to ES5 */
|
|
99
|
+
'css-loader@7',
|
|
100
|
+
'style-loader@4',
|
|
101
|
+
'core-js@3',
|
|
102
|
+
],
|
|
103
|
+
webpack: [
|
|
104
|
+
'webpack@5',
|
|
105
|
+
'webpack-cli@6',
|
|
106
|
+
'webpack-dev-server@5',
|
|
107
|
+
'html-webpack-plugin@5',
|
|
108
|
+
'babel-loader@10',
|
|
128
109
|
'@babel/core@7',
|
|
129
110
|
'@babel/preset-env@7',
|
|
130
|
-
'babel-loader@8',
|
|
131
|
-
'css-loader@6',
|
|
132
|
-
'style-loader@3',
|
|
133
|
-
'core-js@3',
|
|
134
111
|
],
|
|
135
|
-
webpack: ['webpack@5', 'webpack-cli@4', 'webpack-dev-server@4', 'html-webpack-plugin@5'],
|
|
136
112
|
rspack: ['@rspack/core@latest', '@rspack/cli@latest'],
|
|
137
113
|
};
|
|
138
|
-
|
|
114
|
+
const RUNSCRIPTS = {
|
|
139
115
|
common: {
|
|
140
116
|
prepare: 'npm run clean && npm run build',
|
|
141
117
|
upload: 'sos applet upload',
|
|
@@ -160,7 +136,7 @@ var RUNSCRIPTS = {
|
|
|
160
136
|
* @returns string
|
|
161
137
|
* @throws Will throw an error if the file does not exist
|
|
162
138
|
*/
|
|
163
|
-
|
|
139
|
+
const importFileAsString = (relativePath) => {
|
|
164
140
|
return fs.readFileSync(path.resolve(__dirname, relativePath), 'utf-8');
|
|
165
141
|
};
|
|
166
142
|
/**
|
|
@@ -176,6 +152,7 @@ var importFileAsString = function (relativePath) {
|
|
|
176
152
|
* @param {string} options.language - The language of the applet (typescript or javascript)
|
|
177
153
|
* @param {string} options.bundler - The bundler to use (webpack or rspack)
|
|
178
154
|
* @param {string} options.git - Whether to initialize a git repository (yes or no)
|
|
155
|
+
* @param {string} options.packager - Whether to manage packages with npm, pnpm, bun or yarn
|
|
179
156
|
* @returns {Promise<void>} - A promise that resolves when the applet is generated
|
|
180
157
|
* @example
|
|
181
158
|
* appletGenerate.run({
|
|
@@ -193,277 +170,368 @@ exports.appletGenerate = (0, commandDefinition_1.createCommandDefinition)({
|
|
|
193
170
|
description: 'Generate basic applet sample',
|
|
194
171
|
optionList: OPTION_LIST,
|
|
195
172
|
commands: [],
|
|
196
|
-
run
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
content: 'node_modules/\n./dist',
|
|
370
|
-
});
|
|
371
|
-
_j.label = 12;
|
|
372
|
-
case 12:
|
|
373
|
-
_j.trys.push([12, 14, , 15]);
|
|
374
|
-
return [4 /*yield*/, (0, git_1.initGitRepository)(appletRootDirectory)];
|
|
375
|
-
case 13:
|
|
376
|
-
_j.sent();
|
|
377
|
-
return [3 /*break*/, 15];
|
|
378
|
-
case 14:
|
|
379
|
-
error_1 = _j.sent();
|
|
380
|
-
console.error("Git repository initialization failed: ".concat(error_1));
|
|
381
|
-
return [3 /*break*/, 15];
|
|
382
|
-
case 15:
|
|
383
|
-
_j.trys.push([15, 21, 22, 23]);
|
|
384
|
-
generateFiles_1 = __values(generateFiles), generateFiles_1_1 = generateFiles_1.next();
|
|
385
|
-
_j.label = 16;
|
|
386
|
-
case 16:
|
|
387
|
-
if (!!generateFiles_1_1.done) return [3 /*break*/, 20];
|
|
388
|
-
generateFile = generateFiles_1_1.value;
|
|
389
|
-
return [4 /*yield*/, fs.ensureDir(path.dirname(generateFile.path))];
|
|
390
|
-
case 17:
|
|
391
|
-
_j.sent();
|
|
392
|
-
return [4 /*yield*/, fs.writeFile(generateFile.path, generateFile.content)];
|
|
393
|
-
case 18:
|
|
394
|
-
_j.sent();
|
|
395
|
-
_j.label = 19;
|
|
396
|
-
case 19:
|
|
397
|
-
generateFiles_1_1 = generateFiles_1.next();
|
|
398
|
-
return [3 /*break*/, 16];
|
|
399
|
-
case 20: return [3 /*break*/, 23];
|
|
400
|
-
case 21:
|
|
401
|
-
e_1_1 = _j.sent();
|
|
402
|
-
e_1 = { error: e_1_1 };
|
|
403
|
-
return [3 /*break*/, 23];
|
|
404
|
-
case 22:
|
|
405
|
-
try {
|
|
406
|
-
if (generateFiles_1_1 && !generateFiles_1_1.done && (_h = generateFiles_1.return)) _h.call(generateFiles_1);
|
|
407
|
-
}
|
|
408
|
-
finally { if (e_1) throw e_1.error; }
|
|
409
|
-
return [7 /*endfinally*/];
|
|
410
|
-
case 23:
|
|
411
|
-
// Install dependencies
|
|
412
|
-
console.log('Installing dependencies:\n', mergedDeps);
|
|
413
|
-
process.chdir(appletRootDirectory);
|
|
414
|
-
child = child_process.spawn(NPM_EXECUTABLE, __spreadArray(['install', '--save-dev'], __read(mergedDeps), false), {
|
|
415
|
-
stdio: 'inherit',
|
|
416
|
-
shell: true,
|
|
417
|
-
});
|
|
418
|
-
child.on('close', function () {
|
|
419
|
-
(0, log_1.log)('info', "\nApplet ".concat(chalk_1.default.green(appletName), " created!"));
|
|
420
|
-
(0, log_1.log)('info', "use: cd ".concat(chalk_1.default.green(appletRootDirectoryName), " and ").concat(chalk_1.default.green('npm start'), "\n"));
|
|
421
|
-
});
|
|
422
|
-
return [2 /*return*/];
|
|
173
|
+
run(options) {
|
|
174
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
175
|
+
const currentDirectory = process.cwd();
|
|
176
|
+
// Detect if the command has been called with optional parameters
|
|
177
|
+
const excludedKeys = ['command', 'applet-version'];
|
|
178
|
+
const argumentsFound = Object.entries(options)
|
|
179
|
+
.filter(([key, _value]) => !excludedKeys.includes(key))
|
|
180
|
+
.map(([key, value]) => ({ [key]: value })).length > 0;
|
|
181
|
+
console.info('sOS CLI started with params:', options);
|
|
182
|
+
// Create file index
|
|
183
|
+
const generateFiles = [];
|
|
184
|
+
// PROMPT: Applet Name
|
|
185
|
+
let appletName = typeof options.name === 'string' ? options.name : undefined;
|
|
186
|
+
if (!appletName) {
|
|
187
|
+
const response = yield (0, prompts_1.default)({
|
|
188
|
+
type: 'text',
|
|
189
|
+
name: 'name',
|
|
190
|
+
message: `Type applet name`,
|
|
191
|
+
});
|
|
192
|
+
appletName = response.name;
|
|
193
|
+
}
|
|
194
|
+
if (!appletName) {
|
|
195
|
+
throw new Error(`Missing argument --name <string>`);
|
|
196
|
+
}
|
|
197
|
+
if (!NAME_REGEXP.test(appletName)) {
|
|
198
|
+
throw new Error(`Name has to start and end with a character (a-zA-Z0-9_)\nRegExp: ${NAME_REGEXP.toString()}`);
|
|
199
|
+
}
|
|
200
|
+
// PROMPT: Language select
|
|
201
|
+
let language;
|
|
202
|
+
if (options.language === undefined) {
|
|
203
|
+
const response = yield (0, prompts_1.default)({
|
|
204
|
+
type: 'select',
|
|
205
|
+
name: 'language',
|
|
206
|
+
message: `Select language of generated applet`,
|
|
207
|
+
choices: [
|
|
208
|
+
{ title: Language.TypeScript, value: Language.TypeScript },
|
|
209
|
+
{ title: Language.JavaScript, value: Language.JavaScript },
|
|
210
|
+
],
|
|
211
|
+
});
|
|
212
|
+
language = response.language;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
language = typeof options.language === 'string' ? options.language.toLowerCase() : Language.TypeScript;
|
|
216
|
+
}
|
|
217
|
+
checkSupport('language', language, Object.values(Language));
|
|
218
|
+
// PROMPT: Git support select
|
|
219
|
+
let git;
|
|
220
|
+
const gitFound = yield (0, which_1.default)('git', { nothrow: true });
|
|
221
|
+
if (!gitFound) {
|
|
222
|
+
console.error(`Git not found on this machine`);
|
|
223
|
+
}
|
|
224
|
+
// PROMPT: Skip prompt if git was not found
|
|
225
|
+
if (options.git === undefined && gitFound && !argumentsFound) {
|
|
226
|
+
const response = yield (0, prompts_1.default)({
|
|
227
|
+
type: 'select',
|
|
228
|
+
name: 'git',
|
|
229
|
+
message: `Init applet as git repository`,
|
|
230
|
+
choices: [
|
|
231
|
+
{ title: GitOptions.No, value: GitOptions.No },
|
|
232
|
+
{ title: GitOptions.Yes, value: GitOptions.Yes },
|
|
233
|
+
],
|
|
234
|
+
});
|
|
235
|
+
git = response.git;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
git = typeof options.git === 'string' ? options.git.toLowerCase() : GitOptions.No;
|
|
239
|
+
}
|
|
240
|
+
checkSupport('git', git, Object.values(GitOptions));
|
|
241
|
+
// PROMPT: Bundler select
|
|
242
|
+
let bundler;
|
|
243
|
+
if (options.bundler === undefined) {
|
|
244
|
+
const response = yield (0, prompts_1.default)({
|
|
245
|
+
type: 'select',
|
|
246
|
+
name: 'bundler',
|
|
247
|
+
message: `Select bundler of generated applet`,
|
|
248
|
+
choices: [
|
|
249
|
+
{ title: Bundler.Webpack, value: Bundler.Webpack },
|
|
250
|
+
{ title: Bundler.Rspack, value: Bundler.Rspack },
|
|
251
|
+
],
|
|
252
|
+
});
|
|
253
|
+
bundler = response.bundler;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
bundler = typeof options.bundler === 'string' ? options.bundler.toLowerCase() : Bundler.Webpack;
|
|
257
|
+
}
|
|
258
|
+
checkSupport('bundler', bundler, Object.values(Bundler));
|
|
259
|
+
const targetDir = typeof options['target-dir'] === 'string' ? options['target-dir'] : undefined;
|
|
260
|
+
const appletRootDirectory = targetDir || path.join(currentDirectory, appletName);
|
|
261
|
+
const appletRootDirectoryName = targetDir || appletName;
|
|
262
|
+
// Merge dependencies
|
|
263
|
+
const mergedDeps = [...DEPENDENCIES.common];
|
|
264
|
+
switch (bundler) {
|
|
265
|
+
case Bundler.Rspack:
|
|
266
|
+
mergedDeps.push(...DEPENDENCIES.rspack);
|
|
267
|
+
break;
|
|
268
|
+
case Bundler.Webpack:
|
|
269
|
+
mergedDeps.push(...DEPENDENCIES.webpack);
|
|
270
|
+
break;
|
|
271
|
+
default:
|
|
272
|
+
console.warn(`Unknown bundler ${bundler}. No additional dependencies added.`);
|
|
273
|
+
}
|
|
274
|
+
// PROMPT: Package manager select
|
|
275
|
+
let packager;
|
|
276
|
+
if (options.packager === undefined) {
|
|
277
|
+
const response = yield (0, prompts_1.default)({
|
|
278
|
+
type: 'select',
|
|
279
|
+
name: 'packager',
|
|
280
|
+
message: `Select preferred package manager`,
|
|
281
|
+
choices: [
|
|
282
|
+
{ title: Packager.Npm, value: Packager.Npm },
|
|
283
|
+
{ title: Packager.Pnpm, value: Packager.Pnpm },
|
|
284
|
+
{ title: Packager.Yarn, value: Packager.Yarn },
|
|
285
|
+
{ title: Packager.Bun, value: Packager.Bun },
|
|
286
|
+
],
|
|
287
|
+
});
|
|
288
|
+
packager = response.packager;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
packager = typeof options.packager === 'string' ? options.packager.toLowerCase() : Packager.Npm;
|
|
292
|
+
}
|
|
293
|
+
checkSupport('packager', packager, Object.values(Packager));
|
|
294
|
+
switch (packager) {
|
|
295
|
+
case Packager.Pnpm:
|
|
296
|
+
PACKAGER_EXECUTABLE = 'pnpm';
|
|
297
|
+
RUNSCRIPTS.common = {
|
|
298
|
+
prepare: 'pnpm run clean && pnpm run build',
|
|
299
|
+
upload: 'sos applet upload',
|
|
300
|
+
clean: 'pnpx rimraf dist',
|
|
301
|
+
escheck: 'pnpx es-check --module es5 "./dist/**/*.js"',
|
|
302
|
+
postbuild: 'pnpm run escheck',
|
|
303
|
+
};
|
|
304
|
+
break;
|
|
305
|
+
case Packager.Yarn:
|
|
306
|
+
PACKAGER_EXECUTABLE = 'yarn';
|
|
307
|
+
RUNSCRIPTS.common = {
|
|
308
|
+
prepare: 'yarn run clean && yarn run build',
|
|
309
|
+
upload: 'sos applet upload',
|
|
310
|
+
clean: 'npx rimraf dist',
|
|
311
|
+
escheck: 'npx es-check --module es5 "./dist/**/*.js"',
|
|
312
|
+
postbuild: 'npm run escheck',
|
|
313
|
+
};
|
|
314
|
+
break;
|
|
315
|
+
case Packager.Bun:
|
|
316
|
+
PACKAGER_EXECUTABLE = 'bun';
|
|
317
|
+
RUNSCRIPTS.common = {
|
|
318
|
+
prepare: 'bun run clean && bun run build',
|
|
319
|
+
upload: 'sos applet upload',
|
|
320
|
+
clean: 'bunx rimraf dist',
|
|
321
|
+
escheck: 'bunx es-check --module es5 "./dist/**/*.js"',
|
|
322
|
+
postbuild: 'bun run escheck',
|
|
323
|
+
};
|
|
324
|
+
break;
|
|
325
|
+
default:
|
|
326
|
+
}
|
|
327
|
+
generateFiles.push({
|
|
328
|
+
path: path.join(appletRootDirectory, '.npmrc'),
|
|
329
|
+
content: 'registry=https://registry.npmjs.org/\nalways-auth=false',
|
|
330
|
+
});
|
|
331
|
+
// TypeScript or JavaScript
|
|
332
|
+
if (language === Language.TypeScript) {
|
|
333
|
+
generateFiles.push({
|
|
334
|
+
path: path.join(appletRootDirectory, 'src', 'index.ts'),
|
|
335
|
+
content: createIndexTs(),
|
|
336
|
+
});
|
|
337
|
+
generateFiles.push({
|
|
338
|
+
path: path.join(appletRootDirectory, 'tsconfig.json'),
|
|
339
|
+
content: createTsConfig(),
|
|
340
|
+
});
|
|
341
|
+
// Extend dependencies for Typescript
|
|
342
|
+
mergedDeps.push('typescript@5');
|
|
343
|
+
// Extend dependencies for Webpack
|
|
344
|
+
if (bundler === Bundler.Webpack) {
|
|
345
|
+
mergedDeps.push('ts-loader@9', '@babel/preset-typescript@7', 'ts-node@10');
|
|
423
346
|
}
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
generateFiles.push({
|
|
350
|
+
path: path.join(appletRootDirectory, 'src', 'index.js'),
|
|
351
|
+
content: createIndexJs(),
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
// Create styles
|
|
355
|
+
// TODO sass support
|
|
356
|
+
{
|
|
357
|
+
generateFiles.push({
|
|
358
|
+
path: path.join(appletRootDirectory, 'src', 'index.css'),
|
|
359
|
+
content: createIndexCss(),
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
// Create custom npm registry config
|
|
363
|
+
if (typeof options['npm-registry'] === 'string') {
|
|
364
|
+
generateFiles.push({
|
|
365
|
+
path: path.join(appletRootDirectory, '.npmrc'),
|
|
366
|
+
content: createNpmRunControl(options['npm-registry']),
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
if (!options['applet-version']) {
|
|
370
|
+
throw new Error('Argument --applet-version is required');
|
|
371
|
+
}
|
|
372
|
+
// Add files to project
|
|
373
|
+
generateFiles.push({
|
|
374
|
+
path: path.join(appletRootDirectory, 'package.json'),
|
|
375
|
+
content: JSON.stringify(yield createPackageConfig(appletName, String(options['applet-version']), bundler, language), undefined, 2) + '\n',
|
|
376
|
+
});
|
|
377
|
+
generateFiles.push({
|
|
378
|
+
path: path.join(appletRootDirectory, 'CHANGELOG.md'),
|
|
379
|
+
content: createChangelogFile(),
|
|
380
|
+
});
|
|
381
|
+
generateFiles.push({
|
|
382
|
+
path: path.join(appletRootDirectory, 'README.md'),
|
|
383
|
+
content: createReadmeFile(),
|
|
384
|
+
});
|
|
385
|
+
// Configure bundler
|
|
386
|
+
switch (bundler) {
|
|
387
|
+
case Bundler.Rspack:
|
|
388
|
+
generateFiles.push({
|
|
389
|
+
path: path.join(appletRootDirectory, 'rspack.config.mjs'),
|
|
390
|
+
content: createRspackConfig(),
|
|
391
|
+
});
|
|
392
|
+
break;
|
|
393
|
+
case Bundler.Webpack:
|
|
394
|
+
generateFiles.push({
|
|
395
|
+
path: path.join(appletRootDirectory, 'webpack.config.js'),
|
|
396
|
+
content: createWebpackConfig(),
|
|
397
|
+
});
|
|
398
|
+
break;
|
|
399
|
+
default:
|
|
400
|
+
throw new Error('Argument --bundler is required');
|
|
401
|
+
}
|
|
402
|
+
generateFiles.push({
|
|
403
|
+
path: path.join(appletRootDirectory, 'public', 'index.html'),
|
|
404
|
+
content: createIndexHtml(appletName),
|
|
405
|
+
});
|
|
406
|
+
generateFiles.push({
|
|
407
|
+
path: path.join(appletRootDirectory, '.sosignore'),
|
|
408
|
+
content: 'node_modules/\n',
|
|
409
|
+
});
|
|
410
|
+
// Initialise git repository
|
|
411
|
+
if (git === GitOptions.Yes && gitFound) {
|
|
412
|
+
generateFiles.push({
|
|
413
|
+
path: path.join(appletRootDirectory, '.gitignore'),
|
|
414
|
+
content: 'node_modules/\n./dist',
|
|
415
|
+
});
|
|
416
|
+
yield (0, git_1.initGitRepository)(appletRootDirectory, true).catch((error) => {
|
|
417
|
+
console.error(`Git repository initialization failed: ${error}`);
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
// Create applet directory
|
|
421
|
+
for (const generateFile of generateFiles) {
|
|
422
|
+
yield fs.ensureDir(path.dirname(generateFile.path));
|
|
423
|
+
yield fs.writeFile(generateFile.path, generateFile.content);
|
|
424
|
+
}
|
|
425
|
+
console.info(`Loooking for ${PACKAGER_EXECUTABLE}`);
|
|
426
|
+
const packagerFound = yield (0, which_1.default)(PACKAGER_EXECUTABLE).catch((err) => {
|
|
427
|
+
console.error(`${PACKAGER_EXECUTABLE} not found on this machine: ${err}`);
|
|
424
428
|
});
|
|
429
|
+
if (packagerFound) {
|
|
430
|
+
// Install dependencies
|
|
431
|
+
process.chdir(appletRootDirectory);
|
|
432
|
+
// Ensure the default .npmrc file will be loaded from project root
|
|
433
|
+
// Yarn 2+ uses .yarnrc.yml, but we can use this flag to override user's .npmrc
|
|
434
|
+
const packagerPrefix = ''; // 'NPM_CONFIG_USERCONFIG=/dev/null';
|
|
435
|
+
// Apply packager specific options
|
|
436
|
+
let configFlag = '';
|
|
437
|
+
switch (packager) {
|
|
438
|
+
case Packager.Yarn:
|
|
439
|
+
// Prevent Yarn from automatically detecting yarnrc and npmrc files
|
|
440
|
+
configFlag = '--no-default-rc';
|
|
441
|
+
break;
|
|
442
|
+
case Packager.Bun:
|
|
443
|
+
// Prevent Bun from failing on issues related to lockfile permissions
|
|
444
|
+
configFlag = '--frozen-lockfile';
|
|
445
|
+
break;
|
|
446
|
+
default:
|
|
447
|
+
// Other packagers (npm, pnpm) currently do not require any special config
|
|
448
|
+
}
|
|
449
|
+
const installCommand = packager === Packager.Yarn ? 'add' : 'install';
|
|
450
|
+
// Log the command being executed
|
|
451
|
+
console.info(`Installing dependencies: ${packagerPrefix} ${PACKAGER_EXECUTABLE} ${installCommand} ${configFlag} --save-dev ${mergedDeps.join(' ')}`);
|
|
452
|
+
const child = child_process.spawn(PACKAGER_EXECUTABLE, [packagerPrefix, installCommand, configFlag, '--save-dev', ...mergedDeps], {
|
|
453
|
+
stdio: 'pipe', // Use 'pipe' to capture stdout and stderr
|
|
454
|
+
shell: true,
|
|
455
|
+
});
|
|
456
|
+
// Capture and log stdout
|
|
457
|
+
child.stdout.on('data', (data) => {
|
|
458
|
+
console.log(`${data.toString()}`);
|
|
459
|
+
});
|
|
460
|
+
// Capture and log stderr
|
|
461
|
+
child.stderr.on('data', (data) => {
|
|
462
|
+
console.error(`${data.toString()}`);
|
|
463
|
+
});
|
|
464
|
+
// Handle errors
|
|
465
|
+
child.on('error', (error) => {
|
|
466
|
+
console.error(`Error executing command: ${error.message}`);
|
|
467
|
+
});
|
|
468
|
+
// Handle process exit
|
|
469
|
+
child.on('close', (code) => {
|
|
470
|
+
if (code === 0) {
|
|
471
|
+
(0, log_1.log)('info', `\nApplet ${chalk_1.default.green(appletName)} created!`);
|
|
472
|
+
(0, log_1.log)('info', `\nContinue with ${chalk_1.default.green(`cd ${appletRootDirectoryName}`)} and ${chalk_1.default.green(`${PACKAGER_EXECUTABLE} start`)}`);
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
console.error(`Command exited with code ${code}`);
|
|
476
|
+
}
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
(0, log_1.log)('info', `${chalk_1.default.red(`Please first install ${PACKAGER_EXECUTABLE} globally.`)}\nContinue with ${chalk_1.default.green(`cd ${appletRootDirectoryName}`)}, ${chalk_1.default.green(`${PACKAGER_EXECUTABLE} install`)} and ${chalk_1.default.green(`${PACKAGER_EXECUTABLE} start`)}`);
|
|
481
|
+
(0, log_1.log)('info', `\nApplet ${chalk_1.default.white(appletName)} created!`);
|
|
482
|
+
}
|
|
425
483
|
});
|
|
426
484
|
},
|
|
427
485
|
});
|
|
428
486
|
/**
|
|
429
487
|
* Create package.json config
|
|
430
488
|
*/
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
489
|
+
const createPackageConfig = (name, version, bundler, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
490
|
+
// Define type for script definition to avoid TypeScript errors
|
|
491
|
+
let scriptDef = Object.assign({}, RUNSCRIPTS.common);
|
|
492
|
+
switch (bundler) {
|
|
493
|
+
case Bundler.Rspack:
|
|
494
|
+
scriptDef = Object.assign(Object.assign({}, scriptDef), RUNSCRIPTS.rspack);
|
|
495
|
+
break;
|
|
496
|
+
case Bundler.Webpack:
|
|
497
|
+
default:
|
|
498
|
+
scriptDef = Object.assign(Object.assign({}, scriptDef), RUNSCRIPTS.webpack);
|
|
499
|
+
}
|
|
500
|
+
// Add typescript checking before builds
|
|
501
|
+
if (language === Language.TypeScript) {
|
|
502
|
+
scriptDef.typecheck = 'tsc --noEmit';
|
|
503
|
+
// Make sure build exists before modifying it
|
|
504
|
+
if (scriptDef.build) {
|
|
505
|
+
scriptDef.build = `npm run typecheck && ${scriptDef.build}`;
|
|
444
506
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
507
|
+
}
|
|
508
|
+
return {
|
|
509
|
+
name,
|
|
510
|
+
version,
|
|
511
|
+
author: '',
|
|
512
|
+
main: 'dist/index.html',
|
|
513
|
+
scripts: scriptDef,
|
|
514
|
+
files: ['dist', 'CHANGELOG.md', 'README.md'],
|
|
515
|
+
description: 'signageOS applet',
|
|
516
|
+
repository: {},
|
|
517
|
+
license: 'UNLICENSED',
|
|
518
|
+
};
|
|
519
|
+
});
|
|
520
|
+
const createWebpackConfig = () => importFileAsString('./Templates/webpack.config.js.template');
|
|
521
|
+
const createRspackConfig = () => importFileAsString('./Templates/rspack.config.mjs.template');
|
|
522
|
+
const createIndexHtml = (title) => {
|
|
523
|
+
return importFileAsString('./Templates/index.html.template').replace(/\$\{title\}/g, title);
|
|
461
524
|
};
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
525
|
+
const createIndexCss = () => importFileAsString('./Templates/index.css.template');
|
|
526
|
+
const createIndexJs = () => importFileAsString('./Templates/index.js.template');
|
|
527
|
+
const createIndexTs = () => createIndexJs(); // There is currently no difference
|
|
528
|
+
const createTsConfig = () => importFileAsString('./Templates/tsconfig.js.template');
|
|
529
|
+
const createChangelogFile = () => importFileAsString('./Templates/CHANGELOG.md.template');
|
|
530
|
+
const createReadmeFile = () => importFileAsString('./Templates/README.md.template');
|
|
531
|
+
const createNpmRunControl = (registryUrl) => `
|
|
532
|
+
registry=${registryUrl}
|
|
533
|
+
always-auth=true
|
|
534
|
+
`;
|
|
467
535
|
/**
|
|
468
536
|
* Check if the value is present and is one of the supported options
|
|
469
537
|
* @param propName - The name of the property to check
|
|
@@ -471,10 +539,9 @@ var createNpmRunControl = function (registryUrl) { return "\nregistry=".concat(r
|
|
|
471
539
|
* @param options - The supported options
|
|
472
540
|
* @throws Will throw an error if the value is not present or not one of the supported options
|
|
473
541
|
*/
|
|
474
|
-
|
|
475
|
-
|
|
542
|
+
function checkSupport(propName, value, options) {
|
|
543
|
+
const values = Object.values(options);
|
|
476
544
|
if (!value || !values.includes(value)) {
|
|
477
|
-
throw new Error(
|
|
545
|
+
throw new Error(`Missing or incorrect argument --${propName} <${values.join('|')}>`);
|
|
478
546
|
}
|
|
479
|
-
}
|
|
480
|
-
//# sourceMappingURL=appletGenerateCommand.js.map
|
|
547
|
+
}
|