@mschauer5/spfx-toolkit 1.0.1
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/.vscode/settings.json +22 -0
- package/LICENSE +21 -0
- package/lib/commands/alias.command.js +104 -0
- package/lib/commands/alias.command.js.map +1 -0
- package/lib/commands/build.command.js +63 -0
- package/lib/commands/build.command.js.map +1 -0
- package/lib/commands/eslint.command.js +34 -0
- package/lib/commands/eslint.command.js.map +1 -0
- package/lib/commands/index.js +47 -0
- package/lib/commands/index.js.map +1 -0
- package/lib/commands/serve.command.js +27 -0
- package/lib/commands/serve.command.js.map +1 -0
- package/lib/commands/version.command.js +98 -0
- package/lib/commands/version.command.js.map +1 -0
- package/lib/common/constants.js +10 -0
- package/lib/common/constants.js.map +1 -0
- package/lib/common/index.js +43 -0
- package/lib/common/index.js.map +1 -0
- package/lib/common/logger.js +42 -0
- package/lib/common/logger.js.map +1 -0
- package/lib/common/util.js +80 -0
- package/lib/common/util.js.map +1 -0
- package/lib/index.js +132 -0
- package/lib/index.js.map +1 -0
- package/lib/package.json +44 -0
- package/lib/src/commands/alias.command.js +104 -0
- package/lib/src/commands/alias.command.js.map +1 -0
- package/lib/src/commands/build.command.js +61 -0
- package/lib/src/commands/build.command.js.map +1 -0
- package/lib/src/commands/bundle.command.js +70 -0
- package/lib/src/commands/bundle.command.js.map +1 -0
- package/lib/src/commands/eslint.command.js +34 -0
- package/lib/src/commands/eslint.command.js.map +1 -0
- package/lib/src/commands/index.js +49 -0
- package/lib/src/commands/index.js.map +1 -0
- package/lib/src/commands/serve.command.js +27 -0
- package/lib/src/commands/serve.command.js.map +1 -0
- package/lib/src/commands/version.command.js +98 -0
- package/lib/src/commands/version.command.js.map +1 -0
- package/lib/src/common/constants.js +10 -0
- package/lib/src/common/constants.js.map +1 -0
- package/lib/src/common/index.js +43 -0
- package/lib/src/common/index.js.map +1 -0
- package/lib/src/common/logger.js +42 -0
- package/lib/src/common/logger.js.map +1 -0
- package/lib/src/common/util.js +80 -0
- package/lib/src/common/util.js.map +1 -0
- package/lib/src/index.js +145 -0
- package/lib/src/index.js.map +1 -0
- package/lib/test/index.test.js +17 -0
- package/lib/test/index.test.js.map +1 -0
- package/package.json +44 -0
- package/src/commands/alias.command.ts +92 -0
- package/src/commands/build.command.ts +48 -0
- package/src/commands/bundle.command.ts +60 -0
- package/src/commands/eslint.command.ts +28 -0
- package/src/commands/index.ts +7 -0
- package/src/commands/serve.command.ts +13 -0
- package/src/commands/version.command.ts +104 -0
- package/src/common/constants.ts +4 -0
- package/src/common/index.ts +4 -0
- package/src/common/logger.ts +45 -0
- package/src/common/util.ts +55 -0
- package/src/index.ts +113 -0
- package/tsconfig.json +15 -0
|
@@ -0,0 +1,98 @@
|
|
|
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.incrementVersion = exports.syncVersion = exports.listVersions = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const common_1 = require("../common");
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const syncPackageSolution = (version) => {
|
|
11
|
+
const packageSolutionPath = path_1.default.resolve(common_1.constants.WORKING_DIRECTORY, 'config/package-solution.json');
|
|
12
|
+
const packageSolution = JSON.parse(fs_1.default.readFileSync(packageSolutionPath, 'utf-8'));
|
|
13
|
+
packageSolution.solution.version = version + '.0';
|
|
14
|
+
fs_1.default.writeFileSync(packageSolutionPath, JSON.stringify(packageSolution, null, 2));
|
|
15
|
+
common_1.logger.success(`updated sharepoint version to ${packageSolution.solution.version}`);
|
|
16
|
+
};
|
|
17
|
+
const updatePackage = (version) => {
|
|
18
|
+
const fileFullPath = path_1.default.resolve(common_1.constants.WORKING_DIRECTORY, 'package.json');
|
|
19
|
+
const json = JSON.parse(fs_1.default.readFileSync(fileFullPath, 'utf-8'));
|
|
20
|
+
json.version = version;
|
|
21
|
+
fs_1.default.writeFileSync(fileFullPath, JSON.stringify(json, null, 2));
|
|
22
|
+
common_1.logger.success(`updated package.json version to ${version}`);
|
|
23
|
+
};
|
|
24
|
+
const getPackageVersion = () => {
|
|
25
|
+
const fileFullPath = path_1.default.resolve(common_1.constants.WORKING_DIRECTORY, 'package.json');
|
|
26
|
+
if (!fs_1.default.existsSync(fileFullPath)) {
|
|
27
|
+
common_1.logger.error('package.json not found');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(fileFullPath, 'utf-8'));
|
|
31
|
+
return packageJson.version;
|
|
32
|
+
};
|
|
33
|
+
const getPackageSolutionVersion = (ignoreWarning = false) => {
|
|
34
|
+
const packageSolutionPath = path_1.default.resolve(common_1.constants.WORKING_DIRECTORY, 'config/package-solution.json');
|
|
35
|
+
if (!fs_1.default.existsSync(packageSolutionPath)) {
|
|
36
|
+
if (!ignoreWarning)
|
|
37
|
+
common_1.logger.error('package-solution.json not found');
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const packageSolution = JSON.parse(fs_1.default.readFileSync(packageSolutionPath, 'utf-8'));
|
|
41
|
+
return packageSolution.solution.version;
|
|
42
|
+
};
|
|
43
|
+
const listVersions = () => {
|
|
44
|
+
const jsonPackageV = getPackageVersion();
|
|
45
|
+
const sharepointVersion = getPackageSolutionVersion();
|
|
46
|
+
if (jsonPackageV === undefined || sharepointVersion === undefined) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
common_1.logger.info(`package: ${jsonPackageV}`);
|
|
50
|
+
common_1.logger.info(`sharepoint: ${sharepointVersion}`);
|
|
51
|
+
console.log();
|
|
52
|
+
};
|
|
53
|
+
exports.listVersions = listVersions;
|
|
54
|
+
const syncVersion = () => {
|
|
55
|
+
const fileFullPath = path_1.default.resolve(common_1.constants.WORKING_DIRECTORY, 'package.json');
|
|
56
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(fileFullPath, 'utf-8'));
|
|
57
|
+
syncPackageSolution(packageJson.version);
|
|
58
|
+
};
|
|
59
|
+
exports.syncVersion = syncVersion;
|
|
60
|
+
const incPackageVersion = (version, part = 'patch') => {
|
|
61
|
+
// Split the version string into parts
|
|
62
|
+
const versionParts = version.split('.').map(Number);
|
|
63
|
+
if (versionParts.length !== 3 || versionParts.some(isNaN)) {
|
|
64
|
+
throw new Error('Invalid version format. Expected format: "x.y.z"');
|
|
65
|
+
}
|
|
66
|
+
// Increment the specified part
|
|
67
|
+
switch (part) {
|
|
68
|
+
case 'major':
|
|
69
|
+
versionParts[0] += 1;
|
|
70
|
+
versionParts[1] = 0; // Reset minor and patch to 0
|
|
71
|
+
versionParts[2] = 0;
|
|
72
|
+
break;
|
|
73
|
+
case 'minor':
|
|
74
|
+
versionParts[1] += 1;
|
|
75
|
+
versionParts[2] = 0; // Reset patch to 0
|
|
76
|
+
break;
|
|
77
|
+
case 'patch':
|
|
78
|
+
versionParts[2] += 1;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
// Join the parts back into a string
|
|
82
|
+
return versionParts.join('.');
|
|
83
|
+
};
|
|
84
|
+
const incrementVersion = (part) => {
|
|
85
|
+
const jsonPackageV = getPackageVersion();
|
|
86
|
+
const sharepointVersion = getPackageSolutionVersion(true);
|
|
87
|
+
if (jsonPackageV === undefined) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const pV = incPackageVersion(jsonPackageV, part);
|
|
91
|
+
updatePackage(pV);
|
|
92
|
+
if (sharepointVersion === undefined) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
syncPackageSolution(pV);
|
|
96
|
+
};
|
|
97
|
+
exports.incrementVersion = incrementVersion;
|
|
98
|
+
//# sourceMappingURL=version.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.command.js","sourceRoot":"","sources":["../../../src/commands/version.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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.WORKING_DIRECTORY = exports.PACKAGE_DIRECTORY = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
exports.PACKAGE_DIRECTORY = path_1.default.resolve(__dirname, '..');
|
|
9
|
+
exports.WORKING_DIRECTORY = process.cwd();
|
|
10
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/common/constants.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAEX,QAAA,iBAAiB,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAClD,QAAA,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.util = exports.constants = exports.logger = void 0;
|
|
37
|
+
const logger_1 = require("./logger");
|
|
38
|
+
Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
|
|
39
|
+
const constants = __importStar(require("./constants"));
|
|
40
|
+
exports.constants = constants;
|
|
41
|
+
const util = __importStar(require("./util"));
|
|
42
|
+
exports.util = util;
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uDAAyC;AAExB,8BAAS;AAD1B,6CAA+B;AACH,oBAAI"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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.logger = void 0;
|
|
7
|
+
/* eslint-disable no-console */
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const log_symbols_1 = __importDefault(require("log-symbols"));
|
|
10
|
+
class Logger {
|
|
11
|
+
constructor() {
|
|
12
|
+
const args = process.argv.slice(2);
|
|
13
|
+
const silent = args.indexOf('--silent') !== -1;
|
|
14
|
+
if (silent) {
|
|
15
|
+
this.logger = () => 0;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.logger = console.log;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
success(message) {
|
|
22
|
+
this.logger(log_symbols_1.default.success, chalk_1.default.green(message));
|
|
23
|
+
this.newLine();
|
|
24
|
+
}
|
|
25
|
+
log(message) {
|
|
26
|
+
this.logger(message);
|
|
27
|
+
}
|
|
28
|
+
warning(message) {
|
|
29
|
+
this.logger(log_symbols_1.default.warning, chalk_1.default.yellowBright(message));
|
|
30
|
+
}
|
|
31
|
+
error(message) {
|
|
32
|
+
this.logger(log_symbols_1.default.error, chalk_1.default.redBright(message));
|
|
33
|
+
}
|
|
34
|
+
info(message) {
|
|
35
|
+
this.logger(log_symbols_1.default.info, chalk_1.default.blueBright(message));
|
|
36
|
+
}
|
|
37
|
+
newLine() {
|
|
38
|
+
this.logger('');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.logger = new Logger();
|
|
42
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/common/logger.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,kDAA0B;AAC1B,8DAAqC;AAErC,MAAM,MAAM;IAGV;QACE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,OAAe;QAC5B,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,OAAO,EAAE,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,GAAG,CAAC,OAAe;QACxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAEM,OAAO,CAAC,OAAe;QAC5B,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,OAAO,EAAE,eAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,OAAe;QAC1B,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,KAAK,EAAE,eAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,IAAI,CAAC,OAAe;QACzB,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,IAAI,EAAE,eAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF;AAEY,QAAA,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.checkIfFileExistsAsync = checkIfFileExistsAsync;
|
|
16
|
+
exports.isUsingGulp = isUsingGulp;
|
|
17
|
+
exports.getScriptNameRunType = getScriptNameRunType;
|
|
18
|
+
exports.addScriptNameRunType = addScriptNameRunType;
|
|
19
|
+
const fs_1 = require("fs");
|
|
20
|
+
const os_1 = __importDefault(require("os"));
|
|
21
|
+
const path_1 = __importDefault(require("path"));
|
|
22
|
+
function getConfigPaths() {
|
|
23
|
+
const configDir = path_1.default.join(os_1.default.homedir(), '.spfx-toolkit');
|
|
24
|
+
const configPath = path_1.default.join(configDir, 'config.json');
|
|
25
|
+
return { configDir, configPath };
|
|
26
|
+
}
|
|
27
|
+
function checkIfFileExistsAsync(filename_1) {
|
|
28
|
+
return __awaiter(this, arguments, void 0, function* (filename, includeError = true) {
|
|
29
|
+
try {
|
|
30
|
+
yield fs_1.promises.readFile(filename, 'utf-8');
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if (includeError) {
|
|
35
|
+
console.log(err);
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function isUsingGulp() {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
const gulpFile = 'gulpfile.js';
|
|
44
|
+
return yield checkIfFileExistsAsync(gulpFile, false);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function getScriptNameRunType(scriptName) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const { configPath } = getConfigPaths();
|
|
50
|
+
try {
|
|
51
|
+
const data = yield fs_1.promises.readFile(configPath, 'utf-8');
|
|
52
|
+
const config = JSON.parse(data);
|
|
53
|
+
if (config && typeof config === 'object' && scriptName in config) {
|
|
54
|
+
return config[scriptName];
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
// File does not exist or cannot be read
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function addScriptNameRunType(scriptName, value) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const { configDir, configPath } = getConfigPaths();
|
|
67
|
+
let config = {};
|
|
68
|
+
try {
|
|
69
|
+
const data = yield fs_1.promises.readFile(configPath, 'utf-8');
|
|
70
|
+
config = JSON.parse(data);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
// File does not exist or is invalid, start with empty config
|
|
74
|
+
}
|
|
75
|
+
config[scriptName] = value;
|
|
76
|
+
yield fs_1.promises.mkdir(configDir, { recursive: true });
|
|
77
|
+
yield fs_1.promises.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/common/util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAUA,wDAUC;AAED,kCAGC;AAED,oDAaC;AAED,oDAYC;AAtDD,2BAA4C;AAC5C,4CAAoB;AACpB,gDAAwB;AAExB,SAAS,cAAc;IACrB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACvD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,CAAC;AAED,SAAsB,sBAAsB;yDAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;QACxE,IAAI,CAAC;YACH,MAAM,aAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CAAA;AAED,SAAsB,WAAW;;QAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC;QAC/B,OAAO,MAAM,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;CAAA;AAED,SAAsB,oBAAoB,CAAC,UAAkB;;QAC3D,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,aAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;gBACjE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wCAAwC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CAAA;AAED,SAAsB,oBAAoB,CAAC,UAAkB,EAAE,KAAU;;QACvE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;QACnD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,aAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,6DAA6D;QAC/D,CAAC;QACD,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QAC3B,MAAM,aAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,aAAU,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;CAAA"}
|
package/lib/src/index.js
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
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
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
40
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
41
|
+
const commander = __importStar(require("commander"));
|
|
42
|
+
const commander_1 = require("commander");
|
|
43
|
+
const commands = __importStar(require("./commands"));
|
|
44
|
+
const common_1 = require("./common");
|
|
45
|
+
const program = new commander_1.Command();
|
|
46
|
+
const defaultToolkitName = 'spfx-toolkit';
|
|
47
|
+
program
|
|
48
|
+
.name('Matt Schauer SPFx Toolkit')
|
|
49
|
+
.description('CLI to help with SPFx development')
|
|
50
|
+
.addHelpText('beforeAll', chalk_1.default.blueBright('Developed by Matt Schauer'))
|
|
51
|
+
.version(package_json_1.default.version);
|
|
52
|
+
program
|
|
53
|
+
.command('add-alias')
|
|
54
|
+
.description('add alias')
|
|
55
|
+
.addArgument(new commander.Argument('<name>', 'alias name to use for this program'))
|
|
56
|
+
.action((name) => {
|
|
57
|
+
commands.alias.addAlias(name, defaultToolkitName);
|
|
58
|
+
});
|
|
59
|
+
program
|
|
60
|
+
.command('clear-alias')
|
|
61
|
+
.description('remove alias for spfx-toolkit')
|
|
62
|
+
.action(() => {
|
|
63
|
+
commands.alias.clearAlias(defaultToolkitName);
|
|
64
|
+
});
|
|
65
|
+
program
|
|
66
|
+
.command('serve')
|
|
67
|
+
.description('Serve / Start the SPFx Project')
|
|
68
|
+
.action(() => {
|
|
69
|
+
commands.serve.run();
|
|
70
|
+
});
|
|
71
|
+
program
|
|
72
|
+
.command('build')
|
|
73
|
+
.description('Build Project')
|
|
74
|
+
.option('-p, --usepackage', "Use package.json script 'build' as the command")
|
|
75
|
+
.option('-d, --isdefault', 'Set current command as default build action')
|
|
76
|
+
.action((options) => {
|
|
77
|
+
let usePackage = false;
|
|
78
|
+
let isdefault = false;
|
|
79
|
+
if (options.isdefault) {
|
|
80
|
+
isdefault = true;
|
|
81
|
+
}
|
|
82
|
+
if (options.usepackage) {
|
|
83
|
+
usePackage = true;
|
|
84
|
+
}
|
|
85
|
+
commands.build.run(usePackage, isdefault);
|
|
86
|
+
});
|
|
87
|
+
program
|
|
88
|
+
.command('bundle')
|
|
89
|
+
.description('Bundle Project')
|
|
90
|
+
.option('-p, --usepackage', "Use package.json script 'bundle' as the command")
|
|
91
|
+
.option('-d, --isdefault', 'Set current command as default bundle action')
|
|
92
|
+
.action((options) => {
|
|
93
|
+
let usePackage = false;
|
|
94
|
+
let isdefault = false;
|
|
95
|
+
if (options.isdefault) {
|
|
96
|
+
isdefault = true;
|
|
97
|
+
}
|
|
98
|
+
if (options.usepackage) {
|
|
99
|
+
usePackage = true;
|
|
100
|
+
}
|
|
101
|
+
commands.bundle.run(usePackage, isdefault);
|
|
102
|
+
});
|
|
103
|
+
program
|
|
104
|
+
.command('eslint')
|
|
105
|
+
.description('Backup and restore eslint file')
|
|
106
|
+
.option('-b, --backup', 'Backup the eslint file')
|
|
107
|
+
.option('-r, --restore', 'Restore from backup eslint file')
|
|
108
|
+
.action((options) => {
|
|
109
|
+
if (options.backup) {
|
|
110
|
+
commands.eslint.backupEslint();
|
|
111
|
+
}
|
|
112
|
+
else if (options.restore) {
|
|
113
|
+
commands.eslint.restoreEslint();
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
common_1.logger.error('No action specified. Use --backup | -b <OR> --restore | -r');
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
program
|
|
120
|
+
.command('version')
|
|
121
|
+
.option('-l, --list', 'List SPFx project versions')
|
|
122
|
+
.option('-s, --sync', 'Sync package.json version with package-solution.json version')
|
|
123
|
+
.option('-i, --increment <part>', 'Increment package version (major, minor, patch)', (value) => {
|
|
124
|
+
if (!['major', 'minor', 'patch'].includes(value)) {
|
|
125
|
+
throw new Error(`Invalid increment part: ${value}. Must be one of major, minor, or patch.`);
|
|
126
|
+
}
|
|
127
|
+
return value; // Return the validated value
|
|
128
|
+
})
|
|
129
|
+
.action((options) => {
|
|
130
|
+
const { list, sync } = options;
|
|
131
|
+
if (list) {
|
|
132
|
+
commands.version.listVersions();
|
|
133
|
+
}
|
|
134
|
+
else if (sync) {
|
|
135
|
+
commands.version.syncVersion();
|
|
136
|
+
}
|
|
137
|
+
else if (options.increment) {
|
|
138
|
+
commands.version.incrementVersion(options.increment);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
common_1.logger.error('No action specified. Use --list | -l OR --sync | -s OR --increment | -i');
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
program.parse();
|
|
145
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,mEAAkC;AAClC,qDAAuC;AACvC,yCAAoC;AACpC,qDAAuC;AACvC,qCAAkC;AAClC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAE1C,OAAO;KACJ,IAAI,CAAC,2BAA2B,CAAC;KACjC,WAAW,CAAC,mCAAmC,CAAC;KAChD,WAAW,CAAC,WAAW,EAAE,eAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;KACvE,OAAO,CAAC,sBAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,WAAW,CAAC;KACxB,WAAW,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;KACnF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,GAAG,EAAE;IACX,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,GAAG,EAAE;IACX,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,CAAC;KAC5E,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KACxE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;KAC7E,MAAM,CAAC,iBAAiB,EAAE,8CAA8C,CAAC;KACzE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,cAAc,EAAE,wBAAwB,CAAC;KAChD,MAAM,CAAC,eAAe,EAAE,iCAAiC,CAAC;KAC1D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,MAAM,CAAC,YAAY,EAAE,4BAA4B,CAAC;KAClD,MAAM,CAAC,YAAY,EAAE,8DAA8D,CAAC;KACpF,MAAM,CAAC,wBAAwB,EAAE,iDAAiD,EAAE,CAAC,KAAa,EAAE,EAAE;IACrG,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,2CAA2C,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,6BAA6B;AAC7C,CAAC,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC/B,IAAI,IAAI,EAAE,CAAC;QACT,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IAClC,CAAC;SAAM,IAAI,IAAI,EAAE,CAAC;QAChB,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC7B,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// test/index.test.ts
|
|
3
|
+
// Basic test for the CLI app using Node.js child_process
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
describe('spfx-toolkit CLI', () => {
|
|
11
|
+
it('should display help output', () => {
|
|
12
|
+
const cliPath = path_1.default.resolve(__dirname, '../lib/index.js');
|
|
13
|
+
const output = (0, child_process_1.execSync)(`node ${cliPath} --help`).toString();
|
|
14
|
+
expect(output).toMatch(/Usage|Help|Options/i);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../test/index.test.ts"],"names":[],"mappings":";AAAA,qBAAqB;AACrB,yDAAyD;;;;;AAEzD,iDAAyC;AACzC,gDAAwB;AAExB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,QAAQ,OAAO,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mschauer5/spfx-toolkit",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Toolkit for SPFx projects",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"spfx-toolkit": "lib/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"test:help": "npm run build && node lib/index.js --help",
|
|
12
|
+
"test:add-alias": "npm run build && node lib/index.js add-alias xxx",
|
|
13
|
+
"test:clear-alias": "npm run build && node lib/index.js clear-alias",
|
|
14
|
+
"test:serve": "npm run build && node lib/index.js serve",
|
|
15
|
+
"test:build": "npm run build && node lib/index.js build",
|
|
16
|
+
"test:build-p": "npm run build && node lib/index.js build -p",
|
|
17
|
+
"test:build-pd": "npm run build && node lib/index.js build -p -d",
|
|
18
|
+
"test:build-d": "npm run build && node lib/index.js build -d"
|
|
19
|
+
},
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/mschauer5/spfx-toolkit.git"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"SPFx"
|
|
26
|
+
],
|
|
27
|
+
"author": "Matt Schauer",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/mschauer5/spfx-toolkit/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/mschauer5/spfx-toolkit#readme",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"chalk": "^5.6.2",
|
|
35
|
+
"commander": "^14.0.2",
|
|
36
|
+
"cross-spawn": "^7.0.6",
|
|
37
|
+
"detect-package-manager": "^3.0.2",
|
|
38
|
+
"log-symbols": "^7.0.1"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/cross-spawn": "^6.0.6",
|
|
42
|
+
"@types/node": "^25.0.3"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { logger } from '../common';
|
|
6
|
+
|
|
7
|
+
// Helper to get the real PowerShell $PROFILE path
|
|
8
|
+
const getPowerShellProfilePath = (): string => {
|
|
9
|
+
if (process.env.PROFILE) return process.env.PROFILE;
|
|
10
|
+
try {
|
|
11
|
+
const output = execSync('powershell -NoProfile -Command "$PROFILE"', { encoding: 'utf8' });
|
|
12
|
+
return output.trim();
|
|
13
|
+
} catch {
|
|
14
|
+
return (
|
|
15
|
+
(process.env.USERPROFILE && require('path').join(process.env.USERPROFILE, 'Documents', 'WindowsPowerShell', 'Microsoft.PowerShell_profile.ps1')) ||
|
|
16
|
+
require('path').join(require('os').homedir(), 'Documents', 'WindowsPowerShell', 'Microsoft.PowerShell_profile.ps1')
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const addAlias = async (alias: string, command: string): Promise<void> => {
|
|
22
|
+
const shell = process.env.SHELL || ''; // Check for the shell environment
|
|
23
|
+
const platform = os.platform(); // Determine the operating system
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
if (platform === 'win32') {
|
|
27
|
+
// Windows PowerShell
|
|
28
|
+
|
|
29
|
+
const profilePath = getPowerShellProfilePath();
|
|
30
|
+
|
|
31
|
+
// Ensure the profile directory exists
|
|
32
|
+
await fs.mkdir(path.dirname(profilePath), { recursive: true });
|
|
33
|
+
|
|
34
|
+
// Add alias to the profile
|
|
35
|
+
const aliasCommand = `Set-Alias -Name ${alias} -Value ${command}`;
|
|
36
|
+
await fs.appendFile(profilePath, `\n${aliasCommand}\n`);
|
|
37
|
+
|
|
38
|
+
logger.success(`Alias '${alias}' added for PowerShell in ${profilePath}`);
|
|
39
|
+
} else {
|
|
40
|
+
// Unix-like terminal (Bash, Zsh, etc.)
|
|
41
|
+
const shellConfig = shell.includes('zsh') ? '.zshrc' : shell.includes('bash') ? '.bashrc' : '.bash_profile';
|
|
42
|
+
|
|
43
|
+
const shellConfigPath = path.join(os.homedir(), shellConfig);
|
|
44
|
+
|
|
45
|
+
// Add alias to the shell configuration
|
|
46
|
+
const aliasCommand = `alias ${alias}='${command}'`;
|
|
47
|
+
await fs.appendFile(shellConfigPath, `\n${aliasCommand}\n`);
|
|
48
|
+
|
|
49
|
+
logger.success(`Alias '${alias}' added for terminal in ${shellConfigPath}`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
logger.warning('Alias added successfully. Restart your terminal to apply the changes.');
|
|
53
|
+
} catch (error) {
|
|
54
|
+
logger.error(`Failed to add alias: ${error}`);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const clearAlias = async (command: string): Promise<void> => {
|
|
59
|
+
const shell = process.env.SHELL || '';
|
|
60
|
+
const platform = os.platform();
|
|
61
|
+
try {
|
|
62
|
+
if (platform === 'win32') {
|
|
63
|
+
const profilePath = getPowerShellProfilePath();
|
|
64
|
+
try {
|
|
65
|
+
let content = await fs.readFile(profilePath, 'utf8');
|
|
66
|
+
// Remove all Set-Alias lines that point to this command
|
|
67
|
+
const aliasRegex = new RegExp(`^.*Set-Alias -Name (\\w+) -Value ${command}.*$`, 'gm');
|
|
68
|
+
content = content.replace(aliasRegex, '');
|
|
69
|
+
await fs.writeFile(profilePath, content, 'utf8');
|
|
70
|
+
logger.success(`All aliases for '${command}' removed from PowerShell profile: ${profilePath}`);
|
|
71
|
+
} catch (e) {
|
|
72
|
+
logger.warning(`Could not update PowerShell profile: ${e}`);
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
const shellConfig = shell.includes('zsh') ? '.zshrc' : shell.includes('bash') ? '.bashrc' : '.bash_profile';
|
|
76
|
+
const shellConfigPath = path.join(os.homedir(), shellConfig);
|
|
77
|
+
try {
|
|
78
|
+
let content = await fs.readFile(shellConfigPath, 'utf8');
|
|
79
|
+
// Remove all alias lines that point to this command
|
|
80
|
+
const aliasRegex = new RegExp(`^.*alias (\\w+)='${command}'.*$`, 'gm');
|
|
81
|
+
content = content.replace(aliasRegex, '');
|
|
82
|
+
await fs.writeFile(shellConfigPath, content, 'utf8');
|
|
83
|
+
logger.success(`All aliases for '${command}' removed from terminal config: ${shellConfigPath}`);
|
|
84
|
+
} catch (e) {
|
|
85
|
+
logger.warning(`Could not update shell config: ${e}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
logger.warning('Alias removed. Restart your terminal to apply the changes.');
|
|
89
|
+
} catch (error) {
|
|
90
|
+
logger.error(`Failed to remove alias: ${error}`);
|
|
91
|
+
}
|
|
92
|
+
};
|