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.
Files changed (151) hide show
  1. package/.prettierignore +3 -0
  2. package/.prettierrc +1 -0
  3. package/.vscode/launch.json +34 -0
  4. package/README.md +3 -0
  5. package/dist/eslint.config.d.ts +3 -0
  6. package/dist/eslint.config.d.ts.map +1 -0
  7. package/dist/eslint.config.js +16 -0
  8. package/dist/eslint.config.js.map +1 -0
  9. package/dist/package.json +55 -0
  10. package/dist/src/commands/about.d.ts +7 -0
  11. package/dist/src/commands/about.d.ts.map +1 -0
  12. package/dist/src/commands/about.js +24 -0
  13. package/dist/src/commands/about.js.map +1 -0
  14. package/dist/src/commands/gen.d.ts +12 -0
  15. package/dist/src/commands/gen.d.ts.map +1 -0
  16. package/dist/src/commands/gen.js +35 -0
  17. package/dist/src/commands/gen.js.map +1 -0
  18. package/dist/src/index.d.ts +2 -0
  19. package/dist/src/index.d.ts.map +1 -0
  20. package/dist/src/index.js +34 -0
  21. package/dist/src/index.js.map +1 -0
  22. package/dist/src/services/arg-service.d.ts +10 -0
  23. package/dist/src/services/arg-service.d.ts.map +1 -0
  24. package/dist/src/services/arg-service.js +71 -0
  25. package/dist/src/services/arg-service.js.map +1 -0
  26. package/dist/src/services/banner-service.d.ts +8 -0
  27. package/dist/src/services/banner-service.d.ts.map +1 -0
  28. package/dist/src/services/banner-service.js +50 -0
  29. package/dist/src/services/banner-service.js.map +1 -0
  30. package/dist/src/services/file-service.d.ts +12 -0
  31. package/dist/src/services/file-service.d.ts.map +1 -0
  32. package/dist/src/services/file-service.js +82 -0
  33. package/dist/src/services/file-service.js.map +1 -0
  34. package/dist/src/services/log-service.d.ts +14 -0
  35. package/dist/src/services/log-service.d.ts.map +1 -0
  36. package/dist/src/services/log-service.js +61 -0
  37. package/dist/src/services/log-service.js.map +1 -0
  38. package/dist/src/services/project-service.d.ts +31 -0
  39. package/dist/src/services/project-service.d.ts.map +1 -0
  40. package/dist/src/services/project-service.js +86 -0
  41. package/dist/src/services/project-service.js.map +1 -0
  42. package/dist/src/services/spawn-service.d.ts +12 -0
  43. package/dist/src/services/spawn-service.d.ts.map +1 -0
  44. package/dist/src/services/spawn-service.js +111 -0
  45. package/dist/src/services/spawn-service.js.map +1 -0
  46. package/dist/src/services/updater-service.d.ts +7 -0
  47. package/dist/src/services/updater-service.d.ts.map +1 -0
  48. package/dist/src/services/updater-service.js +24 -0
  49. package/dist/src/services/updater-service.js.map +1 -0
  50. package/dist/src/services/util-service.d.ts +23 -0
  51. package/dist/src/services/util-service.d.ts.map +1 -0
  52. package/dist/src/services/util-service.js +89 -0
  53. package/dist/src/services/util-service.js.map +1 -0
  54. package/dist/src/tasks/check-env.d.ts +44 -0
  55. package/dist/src/tasks/check-env.d.ts.map +1 -0
  56. package/dist/src/tasks/check-env.js +126 -0
  57. package/dist/src/tasks/check-env.js.map +1 -0
  58. package/dist/src/tasks/generate-command.d.ts +23 -0
  59. package/dist/src/tasks/generate-command.d.ts.map +1 -0
  60. package/dist/src/tasks/generate-command.js +91 -0
  61. package/dist/src/tasks/generate-command.js.map +1 -0
  62. package/dist/src/tasks/generate-service.d.ts +26 -0
  63. package/dist/src/tasks/generate-service.d.ts.map +1 -0
  64. package/dist/src/tasks/generate-service.js +88 -0
  65. package/dist/src/tasks/generate-service.js.map +1 -0
  66. package/dist/src/tasks/generate-task.d.ts +26 -0
  67. package/dist/src/tasks/generate-task.d.ts.map +1 -0
  68. package/dist/src/tasks/generate-task.js +88 -0
  69. package/dist/src/tasks/generate-task.js.map +1 -0
  70. package/dist/src/tasks/print-about-information.d.ts +8 -0
  71. package/dist/src/tasks/print-about-information.d.ts.map +1 -0
  72. package/dist/src/tasks/print-about-information.js +30 -0
  73. package/dist/src/tasks/print-about-information.js.map +1 -0
  74. package/dist/src/tasks/print-banner.d.ts +12 -0
  75. package/dist/src/tasks/print-banner.d.ts.map +1 -0
  76. package/dist/src/tasks/print-banner.js +47 -0
  77. package/dist/src/tasks/print-banner.js.map +1 -0
  78. package/dist/src/tasks/print-generated-results.d.ts +12 -0
  79. package/dist/src/tasks/print-generated-results.d.ts.map +1 -0
  80. package/dist/src/tasks/print-generated-results.js +48 -0
  81. package/dist/src/tasks/print-generated-results.js.map +1 -0
  82. package/dist/src/tasks/select-gen-target.d.ts +9 -0
  83. package/dist/src/tasks/select-gen-target.d.ts.map +1 -0
  84. package/dist/src/tasks/select-gen-target.js +44 -0
  85. package/dist/src/tasks/select-gen-target.js.map +1 -0
  86. package/dist/src/templates/command.d.ts +2 -0
  87. package/dist/src/templates/command.d.ts.map +1 -0
  88. package/dist/src/templates/command.js +19 -0
  89. package/dist/src/templates/command.js.map +1 -0
  90. package/dist/src/templates/service.d.ts +2 -0
  91. package/dist/src/templates/service.d.ts.map +1 -0
  92. package/dist/src/templates/service.js +16 -0
  93. package/dist/src/templates/service.js.map +1 -0
  94. package/dist/src/templates/task.d.ts +2 -0
  95. package/dist/src/templates/task.d.ts.map +1 -0
  96. package/dist/src/templates/task.js +20 -0
  97. package/dist/src/templates/task.js.map +1 -0
  98. package/dist/src/types/format.d.ts +7 -0
  99. package/dist/src/types/format.d.ts.map +1 -0
  100. package/dist/src/types/format.js +11 -0
  101. package/dist/src/types/format.js.map +1 -0
  102. package/dist/src/types/process.d.ts +16 -0
  103. package/dist/src/types/process.d.ts.map +1 -0
  104. package/dist/src/types/process.js +12 -0
  105. package/dist/src/types/process.js.map +1 -0
  106. package/dist/src/types/state.d.ts +26 -0
  107. package/dist/src/types/state.d.ts.map +1 -0
  108. package/dist/src/types/state.js +17 -0
  109. package/dist/src/types/state.js.map +1 -0
  110. package/dist/src/wrappers/app-task.d.ts +19 -0
  111. package/dist/src/wrappers/app-task.d.ts.map +1 -0
  112. package/dist/src/wrappers/app-task.js +61 -0
  113. package/dist/src/wrappers/app-task.js.map +1 -0
  114. package/dist/src/wrappers/command.d.ts +11 -0
  115. package/dist/src/wrappers/command.d.ts.map +1 -0
  116. package/dist/src/wrappers/command.js +36 -0
  117. package/dist/src/wrappers/command.js.map +1 -0
  118. package/dist/tssc +3 -0
  119. package/eslint.config.ts +11 -0
  120. package/install-link.sh +21 -0
  121. package/package.json +55 -0
  122. package/setup.md +37 -0
  123. package/src/commands/about.ts +9 -0
  124. package/src/commands/gen.ts +20 -0
  125. package/src/index.ts +38 -0
  126. package/src/services/arg-service.ts +52 -0
  127. package/src/services/banner-service.ts +42 -0
  128. package/src/services/file-service.ts +78 -0
  129. package/src/services/log-service.ts +43 -0
  130. package/src/services/project-service.ts +72 -0
  131. package/src/services/spawn-service.ts +73 -0
  132. package/src/services/updater-service.ts +9 -0
  133. package/src/services/util-service.ts +87 -0
  134. package/src/tasks/check-env.ts +125 -0
  135. package/src/tasks/generate-command.ts +87 -0
  136. package/src/tasks/generate-service.ts +82 -0
  137. package/src/tasks/generate-task.ts +83 -0
  138. package/src/tasks/print-about-information.ts +16 -0
  139. package/src/tasks/print-banner.ts +37 -0
  140. package/src/tasks/print-generated-results.ts +36 -0
  141. package/src/tasks/select-gen-target.ts +29 -0
  142. package/src/templates/command.ts +18 -0
  143. package/src/templates/service.ts +12 -0
  144. package/src/templates/task.ts +16 -0
  145. package/src/types/format.ts +6 -0
  146. package/src/types/process.ts +18 -0
  147. package/src/types/state.ts +29 -0
  148. package/src/wrappers/app-task.ts +48 -0
  149. package/src/wrappers/command.ts +21 -0
  150. package/tsconfig.json +27 -0
  151. package/tssc +3 -0
@@ -0,0 +1,2 @@
1
+ export declare const getServiceTemplate: (className: string) => string;
2
+ //# sourceMappingURL=service.d.ts.map
@@ -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,2 @@
1
+ export declare const getTaskTemplate: (className: string) => string;
2
+ //# sourceMappingURL=task.d.ts.map
@@ -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,7 @@
1
+ export declare enum CaseType {
2
+ KEBAB_CASE = "kebab-case",
3
+ SNAKE_CASE = "snake_case",
4
+ CAMEL_CASE = "camelCase",
5
+ PASCAL_CASE = "pascalCase"
6
+ }
7
+ //# sourceMappingURL=format.d.ts.map
@@ -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
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require("./src/index.js");
@@ -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
+ ]);
@@ -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
+ }