task-script-support-cli 0.1.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/.prettierignore +3 -0
- package/.prettierrc +1 -0
- package/.vscode/launch.json +34 -0
- package/README.md +3 -0
- package/dist/eslint.config.d.ts +3 -0
- package/dist/eslint.config.d.ts.map +1 -0
- package/dist/eslint.config.js +16 -0
- package/dist/eslint.config.js.map +1 -0
- package/dist/package.json +55 -0
- package/dist/src/commands/about.d.ts +7 -0
- package/dist/src/commands/about.d.ts.map +1 -0
- package/dist/src/commands/about.js +24 -0
- package/dist/src/commands/about.js.map +1 -0
- package/dist/src/commands/gen.d.ts +12 -0
- package/dist/src/commands/gen.d.ts.map +1 -0
- package/dist/src/commands/gen.js +35 -0
- package/dist/src/commands/gen.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +34 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/services/arg-service.d.ts +10 -0
- package/dist/src/services/arg-service.d.ts.map +1 -0
- package/dist/src/services/arg-service.js +71 -0
- package/dist/src/services/arg-service.js.map +1 -0
- package/dist/src/services/banner-service.d.ts +8 -0
- package/dist/src/services/banner-service.d.ts.map +1 -0
- package/dist/src/services/banner-service.js +50 -0
- package/dist/src/services/banner-service.js.map +1 -0
- package/dist/src/services/file-service.d.ts +12 -0
- package/dist/src/services/file-service.d.ts.map +1 -0
- package/dist/src/services/file-service.js +82 -0
- package/dist/src/services/file-service.js.map +1 -0
- package/dist/src/services/log-service.d.ts +14 -0
- package/dist/src/services/log-service.d.ts.map +1 -0
- package/dist/src/services/log-service.js +61 -0
- package/dist/src/services/log-service.js.map +1 -0
- package/dist/src/services/project-service.d.ts +31 -0
- package/dist/src/services/project-service.d.ts.map +1 -0
- package/dist/src/services/project-service.js +86 -0
- package/dist/src/services/project-service.js.map +1 -0
- package/dist/src/services/spawn-service.d.ts +12 -0
- package/dist/src/services/spawn-service.d.ts.map +1 -0
- package/dist/src/services/spawn-service.js +111 -0
- package/dist/src/services/spawn-service.js.map +1 -0
- package/dist/src/services/updater-service.d.ts +7 -0
- package/dist/src/services/updater-service.d.ts.map +1 -0
- package/dist/src/services/updater-service.js +24 -0
- package/dist/src/services/updater-service.js.map +1 -0
- package/dist/src/services/util-service.d.ts +23 -0
- package/dist/src/services/util-service.d.ts.map +1 -0
- package/dist/src/services/util-service.js +89 -0
- package/dist/src/services/util-service.js.map +1 -0
- package/dist/src/tasks/check-env.d.ts +44 -0
- package/dist/src/tasks/check-env.d.ts.map +1 -0
- package/dist/src/tasks/check-env.js +126 -0
- package/dist/src/tasks/check-env.js.map +1 -0
- package/dist/src/tasks/generate-command.d.ts +23 -0
- package/dist/src/tasks/generate-command.d.ts.map +1 -0
- package/dist/src/tasks/generate-command.js +91 -0
- package/dist/src/tasks/generate-command.js.map +1 -0
- package/dist/src/tasks/generate-service.d.ts +26 -0
- package/dist/src/tasks/generate-service.d.ts.map +1 -0
- package/dist/src/tasks/generate-service.js +88 -0
- package/dist/src/tasks/generate-service.js.map +1 -0
- package/dist/src/tasks/generate-task.d.ts +26 -0
- package/dist/src/tasks/generate-task.d.ts.map +1 -0
- package/dist/src/tasks/generate-task.js +88 -0
- package/dist/src/tasks/generate-task.js.map +1 -0
- package/dist/src/tasks/print-about-information.d.ts +8 -0
- package/dist/src/tasks/print-about-information.d.ts.map +1 -0
- package/dist/src/tasks/print-about-information.js +30 -0
- package/dist/src/tasks/print-about-information.js.map +1 -0
- package/dist/src/tasks/print-banner.d.ts +12 -0
- package/dist/src/tasks/print-banner.d.ts.map +1 -0
- package/dist/src/tasks/print-banner.js +47 -0
- package/dist/src/tasks/print-banner.js.map +1 -0
- package/dist/src/tasks/print-generated-results.d.ts +12 -0
- package/dist/src/tasks/print-generated-results.d.ts.map +1 -0
- package/dist/src/tasks/print-generated-results.js +48 -0
- package/dist/src/tasks/print-generated-results.js.map +1 -0
- package/dist/src/tasks/select-gen-target.d.ts +9 -0
- package/dist/src/tasks/select-gen-target.d.ts.map +1 -0
- package/dist/src/tasks/select-gen-target.js +44 -0
- package/dist/src/tasks/select-gen-target.js.map +1 -0
- package/dist/src/templates/command.d.ts +2 -0
- package/dist/src/templates/command.d.ts.map +1 -0
- package/dist/src/templates/command.js +19 -0
- package/dist/src/templates/command.js.map +1 -0
- package/dist/src/templates/service.d.ts +2 -0
- package/dist/src/templates/service.d.ts.map +1 -0
- package/dist/src/templates/service.js +16 -0
- package/dist/src/templates/service.js.map +1 -0
- package/dist/src/templates/task.d.ts +2 -0
- package/dist/src/templates/task.d.ts.map +1 -0
- package/dist/src/templates/task.js +20 -0
- package/dist/src/templates/task.js.map +1 -0
- package/dist/src/types/format.d.ts +7 -0
- package/dist/src/types/format.d.ts.map +1 -0
- package/dist/src/types/format.js +11 -0
- package/dist/src/types/format.js.map +1 -0
- package/dist/src/types/process.d.ts +16 -0
- package/dist/src/types/process.d.ts.map +1 -0
- package/dist/src/types/process.js +12 -0
- package/dist/src/types/process.js.map +1 -0
- package/dist/src/types/state.d.ts +26 -0
- package/dist/src/types/state.d.ts.map +1 -0
- package/dist/src/types/state.js +17 -0
- package/dist/src/types/state.js.map +1 -0
- package/dist/src/wrappers/app-task.d.ts +19 -0
- package/dist/src/wrappers/app-task.d.ts.map +1 -0
- package/dist/src/wrappers/app-task.js +61 -0
- package/dist/src/wrappers/app-task.js.map +1 -0
- package/dist/src/wrappers/command.d.ts +11 -0
- package/dist/src/wrappers/command.d.ts.map +1 -0
- package/dist/src/wrappers/command.js +36 -0
- package/dist/src/wrappers/command.js.map +1 -0
- package/dist/tssc +3 -0
- package/eslint.config.ts +11 -0
- package/install-link.sh +21 -0
- package/package.json +55 -0
- package/setup.md +37 -0
- package/src/commands/about.ts +9 -0
- package/src/commands/gen.ts +20 -0
- package/src/index.ts +38 -0
- package/src/services/arg-service.ts +52 -0
- package/src/services/banner-service.ts +42 -0
- package/src/services/file-service.ts +78 -0
- package/src/services/log-service.ts +43 -0
- package/src/services/project-service.ts +72 -0
- package/src/services/spawn-service.ts +73 -0
- package/src/services/updater-service.ts +9 -0
- package/src/services/util-service.ts +87 -0
- package/src/tasks/check-env.ts +125 -0
- package/src/tasks/generate-command.ts +87 -0
- package/src/tasks/generate-service.ts +82 -0
- package/src/tasks/generate-task.ts +83 -0
- package/src/tasks/print-about-information.ts +16 -0
- package/src/tasks/print-banner.ts +37 -0
- package/src/tasks/print-generated-results.ts +36 -0
- package/src/tasks/select-gen-target.ts +29 -0
- package/src/templates/command.ts +18 -0
- package/src/templates/service.ts +12 -0
- package/src/templates/task.ts +16 -0
- package/src/types/format.ts +6 -0
- package/src/types/process.ts +18 -0
- package/src/types/state.ts +29 -0
- package/src/wrappers/app-task.ts +48 -0
- package/src/wrappers/command.ts +21 -0
- package/tsconfig.json +27 -0
- package/tssc +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"./src/","sources":["src/templates/service.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,WAWnD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getServiceTemplate = void 0;
|
|
4
|
+
const getServiceTemplate = (className) => `import { singleton } from "tsyringe";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ${className}
|
|
8
|
+
*/
|
|
9
|
+
@singleton()
|
|
10
|
+
export default class ${className} {
|
|
11
|
+
constructor() {}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
`;
|
|
15
|
+
exports.getServiceTemplate = getServiceTemplate;
|
|
16
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"./src/","sources":["src/templates/service.ts"],"names":[],"mappings":";;;AAAO,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,EAAE,CACtD;;;KAGG,SAAS;;;uBAGS,SAAS;;;;CAI/B,CAAC;AAXW,QAAA,kBAAkB,sBAW7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"./src/","sources":["src/templates/task.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,WAehD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTaskTemplate = void 0;
|
|
4
|
+
const getTaskTemplate = (className) => `import { AppTask } from "../wrappers/app-task";
|
|
5
|
+
import { autoInjectable } from "tsyringe";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* ${className}
|
|
9
|
+
*/
|
|
10
|
+
@autoInjectable()
|
|
11
|
+
export default class ${className} extends AppTask {
|
|
12
|
+
loggerName = "${className}";
|
|
13
|
+
async run() {
|
|
14
|
+
// TODO: implement task
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
`;
|
|
19
|
+
exports.getTaskTemplate = getTaskTemplate;
|
|
20
|
+
//# sourceMappingURL=task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"./src/","sources":["src/templates/task.ts"],"names":[],"mappings":";;;AAAO,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,EAAE,CACnD;;;;KAIG,SAAS;;;uBAGS,SAAS;kBACd,SAAS;;;;;;CAM1B,CAAC;AAfW,QAAA,eAAe,mBAe1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"./src/","sources":["src/types/format.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,UAAU,cAAc;IACxB,WAAW,eAAe;CAC3B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CaseType = void 0;
|
|
4
|
+
var CaseType;
|
|
5
|
+
(function (CaseType) {
|
|
6
|
+
CaseType["KEBAB_CASE"] = "kebab-case";
|
|
7
|
+
CaseType["SNAKE_CASE"] = "snake_case";
|
|
8
|
+
CaseType["CAMEL_CASE"] = "camelCase";
|
|
9
|
+
CaseType["PASCAL_CASE"] = "pascalCase";
|
|
10
|
+
})(CaseType || (exports.CaseType = CaseType = {}));
|
|
11
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"./src/","sources":["src/types/format.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,qCAAyB,CAAA;IACzB,oCAAwB,CAAA;IACxB,sCAA0B,CAAA;AAC5B,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ProcessStatus {
|
|
2
|
+
readonly pid: number;
|
|
3
|
+
readonly status: "running" | "completed" | "unknown";
|
|
4
|
+
}
|
|
5
|
+
export interface ArgObject {
|
|
6
|
+
readonly [name: string]: string | boolean | number;
|
|
7
|
+
}
|
|
8
|
+
export type CLIArg = string | string[] | ArgObject;
|
|
9
|
+
export declare enum CLIOptions {
|
|
10
|
+
randomFont = "randomFont",
|
|
11
|
+
service = "service",
|
|
12
|
+
command = "command",
|
|
13
|
+
task = "task",
|
|
14
|
+
targetName = "targetName"
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"./src/","sources":["src/types/process.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;CACtD;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CACpD;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AAEnD,oBAAY,UAAU;IACpB,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,UAAU,eAAe;CAC1B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLIOptions = void 0;
|
|
4
|
+
var CLIOptions;
|
|
5
|
+
(function (CLIOptions) {
|
|
6
|
+
CLIOptions["randomFont"] = "randomFont";
|
|
7
|
+
CLIOptions["service"] = "service";
|
|
8
|
+
CLIOptions["command"] = "command";
|
|
9
|
+
CLIOptions["task"] = "task";
|
|
10
|
+
CLIOptions["targetName"] = "targetName";
|
|
11
|
+
})(CLIOptions || (exports.CLIOptions = CLIOptions = {}));
|
|
12
|
+
//# sourceMappingURL=process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"./src/","sources":["src/types/process.ts"],"names":[],"mappings":";;;AAWA,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;IACnB,2BAAa,CAAA;IACb,uCAAyB,CAAA;AAC3B,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CLIArg } from "./process";
|
|
2
|
+
import { AppState as State, TaskClass } from "task-script-support";
|
|
3
|
+
export declare enum GenTargetType {
|
|
4
|
+
Command = "command",
|
|
5
|
+
Service = "service",
|
|
6
|
+
Task = "task"
|
|
7
|
+
}
|
|
8
|
+
export interface AppStateData {
|
|
9
|
+
readonly errorMessages?: string[];
|
|
10
|
+
readonly banner?: {
|
|
11
|
+
readonly font?: string;
|
|
12
|
+
};
|
|
13
|
+
readonly genTargetType?: GenTargetType;
|
|
14
|
+
readonly environmentValidated?: boolean;
|
|
15
|
+
readonly outputDestination?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const EnvironmentConfigKeys: {
|
|
18
|
+
PINO_LOG_DIR_PATH: string;
|
|
19
|
+
PINO_LOG_LEVEL: string;
|
|
20
|
+
NODE_ENV: string;
|
|
21
|
+
PINO_LOG_FILENAME: string;
|
|
22
|
+
PINO_LOG_TARGET: string;
|
|
23
|
+
};
|
|
24
|
+
export type AppState = State<AppStateData, CLIArg[]>;
|
|
25
|
+
export type AppTaskClass = TaskClass<AppStateData, CLIArg[]>;
|
|
26
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"./src/","sources":["src/types/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEnE,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,eAAO,MAAM,qBAAqB;;;;;;CAMjC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnvironmentConfigKeys = exports.GenTargetType = void 0;
|
|
4
|
+
var GenTargetType;
|
|
5
|
+
(function (GenTargetType) {
|
|
6
|
+
GenTargetType["Command"] = "command";
|
|
7
|
+
GenTargetType["Service"] = "service";
|
|
8
|
+
GenTargetType["Task"] = "task";
|
|
9
|
+
})(GenTargetType || (exports.GenTargetType = GenTargetType = {}));
|
|
10
|
+
exports.EnvironmentConfigKeys = {
|
|
11
|
+
PINO_LOG_DIR_PATH: "PINO_LOG_DIR_PATH",
|
|
12
|
+
PINO_LOG_LEVEL: "PINO_LOG_LEVEL",
|
|
13
|
+
NODE_ENV: "NODE_ENV",
|
|
14
|
+
PINO_LOG_FILENAME: "PINO_LOG_FILENAME",
|
|
15
|
+
PINO_LOG_TARGET: "PINO_LOG_TARGET",
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"./src/","sources":["src/types/state.ts"],"names":[],"mappings":";;;AAGA,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;AACf,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAYY,QAAA,qBAAqB,GAAG;IACnC,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,QAAQ,EAAE,UAAU;IACpB,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;CACnC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CommandService, Task } from "task-script-support";
|
|
2
|
+
import { LogService } from "../services/log-service";
|
|
3
|
+
import { ArgService } from "../services/arg-service";
|
|
4
|
+
import type { AppState, AppStateData } from "../types/state";
|
|
5
|
+
import type { CLIArg } from "../types/process";
|
|
6
|
+
export declare class AppTask extends Task<AppStateData, CLIArg[]> {
|
|
7
|
+
_logService?: LogService | undefined;
|
|
8
|
+
_argService?: ArgService | undefined;
|
|
9
|
+
_commandService?: CommandService<AppStateData, CLIArg[]> | undefined;
|
|
10
|
+
state: AppState;
|
|
11
|
+
loggerName: string;
|
|
12
|
+
get argService(): ArgService;
|
|
13
|
+
get logger(): LogService;
|
|
14
|
+
constructor(_logService?: LogService | undefined, _argService?: ArgService | undefined, _commandService?: CommandService<AppStateData, CLIArg[]> | undefined);
|
|
15
|
+
initialize(): Promise<void>;
|
|
16
|
+
run(state: AppState): Promise<Partial<AppState> | void>;
|
|
17
|
+
setData(data: Partial<AppStateData>): AppState;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=app-task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-task.d.ts","sourceRoot":"./src/","sources":["src/wrappers/app-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBACa,OAAQ,SAAQ,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAgB9C,WAAW,CAAC,EAAE,UAAU;IACxB,WAAW,CAAC,EAAE,UAAU;IACxB,eAAe,CAAC,EAAE,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAjBjE,KAAK,EAAE,QAAQ,CAIb;IACF,UAAU,EAAE,MAAM,CAAM;IAExB,IAAI,UAAU,eAEb;IACD,IAAI,MAAM,IAAI,UAAU,CAEvB;gBAGQ,WAAW,CAAC,EAAE,UAAU,YAAA,EACxB,WAAW,CAAC,EAAE,UAAU,YAAA,EACxB,eAAe,CAAC,EAAE,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,YAAA;IAM3D,UAAU;IAOV,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAI7D,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;CAIpC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AppTask = void 0;
|
|
13
|
+
const tsyringe_1 = require("tsyringe");
|
|
14
|
+
const task_script_support_1 = require("task-script-support");
|
|
15
|
+
const log_service_1 = require("../services/log-service");
|
|
16
|
+
const arg_service_1 = require("../services/arg-service");
|
|
17
|
+
let AppTask = class AppTask extends task_script_support_1.Task {
|
|
18
|
+
_logService;
|
|
19
|
+
_argService;
|
|
20
|
+
_commandService;
|
|
21
|
+
state = {
|
|
22
|
+
id: "uninitialized",
|
|
23
|
+
args: [],
|
|
24
|
+
data: {},
|
|
25
|
+
};
|
|
26
|
+
loggerName = "";
|
|
27
|
+
get argService() {
|
|
28
|
+
return this._argService;
|
|
29
|
+
}
|
|
30
|
+
get logger() {
|
|
31
|
+
return this._logService;
|
|
32
|
+
}
|
|
33
|
+
constructor(_logService, _argService, _commandService) {
|
|
34
|
+
super();
|
|
35
|
+
this._logService = _logService;
|
|
36
|
+
this._argService = _argService;
|
|
37
|
+
this._commandService = _commandService;
|
|
38
|
+
}
|
|
39
|
+
//@override
|
|
40
|
+
async initialize() {
|
|
41
|
+
if (this.loggerName) {
|
|
42
|
+
this.logger.setPrefix(`${this.loggerName} :: `);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//@override
|
|
46
|
+
async run(state) {
|
|
47
|
+
throw new Error(`run not implemented (${state.id})`);
|
|
48
|
+
}
|
|
49
|
+
setData(data) {
|
|
50
|
+
this.state = this._commandService.setData(this.state, data);
|
|
51
|
+
return this.state;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.AppTask = AppTask;
|
|
55
|
+
exports.AppTask = AppTask = __decorate([
|
|
56
|
+
(0, tsyringe_1.autoInjectable)(),
|
|
57
|
+
__metadata("design:paramtypes", [log_service_1.LogService,
|
|
58
|
+
arg_service_1.ArgService,
|
|
59
|
+
task_script_support_1.CommandService])
|
|
60
|
+
], AppTask);
|
|
61
|
+
//# sourceMappingURL=app-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-task.js","sourceRoot":"./src/","sources":["src/wrappers/app-task.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA0C;AAC1C,6DAA2D;AAC3D,yDAAqD;AACrD,yDAAqD;AAK9C,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,0BAA4B;IAgB9C;IACA;IACA;IAjBT,KAAK,GAAa;QAChB,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;KACT,CAAC;IACF,UAAU,GAAW,EAAE,CAAC;IAExB,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAY,CAAC;IAC3B,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAY,CAAC;IAC3B,CAAC;IAED,YACS,WAAwB,EACxB,WAAwB,EACxB,eAAwD;QAE/D,KAAK,EAAE,CAAC;QAJD,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAa;QACxB,oBAAe,GAAf,eAAe,CAAyC;IAGjE,CAAC;IAED,WAAW;IACX,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,WAAW;IACX,KAAK,CAAC,GAAG,CAAC,KAAe;QACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,IAA2B;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF,CAAA;AAvCY,0BAAO;kBAAP,OAAO;IADnB,IAAA,yBAAc,GAAE;qCAiBQ,wBAAU;QACV,wBAAU;QACN,oCAAc;GAlB9B,OAAO,CAuCnB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CommandService } from "task-script-support";
|
|
2
|
+
import { AppStateData, AppTaskClass } from "../types/state";
|
|
3
|
+
import { CLIArg } from "../types/process";
|
|
4
|
+
export declare class Command {
|
|
5
|
+
private commandService;
|
|
6
|
+
tasks: (AppTaskClass | AppTaskClass[])[];
|
|
7
|
+
constructor(commandService: CommandService<AppStateData, CLIArg[]>);
|
|
8
|
+
get handler(): (cliArgs: unknown[]) => Promise<void>;
|
|
9
|
+
getTasks(): (AppTaskClass | AppTaskClass[])[];
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"./src/","sources":["src/wrappers/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,qBAAa,OAAO;IAKhB,OAAO,CAAC,cAAc;IAJxB,KAAK,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,CAAM;gBAIpC,cAAc,EAAE,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAGhE,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAEnD;IAED,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE;CAG9C"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.Command = void 0;
|
|
16
|
+
const task_script_support_1 = require("task-script-support");
|
|
17
|
+
const tsyringe_1 = require("tsyringe");
|
|
18
|
+
let Command = class Command {
|
|
19
|
+
commandService;
|
|
20
|
+
tasks = [];
|
|
21
|
+
constructor(commandService) {
|
|
22
|
+
this.commandService = commandService;
|
|
23
|
+
}
|
|
24
|
+
get handler() {
|
|
25
|
+
return this.commandService.fromTasks(this.getTasks());
|
|
26
|
+
}
|
|
27
|
+
getTasks() {
|
|
28
|
+
return this.tasks;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports.Command = Command;
|
|
32
|
+
exports.Command = Command = __decorate([
|
|
33
|
+
__param(0, (0, tsyringe_1.inject)((task_script_support_1.CommandService))),
|
|
34
|
+
__metadata("design:paramtypes", [task_script_support_1.CommandService])
|
|
35
|
+
], Command);
|
|
36
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"./src/","sources":["src/wrappers/command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAAqD;AACrD,uCAAkC;AAIlC,IAAa,OAAO,GAApB,MAAa,OAAO;IAKR;IAJV,KAAK,GAAsC,EAAE,CAAC;IAE9C,YAEU,cAAsD;QAAtD,mBAAc,GAAd,cAAc,CAAwC;IAC7D,CAAC;IAEJ,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF,CAAA;AAfY,0BAAO;kBAAP,OAAO;IAIf,WAAA,IAAA,iBAAM,EAAC,CAAA,oCAAsC,CAAA,CAAC,CAAA;qCACvB,oCAAc;GAL7B,OAAO,CAenB"}
|
package/dist/tssc
ADDED
package/eslint.config.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import eslint from "@eslint/js";
|
|
2
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
3
|
+
import tseslint from "typescript-eslint";
|
|
4
|
+
|
|
5
|
+
export default defineConfig([
|
|
6
|
+
{
|
|
7
|
+
extends: [eslint.configs.recommended, tseslint.configs.recommended],
|
|
8
|
+
files: ["./src/**/*.ts", "./tests/**/*.ts"],
|
|
9
|
+
},
|
|
10
|
+
globalIgnores(["dist/*"]),
|
|
11
|
+
]);
|
package/install-link.sh
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
SOURCE_LN=$(echo `pwd`/task-script-support-cli)
|
|
4
|
+
DEST_DIR="$HOME/.scripts"
|
|
5
|
+
DEST_LN="$DEST_DIR/task-script-support-cli"
|
|
6
|
+
|
|
7
|
+
npm i
|
|
8
|
+
|
|
9
|
+
npm run build
|
|
10
|
+
|
|
11
|
+
mkdir -p "$DEST_DIR"
|
|
12
|
+
|
|
13
|
+
echo "Creating SymLink:"
|
|
14
|
+
echo " $SOURCE_LN -> $DEST_LN"
|
|
15
|
+
|
|
16
|
+
ln -s "$SOURCE_LN" "$DEST_LN"
|
|
17
|
+
|
|
18
|
+
echo 'Installed local client as task-script-support-cli'
|
|
19
|
+
echo;
|
|
20
|
+
echo 'Try: task-script-support-cli -h'
|
|
21
|
+
echo;
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "task-script-support-cli",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"preferGlobal": true,
|
|
7
|
+
"bin": {
|
|
8
|
+
"tssc": "./dist/tssc"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "jiti src/index.ts",
|
|
12
|
+
"dev": "npm run build && node dist/src/index.js",
|
|
13
|
+
"clean": "rm -rf ./dist",
|
|
14
|
+
"lint": "eslint --config eslint.config.ts",
|
|
15
|
+
"cpsh": "cp ./tssc ./dist/",
|
|
16
|
+
"watch": "onchange './*{.json,.sh,.ts}' 'src/*.ts' -- npm run build",
|
|
17
|
+
"format": "prettier --write ./",
|
|
18
|
+
"format-check": "prettier --check .",
|
|
19
|
+
"hooks-one-time-setup": "npx simple-git-hooks",
|
|
20
|
+
"prettier-watch": "onchange \"**/*\" -- prettier --write --ignore-unknown {{changed}}",
|
|
21
|
+
"build": "rm -rf ./dist && npx tsc && node dist/src/index.js -v && npm run cpsh",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test-watch": "vitest"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [],
|
|
26
|
+
"author": "",
|
|
27
|
+
"license": "ISC",
|
|
28
|
+
"description": "Helps scaffold things in a Task Script Support Project",
|
|
29
|
+
"simple-git-hooks": {
|
|
30
|
+
"pre-commit": "npx pretty-quick --staged && npm run lint"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"chalk": "^4.1.2",
|
|
34
|
+
"commander": "^14.0.2",
|
|
35
|
+
"dotenv": "^17.2.3",
|
|
36
|
+
"figlet": "^1.9.4",
|
|
37
|
+
"immutable": "^5.1.4",
|
|
38
|
+
"reflect-metadata": "^0.2.2",
|
|
39
|
+
"task-script-support": "^2.3.0",
|
|
40
|
+
"tsyringe": "^4.10.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@eslint/js": "^9.39.3",
|
|
44
|
+
"@types/node": "^24.10.1",
|
|
45
|
+
"eslint": "^10.0.3",
|
|
46
|
+
"jiti": "^2.6.1",
|
|
47
|
+
"onchange": "^7.1.0",
|
|
48
|
+
"prettier": "^3.7.1",
|
|
49
|
+
"pretty-quick": "^4.2.2",
|
|
50
|
+
"simple-git-hooks": "^2.13.1",
|
|
51
|
+
"typescript": "^5.9.3",
|
|
52
|
+
"typescript-eslint": "^8.48.0",
|
|
53
|
+
"vitest": "^4.0.15"
|
|
54
|
+
}
|
|
55
|
+
}
|
package/setup.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
## Setup
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
npm i -g tss-cli
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
### Help Menu
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
tssc --help
|
|
11
|
+
|
|
12
|
+
Usage: tssc [options] [command]
|
|
13
|
+
|
|
14
|
+
tssc Client
|
|
15
|
+
|
|
16
|
+
Options:
|
|
17
|
+
-v, --version output the version number
|
|
18
|
+
-h, --help display help for command
|
|
19
|
+
|
|
20
|
+
Commands:
|
|
21
|
+
about [options]
|
|
22
|
+
gen [options]
|
|
23
|
+
help [command] display help for command
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
tssc gen -h
|
|
28
|
+
|
|
29
|
+
Usage: tssc gen [options]
|
|
30
|
+
|
|
31
|
+
Options:
|
|
32
|
+
-n, --target-name <name> Name of Generated Target
|
|
33
|
+
-s, --service Generate a service
|
|
34
|
+
-c, --command Generate a command
|
|
35
|
+
-t, --task Generate a task
|
|
36
|
+
-h, --help display help for command
|
|
37
|
+
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { singleton } from "tsyringe";
|
|
2
|
+
import { Command } from "../wrappers/command";
|
|
3
|
+
import PrintAboutInformation from "../tasks/print-about-information";
|
|
4
|
+
import PrintBanner from "../tasks/print-banner";
|
|
5
|
+
|
|
6
|
+
@singleton()
|
|
7
|
+
export class AboutCommand extends Command {
|
|
8
|
+
tasks = [PrintBanner, PrintAboutInformation];
|
|
9
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { singleton } from "tsyringe";
|
|
2
|
+
import { Command } from "../wrappers/command";
|
|
3
|
+
import CheckEnvironment from "../tasks/check-env";
|
|
4
|
+
import PrintBanner from "../tasks/print-banner";
|
|
5
|
+
import SelectGenTarget from "../tasks/select-gen-target";
|
|
6
|
+
import GenerateService from "../tasks/generate-service";
|
|
7
|
+
import GenerateCommand from "../tasks/generate-command";
|
|
8
|
+
import GenerateTask from "../tasks/generate-task";
|
|
9
|
+
import PrintGeneratedResults from "../tasks/print-generated-results";
|
|
10
|
+
|
|
11
|
+
@singleton()
|
|
12
|
+
export class GenCommand extends Command {
|
|
13
|
+
tasks = [
|
|
14
|
+
PrintBanner,
|
|
15
|
+
CheckEnvironment,
|
|
16
|
+
SelectGenTarget,
|
|
17
|
+
[GenerateCommand, GenerateService, GenerateTask],
|
|
18
|
+
PrintGeneratedResults,
|
|
19
|
+
];
|
|
20
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
|
|
3
|
+
import dotenv from "dotenv";
|
|
4
|
+
import { container } from "tsyringe";
|
|
5
|
+
import commander from "commander";
|
|
6
|
+
|
|
7
|
+
dotenv.config({ quiet: true });
|
|
8
|
+
|
|
9
|
+
import { UtilService } from "./services/util-service";
|
|
10
|
+
|
|
11
|
+
// initialize manual injectables
|
|
12
|
+
UtilService.initializeDependencies();
|
|
13
|
+
|
|
14
|
+
import { AboutCommand } from "./commands/about";
|
|
15
|
+
import { GenCommand } from "./commands/gen";
|
|
16
|
+
|
|
17
|
+
const { program } = commander;
|
|
18
|
+
const name = UtilService.getAppName();
|
|
19
|
+
const version = UtilService.getAppVersion();
|
|
20
|
+
|
|
21
|
+
program
|
|
22
|
+
.version(`${name} version: ${version}`, "-v, --version")
|
|
23
|
+
.description(`${name.split("-").map(UtilService.titleize).join(" ")} Client`);
|
|
24
|
+
|
|
25
|
+
program
|
|
26
|
+
.command("about")
|
|
27
|
+
.action(container.resolve(AboutCommand).handler)
|
|
28
|
+
.option("--rf, --random-font", "use a random font for app banner");
|
|
29
|
+
|
|
30
|
+
program
|
|
31
|
+
.command("gen")
|
|
32
|
+
.option("-n, --target-name <name>", "Name of Generated Target")
|
|
33
|
+
.option("-s, --service", "Generate a service")
|
|
34
|
+
.option("-c, --command", "Generate a command")
|
|
35
|
+
.option("-t, --task", "Generate a task")
|
|
36
|
+
.action(container.resolve(GenCommand).handler);
|
|
37
|
+
|
|
38
|
+
program.parse(process.argv);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { inject, singleton } from "tsyringe";
|
|
2
|
+
import { CLIArg, ArgObject, CLIOptions } from "../types/process";
|
|
3
|
+
import { UtilService } from "./util-service";
|
|
4
|
+
|
|
5
|
+
@singleton()
|
|
6
|
+
export class ArgService {
|
|
7
|
+
constructor(@inject("Args") private args?: CLIArg[]) {}
|
|
8
|
+
|
|
9
|
+
getOption<T = string>(longNameOption: string): T {
|
|
10
|
+
if (!this.args) {
|
|
11
|
+
throw new Error("Missing Arguments in ArgService!");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const argObjects: ArgObject[] = [];
|
|
15
|
+
for (const a of this.args) {
|
|
16
|
+
if (Array.isArray(a) || typeof a === "string") continue;
|
|
17
|
+
argObjects.push(a);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const found = argObjects.find(
|
|
21
|
+
(arg: ArgObject) => arg[longNameOption] !== undefined,
|
|
22
|
+
);
|
|
23
|
+
if (found) {
|
|
24
|
+
return found[longNameOption] as T;
|
|
25
|
+
} else {
|
|
26
|
+
throw new Error(`Unable to resolve argument option ${longNameOption}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
hasFlag(flag: string) {
|
|
31
|
+
if (!this.args) {
|
|
32
|
+
throw new Error("Missing Arguments in ArgService!");
|
|
33
|
+
}
|
|
34
|
+
return this.args.find((arg) => {
|
|
35
|
+
if (typeof arg === "string") return false;
|
|
36
|
+
if (Array.isArray(arg)) return false;
|
|
37
|
+
return arg[flag] !== undefined;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
cleanTargetName(name: string): string {
|
|
42
|
+
return UtilService.titleizeAll(name);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
getTargetName(): string | undefined {
|
|
46
|
+
if (!this.hasFlag(CLIOptions.targetName)) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const argInput = this.getOption(CLIOptions.targetName);
|
|
50
|
+
return this.cleanTargetName(argInput);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { singleton } from "tsyringe";
|
|
2
|
+
import figlet from "figlet";
|
|
3
|
+
|
|
4
|
+
@singleton()
|
|
5
|
+
export class BannerService {
|
|
6
|
+
_selectFonts = [
|
|
7
|
+
"AMC Slash",
|
|
8
|
+
"Calvin S",
|
|
9
|
+
"Bell",
|
|
10
|
+
"Pagga",
|
|
11
|
+
"Shadow",
|
|
12
|
+
"Small Block",
|
|
13
|
+
"Cybermedium",
|
|
14
|
+
"Kban",
|
|
15
|
+
"Short",
|
|
16
|
+
"Coinstak",
|
|
17
|
+
];
|
|
18
|
+
defaultFontFamily: string = "Pagga";
|
|
19
|
+
|
|
20
|
+
async toBanner(text: string, font?: string): Promise<string> {
|
|
21
|
+
return await figlet.text(text, {
|
|
22
|
+
font: font || this.defaultFontFamily,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async getSupportedFonts(): Promise<string[]> {
|
|
27
|
+
return await new Promise((res, rej) => {
|
|
28
|
+
figlet.fonts((err, fonts) =>
|
|
29
|
+
err ? rej(err) : res(fonts || ([] as string[])),
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async getRandomFont(): Promise<string> {
|
|
35
|
+
const randomIndexBetween = (start = 0, end = 0) =>
|
|
36
|
+
Math.floor(Math.random() * (end - start + 1)) + start;
|
|
37
|
+
|
|
38
|
+
const bannerFonts: string[] = await this.getSupportedFonts();
|
|
39
|
+
const randomFontIndex = randomIndexBetween(0, bannerFonts.length - 1);
|
|
40
|
+
return bannerFonts[randomFontIndex] || this.defaultFontFamily;
|
|
41
|
+
}
|
|
42
|
+
}
|