task-script-support-cli 0.3.0 → 0.3.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/package-lock.json +128 -110
- package/assets/yargs-template/task-runner/src/commands/verify.ts +3 -2
- package/assets/yargs-template/task-runner/src/services/banner-service.ts +13 -9
- package/assets/yargs-template/task-runner/src/tasks/banner/print-banner.ts +38 -0
- package/assets/yargs-template/task-runner/src/tasks/banner/resolve-banner-font.ts +70 -0
- package/assets/yargs-template/task-runner/src/types/state.ts +4 -0
- package/{dist/assets/yargs-template/task-runner/src/wrappers → assets/yargs-template/task-runner/src/wrappers/electives}/concurrent-task-group.ts +4 -4
- package/assets/yargs-template/task-runner/src/wrappers/electives/resolver-task.ts +87 -0
- package/assets/yargs-template/task-runner/src/wrappers/{sequential-task-group.ts → electives/sequential-task-group.ts} +4 -4
- package/assets/yargs-template/task-runner/tests/commands/verify.test.ts +14 -21
- package/dist/assets/yargs-template/task-runner/package-lock.json +128 -110
- package/dist/assets/yargs-template/task-runner/src/commands/verify.ts +3 -2
- package/dist/assets/yargs-template/task-runner/src/services/banner-service.ts +13 -9
- package/dist/assets/yargs-template/task-runner/src/tasks/banner/print-banner.ts +38 -0
- package/dist/assets/yargs-template/task-runner/src/tasks/banner/resolve-banner-font.ts +70 -0
- package/dist/assets/yargs-template/task-runner/src/types/state.ts +4 -0
- package/{assets/yargs-template/task-runner/src/wrappers → dist/assets/yargs-template/task-runner/src/wrappers/electives}/concurrent-task-group.ts +4 -4
- package/dist/assets/yargs-template/task-runner/src/wrappers/electives/resolver-task.ts +87 -0
- package/dist/assets/yargs-template/task-runner/src/wrappers/{sequential-task-group.ts → electives/sequential-task-group.ts} +4 -4
- package/dist/assets/yargs-template/task-runner/tests/commands/verify.test.ts +14 -21
- package/dist/package.json +1 -1
- 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 +2 -0
- package/dist/src/commands/gen.js.map +1 -1
- package/dist/src/services/project-service.d.ts +21 -0
- package/dist/src/services/project-service.d.ts.map +1 -1
- package/dist/src/services/project-service.js +41 -0
- package/dist/src/services/project-service.js.map +1 -1
- package/dist/src/services/templater-service.d.ts +1 -0
- package/dist/src/services/templater-service.d.ts.map +1 -1
- package/dist/src/services/templater-service.js +9 -3
- package/dist/src/services/templater-service.js.map +1 -1
- package/dist/src/tasks/generate/generate-command.d.ts +10 -3
- package/dist/src/tasks/generate/generate-command.d.ts.map +1 -1
- package/dist/src/tasks/generate/generate-command.js +27 -11
- package/dist/src/tasks/generate/generate-command.js.map +1 -1
- package/dist/src/tasks/generate/generate-service.d.ts +10 -3
- package/dist/src/tasks/generate/generate-service.d.ts.map +1 -1
- package/dist/src/tasks/generate/generate-service.js +26 -12
- package/dist/src/tasks/generate/generate-service.js.map +1 -1
- package/dist/src/tasks/generate/generate-task.d.ts +10 -3
- package/dist/src/tasks/generate/generate-task.d.ts.map +1 -1
- package/dist/src/tasks/generate/generate-task.js +27 -13
- package/dist/src/tasks/generate/generate-task.js.map +1 -1
- package/dist/src/tasks/generate/project-context-guard.d.ts +1 -1
- package/dist/src/tasks/generate/project-context-guard.js +1 -1
- package/dist/src/tasks/generate/resolve-injectables.d.ts +56 -0
- package/dist/src/tasks/generate/resolve-injectables.d.ts.map +1 -0
- package/dist/src/tasks/generate/resolve-injectables.js +134 -0
- package/dist/src/tasks/generate/resolve-injectables.js.map +1 -0
- package/dist/src/tasks/generate/select-gen-target-name.js +4 -4
- package/dist/src/tasks/generate/select-gen-target-name.js.map +1 -1
- package/dist/src/tasks/generate/select-gen-target.d.ts +1 -1
- package/dist/src/tasks/generate/select-gen-target.js +2 -2
- package/dist/src/tasks/generate/select-gen-target.js.map +1 -1
- package/dist/src/tasks/stdout/print-generated-results.js +2 -2
- package/dist/src/tasks/stdout/print-generated-results.js.map +1 -1
- package/dist/src/tasks/sync-configuration.d.ts +1 -1
- package/dist/src/tasks/sync-configuration.js +6 -6
- package/dist/src/tasks/sync-configuration.js.map +1 -1
- package/dist/src/types/state.d.ts +7 -3
- package/dist/src/types/state.d.ts.map +1 -1
- package/dist/src/types/state.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/gen.ts +2 -0
- package/src/services/project-service.ts +54 -0
- package/src/services/templater-service.ts +15 -3
- package/src/tasks/generate/generate-command.ts +21 -11
- package/src/tasks/generate/generate-service.ts +20 -11
- package/src/tasks/generate/generate-task.ts +21 -12
- package/src/tasks/generate/project-context-guard.ts +1 -1
- package/src/tasks/generate/resolve-injectables.ts +154 -0
- package/src/tasks/generate/select-gen-target-name.ts +4 -4
- package/src/tasks/generate/select-gen-target.ts +2 -2
- package/src/tasks/stdout/print-generated-results.ts +2 -2
- package/src/tasks/sync-configuration.ts +6 -6
- package/src/types/state.ts +9 -3
- package/assets/yargs-template/task-runner/src/tasks/print-banner.ts +0 -73
- package/dist/assets/yargs-template/task-runner/src/tasks/print-banner.ts +0 -73
- package/dist/src/wrappers/gen-app-task.d.ts +0 -50
- package/dist/src/wrappers/gen-app-task.d.ts.map +0 -1
- package/dist/src/wrappers/gen-app-task.js +0 -124
- package/dist/src/wrappers/gen-app-task.js.map +0 -1
- package/src/wrappers/gen-app-task.ts +0 -150
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { AppTask } from "
|
|
1
|
+
import { AppTask } from "../app-task";
|
|
2
2
|
import { autoInjectable } from "tsyringe";
|
|
3
|
-
import { AppTaskClass } from "
|
|
3
|
+
import { AppTaskClass } from "../../types/state";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Wrapper for Running a Group of Concurrent Tasks
|
|
7
7
|
*
|
|
8
|
-
* Extend this class and override the tasks
|
|
8
|
+
* Extend this class and override the tasks field to run tasks
|
|
9
9
|
* concurrently within a Task itself. The fallback run method
|
|
10
|
-
* handles state and execution of the tasks.
|
|
10
|
+
* handles the state and execution of the tasks.
|
|
11
11
|
*/
|
|
12
12
|
@autoInjectable()
|
|
13
13
|
export default class ConcurrentTaskGroup extends AppTask {
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AppState,
|
|
3
|
+
AppStateData,
|
|
4
|
+
CLIArgs,
|
|
5
|
+
DefaultValues,
|
|
6
|
+
EnvironmentConfigKeys,
|
|
7
|
+
} from "../../types/state";
|
|
8
|
+
import { AppTask } from "../app-task";
|
|
9
|
+
import { autoInjectable } from "tsyringe";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* ResolverTask
|
|
13
|
+
*
|
|
14
|
+
* Wrapper Task that resolves a value in the AppStateData.
|
|
15
|
+
*
|
|
16
|
+
* Allows enforcing the following order of precedence for resolving a value:
|
|
17
|
+
* - CLI arg (if provided)
|
|
18
|
+
* - Environment variable (if set)
|
|
19
|
+
* - Default / Fallback value
|
|
20
|
+
*/
|
|
21
|
+
@autoInjectable()
|
|
22
|
+
export default class ResolverTask extends AppTask {
|
|
23
|
+
loggerName = "Resolver";
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
Extend the class and override the following fields to customize the resolver.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// the target field to resolve on AppStateData
|
|
30
|
+
declare resolveTo: keyof AppStateData;
|
|
31
|
+
|
|
32
|
+
// arg override has highest precedence
|
|
33
|
+
declare argVar?: keyof CLIArgs;
|
|
34
|
+
|
|
35
|
+
// then env override
|
|
36
|
+
declare envVar?: keyof typeof EnvironmentConfigKeys;
|
|
37
|
+
|
|
38
|
+
// finally, a default fallback value can be provided
|
|
39
|
+
declare defaultKey?: keyof typeof DefaultValues;
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
Optionally, override these methods to customize additional behavior of the resolver.
|
|
43
|
+
*/
|
|
44
|
+
async getDefaultValue<T>(): Promise<T | undefined> {
|
|
45
|
+
return this.defaultKey ? (DefaultValues[this.defaultKey] as T) : undefined;
|
|
46
|
+
}
|
|
47
|
+
async getArg<T>(args: CLIArgs): Promise<T | undefined> {
|
|
48
|
+
if (this.argVar && args[this.argVar]) {
|
|
49
|
+
return args[this.argVar] as T;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async getEnv<T>(): Promise<T | undefined> {
|
|
53
|
+
if (this.envVar && process.env[this.envVar]) {
|
|
54
|
+
return process.env[this.envVar] as T;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
The ResolverTask run method keeps the resolution order consistent across all
|
|
60
|
+
resolver tasks. It should not be overridden subclasses.
|
|
61
|
+
*/
|
|
62
|
+
async run(): Promise<Partial<AppState> | void> {
|
|
63
|
+
const argResult = await this.getArg(this.state.args);
|
|
64
|
+
if (argResult) {
|
|
65
|
+
return {
|
|
66
|
+
data: {
|
|
67
|
+
[this.resolveTo]: argResult,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const envResult = await this.getEnv();
|
|
73
|
+
if (envResult) {
|
|
74
|
+
return {
|
|
75
|
+
data: {
|
|
76
|
+
[this.resolveTo]: envResult,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
data: {
|
|
83
|
+
[this.resolveTo]: await this.getDefaultValue(),
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { AppTask } from "
|
|
1
|
+
import { AppTask } from "../app-task";
|
|
2
2
|
import { autoInjectable } from "tsyringe";
|
|
3
|
-
import { AppTaskClass } from "
|
|
3
|
+
import { AppTaskClass } from "../../types/state";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Wrapper for Running a Group of Sequential Tasks
|
|
7
7
|
*
|
|
8
|
-
* Extend this class and override the tasks
|
|
9
|
-
* of tasks in order as a Task. The fallback run method handles state
|
|
8
|
+
* Extend this class and override the tasks field to run a sequence
|
|
9
|
+
* of tasks in order as a Task. The fallback run method handles the state
|
|
10
10
|
* and execution of the tasks.
|
|
11
11
|
*/
|
|
12
12
|
@autoInjectable()
|
|
@@ -1,41 +1,34 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { describe, it, expect, vi } from "vitest";
|
|
3
|
-
import PrintBanner from "../../src/tasks/print-banner";
|
|
3
|
+
import PrintBanner from "../../src/tasks/banner/print-banner";
|
|
4
4
|
import CheckEnv from "../../src/tasks/check-env";
|
|
5
5
|
import { container } from "tsyringe";
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
6
|
+
import ResolveBannerFont from "../../src/tasks/banner/resolve-banner-font";
|
|
7
|
+
import { VerifyCommand } from "../../src/commands/verify";
|
|
8
|
+
import { CLIArgs } from "../../src/types/state";
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
vi.mock("../../src/tasks/print-banner"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return { default: PrintBannerMock };
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
vi.mock("../../src/tasks/check-env", () => {
|
|
17
|
-
const CheckEnvMock = vi.fn();
|
|
18
|
-
CheckEnvMock.prototype.run = vi.fn();
|
|
19
|
-
return { default: CheckEnvMock };
|
|
20
|
-
});
|
|
10
|
+
vi.mock("../../src/tasks/banner/resolve-banner-font");
|
|
11
|
+
vi.mock("../../src/tasks/banner/print-banner");
|
|
12
|
+
vi.mock("../../src/tasks/check-env");
|
|
13
|
+
vi.mock("../../src/tasks/log-state");
|
|
21
14
|
|
|
22
15
|
describe("verify command", () => {
|
|
23
16
|
it("should run PrintBanner and then CheckEnv", async () => {
|
|
24
|
-
const
|
|
25
|
-
container.register("Args", { useValue: [] });
|
|
17
|
+
const args: CLIArgs[] = [];
|
|
26
18
|
|
|
19
|
+
container.register("Args", { useValue: args });
|
|
27
20
|
// when
|
|
28
|
-
await
|
|
29
|
-
tasks,
|
|
30
|
-
{} as CLIArgs,
|
|
31
|
-
);
|
|
21
|
+
await container.resolve(VerifyCommand).handler(args);
|
|
32
22
|
|
|
33
23
|
expect(PrintBanner).toHaveBeenCalled();
|
|
34
24
|
expect(CheckEnv).toHaveBeenCalled();
|
|
35
25
|
|
|
36
26
|
const printBannerInstance = (PrintBanner as any).mock.instances[0];
|
|
37
27
|
const checkEnvInstance = (CheckEnv as any).mock.instances[0];
|
|
28
|
+
const resolveBannerFontInstance = (ResolveBannerFont as any).mock
|
|
29
|
+
.instances[0];
|
|
38
30
|
|
|
31
|
+
expect(resolveBannerFontInstance.run).toHaveBeenCalled();
|
|
39
32
|
expect(printBannerInstance.run).toHaveBeenCalled();
|
|
40
33
|
expect(checkEnvInstance.run).toHaveBeenCalled();
|
|
41
34
|
});
|
package/dist/package.json
CHANGED
|
@@ -4,11 +4,13 @@ import PrintBanner from "../tasks/stdout/print-banner";
|
|
|
4
4
|
import SelectGenTarget from "../tasks/generate/select-gen-target";
|
|
5
5
|
import GenerateService from "../tasks/generate/generate-service";
|
|
6
6
|
import GenerateCommand from "../tasks/generate/generate-command";
|
|
7
|
+
import GenerateTask from "../tasks/generate/generate-task";
|
|
7
8
|
import PrintGeneratedResults from "../tasks/stdout/print-generated-results";
|
|
8
9
|
import SyncConfiguration from "../tasks/sync-configuration";
|
|
9
10
|
import SelectGenTargetName from "../tasks/generate/select-gen-target-name";
|
|
10
11
|
import ProjectContextGuard from "../tasks/generate/project-context-guard";
|
|
12
|
+
import ResolveInjectables from "../tasks/generate/resolve-injectables";
|
|
11
13
|
export declare class GenCommand extends Command {
|
|
12
|
-
tasks: (typeof PrintBanner | typeof CheckEnvironment | typeof SelectGenTarget | typeof PrintGeneratedResults | typeof SyncConfiguration | typeof SelectGenTargetName | typeof ProjectContextGuard | (typeof GenerateService | typeof GenerateCommand)[])[];
|
|
14
|
+
tasks: (typeof PrintBanner | typeof CheckEnvironment | typeof SelectGenTarget | typeof PrintGeneratedResults | typeof SyncConfiguration | typeof SelectGenTargetName | typeof ProjectContextGuard | typeof ResolveInjectables | (typeof GenerateService | typeof GenerateCommand | typeof GenerateTask)[])[];
|
|
13
15
|
}
|
|
14
16
|
//# sourceMappingURL=gen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen.d.ts","sourceRoot":"./src/","sources":["src/commands/gen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,eAAe,MAAM,qCAAqC,CAAC;AAClE,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,eAAe,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"gen.d.ts","sourceRoot":"./src/","sources":["src/commands/gen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,eAAe,MAAM,qCAAqC,CAAC;AAClE,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,YAAY,MAAM,iCAAiC,CAAC;AAC3D,OAAO,qBAAqB,MAAM,yCAAyC,CAAC;AAC5E,OAAO,iBAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,mBAAmB,MAAM,0CAA0C,CAAC;AAC3E,OAAO,mBAAmB,MAAM,yCAAyC,CAAC;AAC1E,OAAO,kBAAkB,MAAM,uCAAuC,CAAC;AAEvE,qBACa,UAAW,SAAQ,OAAO;IACrC,KAAK,wSAUH;CACH"}
|
package/dist/src/commands/gen.js
CHANGED
|
@@ -22,6 +22,7 @@ const print_generated_results_1 = __importDefault(require("../tasks/stdout/print
|
|
|
22
22
|
const sync_configuration_1 = __importDefault(require("../tasks/sync-configuration"));
|
|
23
23
|
const select_gen_target_name_1 = __importDefault(require("../tasks/generate/select-gen-target-name"));
|
|
24
24
|
const project_context_guard_1 = __importDefault(require("../tasks/generate/project-context-guard"));
|
|
25
|
+
const resolve_injectables_1 = __importDefault(require("../tasks/generate/resolve-injectables"));
|
|
25
26
|
let GenCommand = class GenCommand extends command_1.Command {
|
|
26
27
|
tasks = [
|
|
27
28
|
print_banner_1.default,
|
|
@@ -30,6 +31,7 @@ let GenCommand = class GenCommand extends command_1.Command {
|
|
|
30
31
|
select_gen_target_1.default,
|
|
31
32
|
sync_configuration_1.default,
|
|
32
33
|
select_gen_target_name_1.default,
|
|
34
|
+
resolve_injectables_1.default,
|
|
33
35
|
[generate_command_1.default, generate_service_1.default, generate_task_1.default],
|
|
34
36
|
print_generated_results_1.default,
|
|
35
37
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen.js","sourceRoot":"./src/","sources":["src/commands/gen.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAqC;AACrC,iDAA8C;AAC9C,mEAAkD;AAClD,gFAAuD;AACvD,4FAAkE;AAClE,0FAAiE;AACjE,0FAAiE;AACjE,oFAA2D;AAC3D,sGAA4E;AAC5E,qFAA4D;AAC5D,sGAA2E;AAC3E,oGAA0E;
|
|
1
|
+
{"version":3,"file":"gen.js","sourceRoot":"./src/","sources":["src/commands/gen.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAqC;AACrC,iDAA8C;AAC9C,mEAAkD;AAClD,gFAAuD;AACvD,4FAAkE;AAClE,0FAAiE;AACjE,0FAAiE;AACjE,oFAA2D;AAC3D,sGAA4E;AAC5E,qFAA4D;AAC5D,sGAA2E;AAC3E,oGAA0E;AAC1E,gGAAuE;AAGhE,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,iBAAO;IACrC,KAAK,GAAG;QACN,sBAAW;QACX,mBAAgB;QAChB,+BAAmB;QACnB,2BAAe;QACf,4BAAiB;QACjB,gCAAmB;QACnB,6BAAkB;QAClB,CAAC,0BAAe,EAAE,0BAAe,EAAE,uBAAY,CAAC;QAChD,iCAAqB;KACtB,CAAC;CACH,CAAA;AAZY,gCAAU;qBAAV,UAAU;IADtB,IAAA,oBAAS,GAAE;GACC,UAAU,CAYtB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { FileService } from "./file-service";
|
|
2
2
|
import { CaseType } from "../types/format";
|
|
3
3
|
import { UtilService } from "./util-service";
|
|
4
|
+
import { GenData } from "../types/state";
|
|
5
|
+
import { ProjectImport } from "../types/project";
|
|
4
6
|
export declare class ProjectService {
|
|
5
7
|
private fileService;
|
|
6
8
|
private utilService;
|
|
@@ -11,6 +13,18 @@ export declare class ProjectService {
|
|
|
11
13
|
extention: string;
|
|
12
14
|
};
|
|
13
15
|
constructor(fileService: FileService, utilService: UtilService);
|
|
16
|
+
/**
|
|
17
|
+
* Formalize the selected imports into a format that can be used in the source code being generated.
|
|
18
|
+
*
|
|
19
|
+
* 1. Generate a PascalCased import name from the filename
|
|
20
|
+
* 2. Convert to a relative path
|
|
21
|
+
* 3. Remove the file extension for TypeScript import
|
|
22
|
+
*
|
|
23
|
+
* @param selectedPaths the selected file paths to formalize
|
|
24
|
+
* @param relativeSource the path to the source file being generated to resolve relative paths
|
|
25
|
+
* @returns the formalized ProjectImport array ({ importClassName, importPath })
|
|
26
|
+
*/
|
|
27
|
+
formalizeImports(selectedPaths: string[], relativeSource: string): ProjectImport[];
|
|
14
28
|
/**
|
|
15
29
|
* Get all task files found in the project
|
|
16
30
|
*
|
|
@@ -18,6 +32,13 @@ export declare class ProjectService {
|
|
|
18
32
|
*/
|
|
19
33
|
getTaskFiles(): string[];
|
|
20
34
|
private getSourceFiles;
|
|
35
|
+
/**
|
|
36
|
+
* Returns a map of import class names to import paths.
|
|
37
|
+
*
|
|
38
|
+
* @param genData the GenData object containing the ProjectImport objects to map
|
|
39
|
+
* @returns a Map of import class names to relative import paths
|
|
40
|
+
*/
|
|
41
|
+
getImportMap(genData: GenData): Map<string, string>;
|
|
21
42
|
/**
|
|
22
43
|
* Looks for a naming convention on the given filename array. Returns
|
|
23
44
|
* the first found convention or the default one if it can't be detected.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-service.d.ts","sourceRoot":"./src/","sources":["src/services/project-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"project-service.d.ts","sourceRoot":"./src/","sources":["src/services/project-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBACa,cAAc;IASvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IATrB,MAAM,CAAC,QAAQ;;;;;MAKb;gBAGQ,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW;IAGlC;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,EAAE,MAAM,GACrB,aAAa,EAAE;IAsBlB;;;;OAIG;IACH,YAAY;IAQZ,OAAO,CAAC,cAAc;IAgBtB;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO;IAU7B;;;;;;OAMG;IACH,aAAa,IAAI,QAAQ;CAiB1B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,cAAc,CAAC,QAAQ,CAAC"}
|
|
@@ -29,6 +29,34 @@ let ProjectService = class ProjectService {
|
|
|
29
29
|
this.fileService = fileService;
|
|
30
30
|
this.utilService = utilService;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Formalize the selected imports into a format that can be used in the source code being generated.
|
|
34
|
+
*
|
|
35
|
+
* 1. Generate a PascalCased import name from the filename
|
|
36
|
+
* 2. Convert to a relative path
|
|
37
|
+
* 3. Remove the file extension for TypeScript import
|
|
38
|
+
*
|
|
39
|
+
* @param selectedPaths the selected file paths to formalize
|
|
40
|
+
* @param relativeSource the path to the source file being generated to resolve relative paths
|
|
41
|
+
* @returns the formalized ProjectImport array ({ importClassName, importPath })
|
|
42
|
+
*/
|
|
43
|
+
formalizeImports(selectedPaths, relativeSource) {
|
|
44
|
+
if (!selectedPaths?.length) {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
const formalizedPaths = [];
|
|
48
|
+
for (const fullPath of selectedPaths) {
|
|
49
|
+
const filename = this.fileService.getFilenameNoExt(fullPath);
|
|
50
|
+
const importClassName = this.utilService.titleizedToCase(this.utilService.titleizeAll(filename), format_1.CaseType.PASCAL_CASE);
|
|
51
|
+
formalizedPaths.push({
|
|
52
|
+
importClassName,
|
|
53
|
+
importPath: this.fileService
|
|
54
|
+
.toRelativePath(relativeSource, fullPath)
|
|
55
|
+
.replace(ProjectService_1.defaults.extention, ""),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return formalizedPaths;
|
|
59
|
+
}
|
|
32
60
|
/**
|
|
33
61
|
* Get all task files found in the project
|
|
34
62
|
*
|
|
@@ -54,6 +82,19 @@ let ProjectService = class ProjectService {
|
|
|
54
82
|
.flatMap((dirPath) => this.fileService.getFilesInDir(dirPath)),
|
|
55
83
|
];
|
|
56
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Returns a map of import class names to import paths.
|
|
87
|
+
*
|
|
88
|
+
* @param genData the GenData object containing the ProjectImport objects to map
|
|
89
|
+
* @returns a Map of import class names to relative import paths
|
|
90
|
+
*/
|
|
91
|
+
getImportMap(genData) {
|
|
92
|
+
const imports = genData.imports || [];
|
|
93
|
+
return new Map(imports.map((imp) => [
|
|
94
|
+
imp.importClassName,
|
|
95
|
+
imp.importPath,
|
|
96
|
+
]));
|
|
97
|
+
}
|
|
57
98
|
/**
|
|
58
99
|
* Looks for a naming convention on the given filename array. Returns
|
|
59
100
|
* the first found convention or the default one if it can't be detected.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-service.js","sourceRoot":"./src/","sources":["src/services/project-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,uCAA0C;AAC1C,iDAA6C;AAC7C,4CAA2C;AAC3C,iDAA6C;
|
|
1
|
+
{"version":3,"file":"project-service.js","sourceRoot":"./src/","sources":["src/services/project-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare class TemplateService {
|
|
|
13
13
|
constructor(spawnService: SpawnService, logger: LogService);
|
|
14
14
|
runTemplater(outputName: string): Promise<void>;
|
|
15
15
|
private ensureDestinationExists;
|
|
16
|
+
toLogPath(pathString: string): string;
|
|
16
17
|
private copyDirectories;
|
|
17
18
|
private copyFiles;
|
|
18
19
|
private fixNaming;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templater-service.d.ts","sourceRoot":"./src/","sources":["src/services/templater-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"templater-service.d.ts","sourceRoot":"./src/","sources":["src/services/templater-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQ3C,qBACa,eAAe;IAgCxB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IAhChB,OAAO,CAAC,UAAU,CAA0B;IAE5C,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,WAAW,CAAU;IAE7B,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,cAAc,CAapB;IACF,OAAO,CAAC,WAAW,CAOjB;gBAGQ,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,UAAU;IASf,YAAY,CAAC,UAAU,EAAE,MAAM;YAoB9B,uBAAuB;IAMrC,SAAS,CAAC,UAAU,EAAE,MAAM;YAOd,eAAe;YAUf,SAAS;YAUT,SAAS;YAWT,eAAe;YAOf,kBAAkB;YAOlB,gCAAgC;YAUhC,gBAAgB;YAahB,iBAAiB;CAQhC"}
|
|
@@ -19,6 +19,7 @@ const tsyringe_1 = require("tsyringe");
|
|
|
19
19
|
const spawn_service_1 = require("./spawn-service");
|
|
20
20
|
const log_service_1 = require("./log-service");
|
|
21
21
|
const docker_ignore_1 = require("../templates/docker-ignore");
|
|
22
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
22
23
|
const gitignoreContent = `node_modules
|
|
23
24
|
dist
|
|
24
25
|
.env`;
|
|
@@ -79,11 +80,15 @@ let TemplateService = class TemplateService {
|
|
|
79
80
|
node_fs_1.default.mkdirSync(this.destination, { recursive: true });
|
|
80
81
|
}
|
|
81
82
|
}
|
|
83
|
+
toLogPath(pathString) {
|
|
84
|
+
return node_path_1.default.relative(process.cwd(), pathString.replaceAll("task-runner", this.outputName));
|
|
85
|
+
}
|
|
82
86
|
async copyDirectories() {
|
|
83
87
|
for (const folder of this.dirListToCopy) {
|
|
84
88
|
const src = node_path_1.default.join(this.sourceDir, folder);
|
|
85
89
|
const dest = node_path_1.default.join(this.destination, folder);
|
|
86
|
-
this.logger.debug(`Running Copy: cp -R ${src} ${dest}`)
|
|
90
|
+
// this.logger.debug(`Running Copy: cp -R ${src} ${dest}`);;
|
|
91
|
+
this.logger.debug(`Generating folder ${chalk_1.default.dim(this.toLogPath(dest))}`);
|
|
87
92
|
node_fs_1.default.cpSync(src, dest, { recursive: true });
|
|
88
93
|
}
|
|
89
94
|
}
|
|
@@ -91,7 +96,8 @@ let TemplateService = class TemplateService {
|
|
|
91
96
|
for (const filename of this.fileListToCopy) {
|
|
92
97
|
const src = node_path_1.default.join(this.sourceDir, filename);
|
|
93
98
|
const dest = node_path_1.default.join(this.destination, filename);
|
|
94
|
-
this.logger.debug(`Running Copy: cp ${src} ${dest}`);
|
|
99
|
+
// this.logger.debug(`Running Copy: cp ${src} ${dest}`);
|
|
100
|
+
this.logger.debug(`Generating file ${chalk_1.default.dim(this.toLogPath(dest))}`);
|
|
95
101
|
node_fs_1.default.copyFileSync(src, dest);
|
|
96
102
|
}
|
|
97
103
|
}
|
|
@@ -122,7 +128,7 @@ let TemplateService = class TemplateService {
|
|
|
122
128
|
const rename = (ext = "") => {
|
|
123
129
|
const src = node_path_1.default.join(this.destination, `task-runner${ext}`);
|
|
124
130
|
const dest = node_path_1.default.join(this.destination, `${this.outputName}${ext}`);
|
|
125
|
-
this.logger.debug(`
|
|
131
|
+
this.logger.debug(`Fixing references ${chalk_1.default.dim(`(${this.outputName}${ext})`)}`);
|
|
126
132
|
node_fs_1.default.renameSync(src, dest);
|
|
127
133
|
};
|
|
128
134
|
rename();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templater-service.js","sourceRoot":"./src/","sources":["src/services/templater-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,sDAAyB;AACzB,uCAA0C;AAC1C,mDAA+C;AAC/C,+CAA2C;AAC3C,8DAAkE;
|
|
1
|
+
{"version":3,"file":"templater-service.js","sourceRoot":"./src/","sources":["src/services/templater-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { AppState } from "../../types/state";
|
|
2
|
-
import
|
|
2
|
+
import { ProjectService } from "../../services/project-service";
|
|
3
|
+
import { AppTask } from "../../wrappers/app-task";
|
|
4
|
+
import { FileService } from "../../services/file-service";
|
|
5
|
+
import { UtilService } from "../../services/util-service";
|
|
3
6
|
/**
|
|
4
7
|
* Generates a new command class
|
|
5
8
|
*/
|
|
6
|
-
export default class GenerateCommand extends
|
|
9
|
+
export default class GenerateCommand extends AppTask {
|
|
10
|
+
private fileService;
|
|
11
|
+
private projectService;
|
|
12
|
+
private utilService;
|
|
7
13
|
loggerName: string;
|
|
14
|
+
constructor(fileService: FileService, projectService: ProjectService, utilService: UtilService);
|
|
8
15
|
/**
|
|
9
16
|
* Generates a new command class file.
|
|
10
17
|
*
|
|
@@ -13,7 +20,7 @@ export default class GenerateCommand extends GenerateAppTask {
|
|
|
13
20
|
run(): Promise<void | Partial<AppState>>;
|
|
14
21
|
/**
|
|
15
22
|
* Checks state for required fields. Executes prior to run method.
|
|
16
|
-
* Skips validation if
|
|
23
|
+
* Skips validation if genData.targetType is not set to command.
|
|
17
24
|
*/
|
|
18
25
|
preRun(): Promise<void>;
|
|
19
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-command.d.ts","sourceRoot":"./src/","sources":["src/tasks/generate/generate-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-command.d.ts","sourceRoot":"./src/","sources":["src/tasks/generate/generate-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAIhD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,WAAW;IALrB,UAAU,SAAsB;gBAGtB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW;IAKlC;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAgC9C;;;OAGG;IACG,MAAM;CAcb"}
|
|
@@ -5,6 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
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
|
+
};
|
|
8
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
13
|
};
|
|
@@ -16,12 +19,23 @@ const format_1 = require("../../types/format");
|
|
|
16
19
|
const path_1 = __importDefault(require("path"));
|
|
17
20
|
const command_1 = require("../../templates/command");
|
|
18
21
|
const project_service_1 = require("../../services/project-service");
|
|
19
|
-
const
|
|
22
|
+
const app_task_1 = require("../../wrappers/app-task");
|
|
23
|
+
const file_service_1 = require("../../services/file-service");
|
|
24
|
+
const util_service_1 = require("../../services/util-service");
|
|
20
25
|
/**
|
|
21
26
|
* Generates a new command class
|
|
22
27
|
*/
|
|
23
|
-
let GenerateCommand = class GenerateCommand extends
|
|
28
|
+
let GenerateCommand = class GenerateCommand extends app_task_1.AppTask {
|
|
29
|
+
fileService;
|
|
30
|
+
projectService;
|
|
31
|
+
utilService;
|
|
24
32
|
loggerName = "Generate Command";
|
|
33
|
+
constructor(fileService, projectService, utilService) {
|
|
34
|
+
super();
|
|
35
|
+
this.fileService = fileService;
|
|
36
|
+
this.projectService = projectService;
|
|
37
|
+
this.utilService = utilService;
|
|
38
|
+
}
|
|
25
39
|
/**
|
|
26
40
|
* Generates a new command class file.
|
|
27
41
|
*
|
|
@@ -29,20 +43,19 @@ let GenerateCommand = class GenerateCommand extends gen_app_task_1.default {
|
|
|
29
43
|
*/
|
|
30
44
|
async run() {
|
|
31
45
|
const { utilService, fileService, projectService } = this;
|
|
32
|
-
if (this.state.data.
|
|
46
|
+
if (this.state.data.genData.targetType !== state_1.GenTargetType.Command) {
|
|
33
47
|
return; // no-op
|
|
34
48
|
}
|
|
35
49
|
this.logger.info(chalk_1.default.blueBright("Generating Command"));
|
|
36
|
-
const targetName = this.state.data.
|
|
50
|
+
const targetName = this.state.data.genData.targetName;
|
|
37
51
|
const targetDirectory = this.state.data.project.commandDestination;
|
|
38
52
|
// detect case between commands and task files
|
|
39
53
|
const convention = projectService.getConvention();
|
|
40
54
|
this.logger.debug(`Using convention: ${chalk_1.default.magentaBright(convention)}`);
|
|
41
55
|
const className = utilService.titleizedToCase(targetName, format_1.CaseType.PASCAL_CASE);
|
|
42
56
|
const filename = `${utilService.titleizedToCase(targetName, convention)}${project_service_1.ProjectService.defaults.extention}`;
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
const rendered = (0, command_1.getCommandTemplate)(className, injectableMappings);
|
|
57
|
+
const injectablesMap = this.projectService.getImportMap(this.state.data.genData);
|
|
58
|
+
const rendered = (0, command_1.getCommandTemplate)(className, injectablesMap);
|
|
46
59
|
const destination = path_1.default.join(targetDirectory, filename);
|
|
47
60
|
// write contents
|
|
48
61
|
fileService.writeFile(destination, rendered);
|
|
@@ -50,13 +63,13 @@ let GenerateCommand = class GenerateCommand extends gen_app_task_1.default {
|
|
|
50
63
|
}
|
|
51
64
|
/**
|
|
52
65
|
* Checks state for required fields. Executes prior to run method.
|
|
53
|
-
* Skips validation if
|
|
66
|
+
* Skips validation if genData.targetType is not set to command.
|
|
54
67
|
*/
|
|
55
68
|
async preRun() {
|
|
56
|
-
if (this.state.data.
|
|
69
|
+
if (this.state.data.genData.targetType !== state_1.GenTargetType.Command) {
|
|
57
70
|
return; // no validation on no-op flow
|
|
58
71
|
}
|
|
59
|
-
if (!this.state.data.
|
|
72
|
+
if (!this.state.data.genData.targetName) {
|
|
60
73
|
throw new Error("Unable to determine targetName");
|
|
61
74
|
}
|
|
62
75
|
if (!this.state.data.project) {
|
|
@@ -68,7 +81,10 @@ let GenerateCommand = class GenerateCommand extends gen_app_task_1.default {
|
|
|
68
81
|
}
|
|
69
82
|
};
|
|
70
83
|
GenerateCommand = __decorate([
|
|
71
|
-
(0, tsyringe_1.autoInjectable)()
|
|
84
|
+
(0, tsyringe_1.autoInjectable)(),
|
|
85
|
+
__metadata("design:paramtypes", [file_service_1.FileService,
|
|
86
|
+
project_service_1.ProjectService,
|
|
87
|
+
util_service_1.UtilService])
|
|
72
88
|
], GenerateCommand);
|
|
73
89
|
exports.default = GenerateCommand;
|
|
74
90
|
//# sourceMappingURL=generate-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-command.js","sourceRoot":"./src/","sources":["src/tasks/generate/generate-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-command.js","sourceRoot":"./src/","sources":["src/tasks/generate/generate-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ProjectService } from "../../services/project-service";
|
|
2
|
+
import { AppTask } from "../../wrappers/app-task";
|
|
3
|
+
import { FileService } from "../../services/file-service";
|
|
4
|
+
import { UtilService } from "../../services/util-service";
|
|
2
5
|
/**
|
|
3
6
|
* Generates a new service class
|
|
4
7
|
*/
|
|
5
|
-
export default class GenerateService extends
|
|
8
|
+
export default class GenerateService extends AppTask {
|
|
9
|
+
private fileService;
|
|
10
|
+
private projectService;
|
|
11
|
+
private utilService;
|
|
6
12
|
loggerName: string;
|
|
13
|
+
constructor(fileService: FileService, projectService: ProjectService, utilService: UtilService);
|
|
7
14
|
/**
|
|
8
15
|
* Generates a new service class file.
|
|
9
16
|
*
|
|
@@ -16,7 +23,7 @@ export default class GenerateService extends GenerateAppTask {
|
|
|
16
23
|
} | undefined>;
|
|
17
24
|
/**
|
|
18
25
|
* Checks state for required fields. Executes prior to run method.
|
|
19
|
-
* Skips validation if
|
|
26
|
+
* Skips validation if genData.targetType is not set to service.
|
|
20
27
|
*/
|
|
21
28
|
preRun(): Promise<void>;
|
|
22
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-service.d.ts","sourceRoot":"./src/","sources":["src/tasks/generate/generate-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-service.d.ts","sourceRoot":"./src/","sources":["src/tasks/generate/generate-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIhE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAIhD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,WAAW;IALrB,UAAU,SAAsB;gBAGtB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW;IAKlC;;;;OAIG;IACG,GAAG;;;;;IA+BT;;;OAGG;IACG,MAAM;CAcb"}
|