task-script-support-cli 0.1.1 → 0.2.3
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/assets/yargs-template/task-runner/.prettierignore +3 -0
- package/assets/yargs-template/task-runner/.prettierrc +1 -0
- package/assets/yargs-template/task-runner/.vscode/launch.json +34 -0
- package/assets/yargs-template/task-runner/eslint.config.ts +11 -0
- package/assets/yargs-template/task-runner/install-link.sh +21 -0
- package/assets/yargs-template/task-runner/package-lock.json +3387 -0
- package/assets/yargs-template/task-runner/package.json +51 -0
- package/assets/yargs-template/task-runner/src/commands/verify.ts +10 -0
- package/assets/yargs-template/task-runner/src/index.ts +46 -0
- package/assets/yargs-template/task-runner/src/services/banner-service.ts +38 -0
- package/assets/yargs-template/task-runner/src/services/log-service.ts +48 -0
- package/assets/yargs-template/task-runner/src/services/spawn-service.ts +87 -0
- package/assets/yargs-template/task-runner/src/services/util-service.ts +28 -0
- package/assets/yargs-template/task-runner/src/tasks/check-env.ts +49 -0
- package/assets/yargs-template/task-runner/src/tasks/log-state.ts +22 -0
- package/assets/yargs-template/task-runner/src/tasks/print-banner.ts +73 -0
- package/assets/yargs-template/task-runner/src/types/process.ts +9 -0
- package/assets/yargs-template/task-runner/src/types/state.ts +31 -0
- package/assets/yargs-template/task-runner/src/wrappers/app-task.ts +42 -0
- package/assets/yargs-template/task-runner/src/wrappers/command.ts +20 -0
- package/assets/yargs-template/task-runner/src/wrappers/dependencies.ts +24 -0
- package/assets/yargs-template/task-runner/task-runner +3 -0
- package/assets/yargs-template/task-runner/templater.sh +57 -0
- package/assets/yargs-template/task-runner/tests/commands/verify.test.ts +42 -0
- package/assets/yargs-template/task-runner/tests/services/spawn-service.test.ts +132 -0
- package/assets/yargs-template/task-runner/tests/services/util-service.test.ts +36 -0
- package/assets/yargs-template/task-runner/tests/setup.ts +1 -0
- package/assets/yargs-template/task-runner/tests/tasks/check-env.test.ts +30 -0
- package/assets/yargs-template/task-runner/tsconfig.json +27 -0
- package/assets/yargs-template/task-runner/vitest.config.ts +14 -0
- package/dist/assets/yargs-template/task-runner/.prettierignore +3 -0
- package/dist/assets/yargs-template/task-runner/.prettierrc +1 -0
- package/dist/assets/yargs-template/task-runner/.vscode/launch.json +34 -0
- package/dist/assets/yargs-template/task-runner/eslint.config.ts +11 -0
- package/dist/assets/yargs-template/task-runner/install-link.sh +21 -0
- package/dist/assets/yargs-template/task-runner/package-lock.json +3387 -0
- package/dist/assets/yargs-template/task-runner/package.json +51 -0
- package/dist/assets/yargs-template/task-runner/src/commands/verify.ts +10 -0
- package/dist/assets/yargs-template/task-runner/src/index.ts +46 -0
- package/dist/assets/yargs-template/task-runner/src/services/banner-service.ts +38 -0
- package/dist/assets/yargs-template/task-runner/src/services/log-service.ts +48 -0
- package/dist/assets/yargs-template/task-runner/src/services/spawn-service.ts +87 -0
- package/dist/assets/yargs-template/task-runner/src/services/util-service.ts +28 -0
- package/dist/assets/yargs-template/task-runner/src/tasks/check-env.ts +49 -0
- package/dist/assets/yargs-template/task-runner/src/tasks/log-state.ts +22 -0
- package/dist/assets/yargs-template/task-runner/src/tasks/print-banner.ts +73 -0
- package/dist/assets/yargs-template/task-runner/src/types/process.ts +9 -0
- package/dist/assets/yargs-template/task-runner/src/types/state.ts +31 -0
- package/dist/assets/yargs-template/task-runner/src/wrappers/app-task.ts +42 -0
- package/dist/assets/yargs-template/task-runner/src/wrappers/command.ts +20 -0
- package/dist/assets/yargs-template/task-runner/src/wrappers/dependencies.ts +24 -0
- package/dist/assets/yargs-template/task-runner/task-runner +3 -0
- package/dist/assets/yargs-template/task-runner/templater.sh +57 -0
- package/dist/assets/yargs-template/task-runner/tests/commands/verify.test.ts +42 -0
- package/dist/assets/yargs-template/task-runner/tests/services/spawn-service.test.ts +132 -0
- package/dist/assets/yargs-template/task-runner/tests/services/util-service.test.ts +36 -0
- package/dist/assets/yargs-template/task-runner/tests/setup.ts +1 -0
- package/dist/assets/yargs-template/task-runner/tests/tasks/check-env.test.ts +30 -0
- package/dist/assets/yargs-template/task-runner/tsconfig.json +27 -0
- package/dist/assets/yargs-template/task-runner/vitest.config.ts +14 -0
- package/dist/package.json +8 -3
- package/dist/src/commands/gen.d.ts +3 -1
- package/dist/src/commands/gen.d.ts.map +1 -1
- package/dist/src/commands/gen.js +4 -0
- package/dist/src/commands/gen.js.map +1 -1
- package/dist/src/commands/new.d.ts +8 -0
- package/dist/src/commands/new.d.ts.map +1 -0
- package/dist/src/commands/new.js +25 -0
- package/dist/src/commands/new.js.map +1 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/cache-service.d.ts +11 -0
- package/dist/src/services/cache-service.d.ts.map +1 -0
- package/dist/src/services/cache-service.js +64 -0
- package/dist/src/services/cache-service.js.map +1 -0
- package/dist/src/services/file-service.d.ts +5 -1
- package/dist/src/services/file-service.d.ts.map +1 -1
- package/dist/src/services/file-service.js +16 -2
- package/dist/src/services/file-service.js.map +1 -1
- package/dist/src/services/log-service.d.ts.map +1 -1
- package/dist/src/services/log-service.js +7 -1
- package/dist/src/services/log-service.js.map +1 -1
- package/dist/src/services/project-service.d.ts +2 -2
- package/dist/src/services/project-service.d.ts.map +1 -1
- package/dist/src/services/project-service.js +5 -7
- package/dist/src/services/project-service.js.map +1 -1
- package/dist/src/services/prompt-service.d.ts +27 -0
- package/dist/src/services/prompt-service.d.ts.map +1 -0
- package/dist/src/services/prompt-service.js +67 -0
- package/dist/src/services/prompt-service.js.map +1 -0
- package/dist/src/services/spawn-service.d.ts +2 -1
- package/dist/src/services/spawn-service.d.ts.map +1 -1
- package/dist/src/services/spawn-service.js +16 -1
- package/dist/src/services/spawn-service.js.map +1 -1
- package/dist/src/services/util-service.d.ts +2 -0
- package/dist/src/services/util-service.d.ts.map +1 -1
- package/dist/src/services/util-service.js +4 -0
- package/dist/src/services/util-service.js.map +1 -1
- package/dist/src/tasks/check-env.d.ts +3 -2
- package/dist/src/tasks/check-env.d.ts.map +1 -1
- package/dist/src/tasks/check-env.js +11 -3
- package/dist/src/tasks/check-env.js.map +1 -1
- package/dist/src/tasks/create-new-project.d.ts +26 -0
- package/dist/src/tasks/create-new-project.d.ts.map +1 -0
- package/dist/src/tasks/create-new-project.js +76 -0
- package/dist/src/tasks/create-new-project.js.map +1 -0
- package/dist/src/tasks/generate-command.d.ts +18 -6
- package/dist/src/tasks/generate-command.d.ts.map +1 -1
- package/dist/src/tasks/generate-command.js +66 -29
- package/dist/src/tasks/generate-command.js.map +1 -1
- package/dist/src/tasks/generate-service.d.ts +10 -6
- package/dist/src/tasks/generate-service.d.ts.map +1 -1
- package/dist/src/tasks/generate-service.js +27 -26
- package/dist/src/tasks/generate-service.js.map +1 -1
- package/dist/src/tasks/generate-task.d.ts +10 -6
- package/dist/src/tasks/generate-task.d.ts.map +1 -1
- package/dist/src/tasks/generate-task.js +27 -26
- package/dist/src/tasks/generate-task.js.map +1 -1
- package/dist/src/tasks/print-banner.d.ts +3 -3
- package/dist/src/tasks/print-banner.d.ts.map +1 -1
- package/dist/src/tasks/print-banner.js +12 -8
- package/dist/src/tasks/print-banner.js.map +1 -1
- package/dist/src/tasks/print-generated-results.d.ts.map +1 -1
- package/dist/src/tasks/print-generated-results.js +13 -10
- package/dist/src/tasks/print-generated-results.js.map +1 -1
- package/dist/src/tasks/select-gen-target-name.d.ts +15 -0
- package/dist/src/tasks/select-gen-target-name.d.ts.map +1 -0
- package/dist/src/tasks/select-gen-target-name.js +58 -0
- package/dist/src/tasks/select-gen-target-name.js.map +1 -0
- package/dist/src/tasks/select-gen-target.d.ts +5 -0
- package/dist/src/tasks/select-gen-target.d.ts.map +1 -1
- package/dist/src/tasks/select-gen-target.js +16 -2
- package/dist/src/tasks/select-gen-target.js.map +1 -1
- package/dist/src/tasks/sync-configuration.d.ts +34 -0
- package/dist/src/tasks/sync-configuration.d.ts.map +1 -0
- package/dist/src/tasks/sync-configuration.js +116 -0
- package/dist/src/tasks/sync-configuration.js.map +1 -0
- package/dist/src/tasks/test-task.d.ts +10 -0
- package/dist/src/tasks/test-task.d.ts.map +1 -0
- package/dist/src/tasks/test-task.js +36 -0
- package/dist/src/tasks/test-task.js.map +1 -0
- package/dist/src/templates/command.js +2 -2
- package/dist/src/templates/command.js.map +1 -1
- package/dist/src/templates/service.js +1 -1
- package/dist/src/templates/service.js.map +1 -1
- package/dist/src/types/process.d.ts +2 -1
- package/dist/src/types/process.d.ts.map +1 -1
- package/dist/src/types/process.js +1 -0
- package/dist/src/types/process.js.map +1 -1
- package/dist/src/types/project.d.ts +12 -0
- package/dist/src/types/project.d.ts.map +1 -0
- package/dist/src/types/project.js +3 -0
- package/dist/src/types/project.js.map +1 -0
- package/dist/src/types/state.d.ts +5 -1
- package/dist/src/types/state.d.ts.map +1 -1
- package/dist/src/types/state.js +1 -0
- package/dist/src/types/state.js.map +1 -1
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +16 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +8 -3
- package/src/commands/gen.ts +4 -0
- package/src/commands/new.ts +10 -0
- package/src/index.ts +7 -0
- package/src/services/cache-service.ts +50 -0
- package/src/services/file-service.ts +18 -1
- package/src/services/log-service.ts +6 -1
- package/src/services/project-service.ts +2 -2
- package/src/services/prompt-service.ts +60 -0
- package/src/services/spawn-service.ts +15 -1
- package/src/services/util-service.ts +5 -0
- package/src/tasks/check-env.ts +10 -2
- package/src/tasks/create-new-project.ts +66 -0
- package/src/tasks/generate-command.ts +84 -31
- package/src/tasks/generate-service.ts +24 -28
- package/src/tasks/generate-task.ts +24 -28
- package/src/tasks/print-banner.ts +10 -6
- package/src/tasks/print-generated-results.ts +15 -15
- package/src/tasks/select-gen-target-name.ts +44 -0
- package/src/tasks/select-gen-target.ts +16 -1
- package/src/tasks/sync-configuration.ts +121 -0
- package/src/tasks/test-task.ts +20 -0
- package/src/templates/command.ts +2 -2
- package/src/templates/service.ts +1 -1
- package/src/types/process.ts +1 -0
- package/src/types/project.ts +12 -0
- package/src/types/state.ts +7 -1
- package/tests/index.spec.ts +8 -0
- package/tests/setup.ts +1 -0
- package/tsconfig.json +1 -1
- package/vitest.config.ts +14 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { autoInjectable } from "tsyringe";
|
|
2
|
-
import { AppState } from "../types/state";
|
|
2
|
+
import { AppState, EnvironmentConfigKeys } from "../types/state";
|
|
3
3
|
import { AppTask } from "../wrappers/app-task";
|
|
4
4
|
import { BannerService } from "../services/banner-service";
|
|
5
5
|
import { UtilService } from "../services/util-service";
|
|
@@ -10,8 +10,8 @@ export default class PrintBanner extends AppTask {
|
|
|
10
10
|
loggerName = "Print Banner";
|
|
11
11
|
|
|
12
12
|
constructor(
|
|
13
|
-
private
|
|
14
|
-
private
|
|
13
|
+
private bannnerService: BannerService,
|
|
14
|
+
private utilService: UtilService,
|
|
15
15
|
) {
|
|
16
16
|
super();
|
|
17
17
|
}
|
|
@@ -19,19 +19,23 @@ export default class PrintBanner extends AppTask {
|
|
|
19
19
|
async run(): Promise<Partial<AppState> | void> {
|
|
20
20
|
let font = "";
|
|
21
21
|
|
|
22
|
+
if (process.env[EnvironmentConfigKeys.TSSC_SILENCE_BANNER]) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
22
26
|
if (this.argService.hasFlag("randomFont")) {
|
|
23
|
-
font = await this.
|
|
27
|
+
font = await this.bannnerService.getRandomFont();
|
|
24
28
|
console.log(`Using random font ${font}`);
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
console.log(
|
|
28
32
|
chalk.blueBright(
|
|
29
|
-
await this.
|
|
33
|
+
await this.bannnerService.toBanner(this.utilService.getAppName(), font),
|
|
30
34
|
),
|
|
31
35
|
);
|
|
32
36
|
|
|
33
37
|
this.setData({
|
|
34
|
-
banner: { font: font || this.
|
|
38
|
+
banner: { font: font || this.bannnerService.defaultFontFamily },
|
|
35
39
|
});
|
|
36
40
|
}
|
|
37
41
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { AppTask } from "../wrappers/app-task";
|
|
3
3
|
import { autoInjectable } from "tsyringe";
|
|
4
|
-
import { GenTargetType } from "../types/state";
|
|
5
4
|
import { UtilService } from "../services/util-service";
|
|
5
|
+
import { ProjectService } from "../services/project-service";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Prints the generated output results
|
|
@@ -16,21 +16,21 @@ export default class PrintGeneratedResults extends AppTask {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
async run() {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
`Generated Results for ${this.utilService.titleize(target)}`,
|
|
23
|
-
),
|
|
24
|
-
);
|
|
19
|
+
const genType: string = this.state.data.genTargetType
|
|
20
|
+
? this.utilService.titleize(this.state.data.genTargetType)
|
|
21
|
+
: "Project";
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
console.log(`
|
|
28
|
-
|
|
29
|
-
Generated new file:
|
|
23
|
+
this.logger.info(`Generated Results for ${chalk.blueBright(genType)}`);
|
|
30
24
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
// wait for logs to flush before mixing in console.log
|
|
26
|
+
await this.utilService.sleep(200);
|
|
27
|
+
|
|
28
|
+
console.log(`
|
|
29
|
+
|
|
30
|
+
Generated new ${this.state.data.outputDestination?.includes(ProjectService.defaults.extention) ? "file" : "project"}:
|
|
31
|
+
|
|
32
|
+
${this.state.data.outputDestination || "<None>"}
|
|
33
|
+
|
|
34
|
+
`);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { AppTask } from "../wrappers/app-task";
|
|
3
|
+
import { autoInjectable } from "tsyringe";
|
|
4
|
+
import { PromptService } from "../services/prompt-service";
|
|
5
|
+
import { ProjectService } from "../services/project-service";
|
|
6
|
+
import { UtilService } from "../services/util-service";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* SelectGenTargetName
|
|
10
|
+
*/
|
|
11
|
+
@autoInjectable()
|
|
12
|
+
export default class SelectGenTargetName extends AppTask {
|
|
13
|
+
loggerName = "SelectGenTargetName";
|
|
14
|
+
constructor(
|
|
15
|
+
private promptService: PromptService,
|
|
16
|
+
private utilService: UtilService,
|
|
17
|
+
) {
|
|
18
|
+
super();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async run() {
|
|
22
|
+
this.logger.info(chalk.blueBright("Checking Target Name"));
|
|
23
|
+
|
|
24
|
+
let targetName = this.argService.getTargetName();
|
|
25
|
+
if (!targetName) {
|
|
26
|
+
targetName =
|
|
27
|
+
(await this.promptService.getInput(
|
|
28
|
+
`Enter Name for ${chalk.blueBright(this.utilService.titleize(this.state.data.genTargetType!))}`,
|
|
29
|
+
)) || ProjectService.defaults.targetName;
|
|
30
|
+
}
|
|
31
|
+
if (!targetName) {
|
|
32
|
+
throw new Error("Unable to resolve targetName");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
this.logger.debug(`Target selected: ${chalk.magentaBright(targetName)}`);
|
|
36
|
+
this.setData({ genTargetName: targetName });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async preRun() {
|
|
40
|
+
if (!this.state.data.genTargetType) {
|
|
41
|
+
throw new Error("Unable to determine genTargetType");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -2,6 +2,7 @@ import chalk from "chalk";
|
|
|
2
2
|
import { AppTask } from "../wrappers/app-task";
|
|
3
3
|
import { autoInjectable } from "tsyringe";
|
|
4
4
|
import { GenTargetType } from "../types/state";
|
|
5
|
+
import { PromptService } from "../services/prompt-service";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Sets the genTargetType based on input
|
|
@@ -9,6 +10,11 @@ import { GenTargetType } from "../types/state";
|
|
|
9
10
|
@autoInjectable()
|
|
10
11
|
export default class SelectGenTarget extends AppTask {
|
|
11
12
|
loggerName = "Select Target";
|
|
13
|
+
|
|
14
|
+
constructor(private promptService: PromptService) {
|
|
15
|
+
super();
|
|
16
|
+
}
|
|
17
|
+
|
|
12
18
|
async run() {
|
|
13
19
|
let target: GenTargetType = GenTargetType.Command;
|
|
14
20
|
this.logger.info(chalk.blueBright("Checking Target"));
|
|
@@ -20,10 +26,19 @@ export default class SelectGenTarget extends AppTask {
|
|
|
20
26
|
} else if (this.argService.hasFlag("command")) {
|
|
21
27
|
target = GenTargetType.Command;
|
|
22
28
|
} else {
|
|
23
|
-
this.
|
|
29
|
+
target = await this.getGenTargetInput();
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
this.logger.debug(`Target selected: ${chalk.magentaBright(target)}`);
|
|
27
33
|
this.setData({ genTargetType: target });
|
|
28
34
|
}
|
|
35
|
+
|
|
36
|
+
async getGenTargetInput() {
|
|
37
|
+
const targetType: GenTargetType = await this.promptService.select(
|
|
38
|
+
`Select a type of ${chalk.blueBright("Resource")} to create`,
|
|
39
|
+
[GenTargetType.Command, GenTargetType.Service, GenTargetType.Task],
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
return targetType;
|
|
43
|
+
}
|
|
29
44
|
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { autoInjectable } from "tsyringe";
|
|
2
|
+
import { AppTask } from "../wrappers/app-task";
|
|
3
|
+
import { PromptService } from "../services/prompt-service";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { CacheService } from "../services/cache-service";
|
|
6
|
+
import { ProjectConfig, ProjectData } from "../types/project";
|
|
7
|
+
import { GenTargetType } from "../types/state";
|
|
8
|
+
import { UtilService } from "../services/util-service";
|
|
9
|
+
|
|
10
|
+
@autoInjectable()
|
|
11
|
+
export class SyncConfiguration extends AppTask {
|
|
12
|
+
loggerName = "Sync Configuration";
|
|
13
|
+
|
|
14
|
+
constructor(
|
|
15
|
+
private promptService: PromptService,
|
|
16
|
+
private cacheService: CacheService,
|
|
17
|
+
private utilService: UtilService,
|
|
18
|
+
) {
|
|
19
|
+
super();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async preRun() {
|
|
23
|
+
this.verifyState();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async run() {
|
|
27
|
+
this.logger.info(chalk.blueBright("Checking Cache"));
|
|
28
|
+
let project: ProjectConfig & ProjectData = this.state.data.project!;
|
|
29
|
+
|
|
30
|
+
// see if we have a project config in the cache with rootDir path as the key
|
|
31
|
+
const cachedProject = await this.cacheService.getProject(project.rootDir);
|
|
32
|
+
if (cachedProject) {
|
|
33
|
+
this.logger.debug(chalk.dim("loaded project from cache"));
|
|
34
|
+
project = { ...this.state.data.project!, ...cachedProject };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// get target destination if not cached yet
|
|
38
|
+
switch (this.state.data.genTargetType) {
|
|
39
|
+
case GenTargetType.Command:
|
|
40
|
+
project.commandDestination =
|
|
41
|
+
project.commandDestination || (await this.getDestination("command"));
|
|
42
|
+
|
|
43
|
+
this.logDestination(project.commandDestination);
|
|
44
|
+
break;
|
|
45
|
+
case GenTargetType.Service:
|
|
46
|
+
project.serviceDestination =
|
|
47
|
+
project.serviceDestination || (await this.getDestination("service"));
|
|
48
|
+
|
|
49
|
+
this.logDestination(project.serviceDestination);
|
|
50
|
+
break;
|
|
51
|
+
case GenTargetType.Task:
|
|
52
|
+
project.taskDestination =
|
|
53
|
+
project.taskDestination || (await this.getDestination("task"));
|
|
54
|
+
|
|
55
|
+
this.logDestination(project.taskDestination);
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
throw new Error(`Uknown target type: ${this.state.data.genTargetType}`);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// cache any changes
|
|
62
|
+
await this.cacheService.writeProject(project);
|
|
63
|
+
this.setData({ project });
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Prints the target destination path string
|
|
68
|
+
*
|
|
69
|
+
* @param dest the destination path to log
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
logDestination = (dest: string = "") =>
|
|
73
|
+
this.logger.debug(`Destination: ${chalk.magentaBright(dest)}`);
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Gets the destination path for generating resources by resource type.
|
|
77
|
+
* If only one resource destination folder was found it is returned
|
|
78
|
+
* otherwise the user is prompted to select one from the found folders.
|
|
79
|
+
*
|
|
80
|
+
* @param keyType the type of destination to resolve
|
|
81
|
+
* @returns the path of the resolved destination
|
|
82
|
+
*/
|
|
83
|
+
async getDestination(keyType: "command" | "task" | "service") {
|
|
84
|
+
const foldersKey: keyof typeof this.state.data.project =
|
|
85
|
+
`${keyType}Folders` as keyof typeof this.state.data.project;
|
|
86
|
+
|
|
87
|
+
const nonTestFolders: string[] = (
|
|
88
|
+
this.state.data.project![foldersKey] as string[]
|
|
89
|
+
).filter((folder: string) => !(folder || "").includes("/tests/"));
|
|
90
|
+
|
|
91
|
+
// if we only have one folder found, use this as the destination
|
|
92
|
+
if (nonTestFolders.length === 1) {
|
|
93
|
+
return nonTestFolders[0] || "";
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// otherwise prompt to pick one
|
|
97
|
+
const userSelection: string = await this.promptService.select(
|
|
98
|
+
`Multiple folders found. Select correct ${chalk.blueBright(this.utilService.titleize(keyType))} folder`,
|
|
99
|
+
nonTestFolders,
|
|
100
|
+
);
|
|
101
|
+
this.logger.debug(chalk.blackBright(`caching for next time`));
|
|
102
|
+
return userSelection;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Check we have all the required state set
|
|
107
|
+
*/
|
|
108
|
+
verifyState() {
|
|
109
|
+
if (!this.state.data.project || !this.state.data.project.rootDir) {
|
|
110
|
+
throw new Error(
|
|
111
|
+
`Missing project rootDir! SyncConfiguration requires the CheckEnvironment task to be ran first.`,
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (!this.state.data.genTargetType) {
|
|
116
|
+
throw new Error(
|
|
117
|
+
`Missing genTargetType! SyncConfiguration requires the SelectGenTarget task to be ran first.`,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { autoInjectable } from "tsyringe";
|
|
2
|
+
import { AppState } from "../types/state";
|
|
3
|
+
import { AppTask } from "../wrappers/app-task";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { PromptService } from "../services/prompt-service";
|
|
6
|
+
|
|
7
|
+
@autoInjectable()
|
|
8
|
+
export default class TestTask extends AppTask {
|
|
9
|
+
loggerName = "Testing Things";
|
|
10
|
+
|
|
11
|
+
constructor(private promptService: PromptService) {
|
|
12
|
+
super();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async run(): Promise<Partial<AppState> | void> {
|
|
16
|
+
// test task
|
|
17
|
+
|
|
18
|
+
console.log(chalk.magentaBright(JSON.stringify(this.state)));
|
|
19
|
+
}
|
|
20
|
+
}
|
package/src/templates/command.ts
CHANGED
|
@@ -7,12 +7,12 @@ import { Command } from "../wrappers/command";
|
|
|
7
7
|
${tasks
|
|
8
8
|
.keys()
|
|
9
9
|
.toArray()
|
|
10
|
-
.map((k) => `import
|
|
10
|
+
.map((k) => `import ${k} from "${tasks.get(k)}";`)
|
|
11
11
|
.join("\n")}
|
|
12
12
|
|
|
13
13
|
@singleton()
|
|
14
14
|
export class ${className} extends Command {
|
|
15
|
-
tasks = [${tasks.keys().toArray().join(",")}];
|
|
15
|
+
tasks = [${tasks.keys().toArray().join(", ")}];
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
`;
|
package/src/templates/service.ts
CHANGED
package/src/types/process.ts
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ProjectConfig {
|
|
2
|
+
rootDir: string;
|
|
3
|
+
taskDestination?: string | undefined;
|
|
4
|
+
serviceDestination?: string | undefined;
|
|
5
|
+
commandDestination?: string | undefined;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ProjectData {
|
|
9
|
+
taskFolders: string[];
|
|
10
|
+
serviceFolders: string[];
|
|
11
|
+
commandFolders: string[];
|
|
12
|
+
}
|
package/src/types/state.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CLIArg } from "./process";
|
|
2
2
|
import { AppState as State, TaskClass } from "task-script-support";
|
|
3
|
+
import { ProjectConfig, ProjectData } from "./project";
|
|
3
4
|
|
|
4
5
|
export enum GenTargetType {
|
|
5
6
|
Command = "command",
|
|
@@ -8,12 +9,16 @@ export enum GenTargetType {
|
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
export interface AppStateData {
|
|
11
|
-
readonly errorMessages?: string[];
|
|
12
12
|
readonly banner?: {
|
|
13
13
|
readonly font?: string;
|
|
14
14
|
};
|
|
15
15
|
readonly genTargetType?: GenTargetType;
|
|
16
|
+
readonly genTargetName?: string;
|
|
17
|
+
|
|
16
18
|
readonly environmentValidated?: boolean;
|
|
19
|
+
readonly project?: ProjectConfig & ProjectData;
|
|
20
|
+
|
|
21
|
+
readonly errorMessages?: string[];
|
|
17
22
|
readonly outputDestination?: string;
|
|
18
23
|
}
|
|
19
24
|
|
|
@@ -23,6 +28,7 @@ export const EnvironmentConfigKeys = {
|
|
|
23
28
|
NODE_ENV: "NODE_ENV",
|
|
24
29
|
PINO_LOG_FILENAME: "PINO_LOG_FILENAME",
|
|
25
30
|
PINO_LOG_TARGET: "PINO_LOG_TARGET",
|
|
31
|
+
TSSC_SILENCE_BANNER: "TSSC_SILENCE_BANNER",
|
|
26
32
|
};
|
|
27
33
|
|
|
28
34
|
export type AppState = State<AppStateData, CLIArg[]>;
|
package/tests/setup.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "reflect-metadata";
|
package/tsconfig.json
CHANGED
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const { defineConfig, configDefaults } = require("vitest/config");
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
test: {
|
|
5
|
+
globals: true,
|
|
6
|
+
environment: "node",
|
|
7
|
+
setupFiles: "./tests/setup.ts",
|
|
8
|
+
exclude: [...configDefaults.exclude, "assets/**/*", "dist/**/*"],
|
|
9
|
+
coverage: {
|
|
10
|
+
provider: "v8",
|
|
11
|
+
reporter: ["text", "json", "html"],
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
});
|