@adobe/ccweb-add-on-scaffolder 3.0.0 → 3.1.0
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/.c8rc.json +5 -1
- package/.mocharc.json +3 -1
- package/dist/app/AddOnBuilder.d.ts +27 -7
- package/dist/app/AddOnBuilder.d.ts.map +1 -1
- package/dist/app/AddOnBuilder.js +247 -0
- package/dist/app/AddOnScaffolder.d.ts +29 -2
- package/dist/app/AddOnScaffolder.d.ts.map +1 -1
- package/dist/app/AddOnScaffolder.js +106 -1
- package/dist/app/PackageBuilder.d.ts +21 -7
- package/dist/app/PackageBuilder.d.ts.map +1 -1
- package/dist/app/PackageBuilder.js +68 -1
- package/dist/app/index.d.ts +0 -3
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +0 -3
- package/dist/config/inversify.config.js +8 -6
- package/dist/config/inversify.types.d.ts +0 -1
- package/dist/config/inversify.types.d.ts.map +1 -1
- package/dist/config/inversify.types.js +0 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/validators/TemplateValidator.d.ts +12 -2
- package/dist/validators/TemplateValidator.d.ts.map +1 -1
- package/dist/validators/TemplateValidator.js +54 -1
- package/dist/validators/index.d.ts +0 -1
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +0 -1
- package/package.json +8 -8
- package/src/app/AddOnBuilder.ts +258 -15
- package/src/app/AddOnScaffolder.ts +120 -3
- package/src/app/PackageBuilder.ts +75 -9
- package/src/app/index.ts +0 -3
- package/src/config/inversify.config.ts +8 -8
- package/src/config/inversify.types.ts +0 -2
- package/src/index.ts +1 -1
- package/src/test/app/{TemplateAddOnBuilder.spec.ts → AddOnBuilder.spec.ts} +21 -22
- package/src/test/app/{TemplateAddOnScaffolder.spec.ts → AddOnScaffolder.spec.ts} +11 -13
- package/src/test/app/{TemplatePackageBuilder.spec.ts → PackageBuilder.spec.ts} +13 -14
- package/src/test/models/ScaffolderOptions.spec.ts +1 -1
- package/src/test/validators/{AppTemplateValidator.spec.ts → TemplateValidator.spec.ts} +2 -3
- package/src/validators/TemplateValidator.ts +46 -3
- package/src/validators/index.ts +0 -1
- package/dist/app/TemplateAddOnBuilder.d.ts +0 -90
- package/dist/app/TemplateAddOnBuilder.d.ts.map +0 -1
- package/dist/app/TemplateAddOnBuilder.js +0 -273
- package/dist/app/TemplateAddOnScaffolder.d.ts +0 -63
- package/dist/app/TemplateAddOnScaffolder.d.ts.map +0 -1
- package/dist/app/TemplateAddOnScaffolder.js +0 -130
- package/dist/app/TemplatePackageBuilder.d.ts +0 -49
- package/dist/app/TemplatePackageBuilder.d.ts.map +0 -1
- package/dist/app/TemplatePackageBuilder.js +0 -92
- package/dist/validators/AddOnTemplateValidator.d.ts +0 -46
- package/dist/validators/AddOnTemplateValidator.d.ts.map +0 -1
- package/dist/validators/AddOnTemplateValidator.js +0 -78
- package/src/app/TemplateAddOnBuilder.ts +0 -319
- package/src/app/TemplateAddOnScaffolder.ts +0 -153
- package/src/app/TemplatePackageBuilder.ts +0 -102
- package/src/validators/AddOnTemplateValidator.ts +0 -79
|
@@ -37,14 +37,13 @@ import sinon from "sinon";
|
|
|
37
37
|
import type { StubbedInstance } from "ts-sinon";
|
|
38
38
|
import { stubInterface } from "ts-sinon";
|
|
39
39
|
import { fileURLToPath } from "url";
|
|
40
|
-
import
|
|
41
|
-
import { TemplateAddOnBuilder } from "../../app/index.js";
|
|
40
|
+
import { AddOnBuilder } from "../../app/AddOnBuilder.js";
|
|
42
41
|
import { MANIFEST_JSON, PACKAGE_JSON } from "../../constants.js";
|
|
43
42
|
import { ScaffolderOptions } from "../../models/ScaffolderOptions.js";
|
|
44
43
|
|
|
45
44
|
chai.use(chaiAsPromised);
|
|
46
45
|
|
|
47
|
-
describe("
|
|
46
|
+
describe("AddOnBuilder", () => {
|
|
48
47
|
const __filename = fileURLToPath(import.meta.url);
|
|
49
48
|
const __dirname = path.dirname(__filename);
|
|
50
49
|
const __require = createRequire(import.meta.url);
|
|
@@ -70,7 +69,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
70
69
|
|
|
71
70
|
const expectedPacakgeJson = new PackageJson(testAppPackageJson);
|
|
72
71
|
|
|
73
|
-
const addOnBuilder
|
|
72
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
74
73
|
const packageJson = addOnBuilder.getPackageJson();
|
|
75
74
|
|
|
76
75
|
assert.deepEqual(packageJson, expectedPacakgeJson);
|
|
@@ -99,7 +98,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
99
98
|
|
|
100
99
|
const expectedTemplateJson = new TemplateJson({});
|
|
101
100
|
|
|
102
|
-
const addOnBuilder
|
|
101
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
103
102
|
const templateJson = addOnBuilder.getTemplateJson();
|
|
104
103
|
|
|
105
104
|
assert.deepEqual(templateJson, expectedTemplateJson);
|
|
@@ -128,7 +127,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
128
127
|
}
|
|
129
128
|
});
|
|
130
129
|
|
|
131
|
-
const addOnBuilder
|
|
130
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
132
131
|
const templateJson = addOnBuilder.getTemplateJson();
|
|
133
132
|
|
|
134
133
|
assert.deepEqual(templateJson, expectedTemplateJson);
|
|
@@ -146,7 +145,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
146
145
|
false
|
|
147
146
|
);
|
|
148
147
|
|
|
149
|
-
const addOnBuilder
|
|
148
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
150
149
|
const devDependencies = addOnBuilder.getDevDependenciesToInstall(new TemplateJson({}));
|
|
151
150
|
|
|
152
151
|
assert.equal(devDependencies.size, 0);
|
|
@@ -172,7 +171,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
172
171
|
|
|
173
172
|
const expectedDevDependencies = new Set(["a@1.0.0", "b@2.0.0", "c@3.0.0"]);
|
|
174
173
|
|
|
175
|
-
const addOnBuilder
|
|
174
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
176
175
|
const devDependencies = addOnBuilder.getDevDependenciesToInstall(templateJson);
|
|
177
176
|
|
|
178
177
|
assert.deepEqual(devDependencies, expectedDevDependencies);
|
|
@@ -190,7 +189,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
190
189
|
false
|
|
191
190
|
);
|
|
192
191
|
|
|
193
|
-
const addOnBuilder
|
|
192
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
194
193
|
const dependencies = addOnBuilder.getDependenciesToInstall(new TemplateJson({}));
|
|
195
194
|
|
|
196
195
|
assert.equal(dependencies.size, 0);
|
|
@@ -216,14 +215,14 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
216
215
|
|
|
217
216
|
const expectedDependencies = new Set(["a@1.0.0", "b@2.0.0", "c@3.0.0"]);
|
|
218
217
|
|
|
219
|
-
const addOnBuilder
|
|
218
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
220
219
|
const dependencies = addOnBuilder.getDependenciesToInstall(templateJson);
|
|
221
220
|
|
|
222
221
|
assert.deepEqual(dependencies, expectedDependencies);
|
|
223
222
|
});
|
|
224
223
|
});
|
|
225
224
|
|
|
226
|
-
describe("build
|
|
225
|
+
describe("build", () => {
|
|
227
226
|
const additionalInfo = {
|
|
228
227
|
sourceId: "fakeAddOnSource",
|
|
229
228
|
privileged: true,
|
|
@@ -315,7 +314,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
315
314
|
.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL)
|
|
316
315
|
.returns();
|
|
317
316
|
|
|
318
|
-
const addOnBuilder
|
|
317
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
319
318
|
addOnBuilder.build(packageJson);
|
|
320
319
|
|
|
321
320
|
assert.equal(renameSpy.callCount, 0);
|
|
@@ -399,7 +398,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
399
398
|
.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL)
|
|
400
399
|
.returns();
|
|
401
400
|
|
|
402
|
-
const addOnBuilder
|
|
401
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
403
402
|
addOnBuilder.build(packageJson);
|
|
404
403
|
|
|
405
404
|
assert.equal(renameStub.callCount, 1);
|
|
@@ -499,7 +498,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
499
498
|
.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL)
|
|
500
499
|
.returns();
|
|
501
500
|
|
|
502
|
-
const addOnBuilder
|
|
501
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
503
502
|
addOnBuilder.build(packageJson);
|
|
504
503
|
|
|
505
504
|
assert.equal(logger.warning.callCount, 1);
|
|
@@ -584,7 +583,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
584
583
|
.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL)
|
|
585
584
|
.returns();
|
|
586
585
|
|
|
587
|
-
const addOnBuilder
|
|
586
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
588
587
|
addOnBuilder.build(packageJson);
|
|
589
588
|
|
|
590
589
|
assert.equal(copyStub.callCount, 1);
|
|
@@ -678,7 +677,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
678
677
|
.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL)
|
|
679
678
|
.returns();
|
|
680
679
|
|
|
681
|
-
const addOnBuilder
|
|
680
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
682
681
|
addOnBuilder.build(packageJson);
|
|
683
682
|
|
|
684
683
|
assert.equal(moveStub.callCount, 1);
|
|
@@ -767,7 +766,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
767
766
|
.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL)
|
|
768
767
|
.returns();
|
|
769
768
|
|
|
770
|
-
const addOnBuilder
|
|
769
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
771
770
|
addOnBuilder.build(packageJson);
|
|
772
771
|
|
|
773
772
|
assert.equal(readFileStub.callCount, 1);
|
|
@@ -868,7 +867,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
868
867
|
.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL)
|
|
869
868
|
.returns();
|
|
870
869
|
|
|
871
|
-
const addOnBuilder
|
|
870
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
872
871
|
addOnBuilder.build(packageJson);
|
|
873
872
|
|
|
874
873
|
assert.equal(writeFileStub.callCount, 2);
|
|
@@ -952,7 +951,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
952
951
|
.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL)
|
|
953
952
|
.returns();
|
|
954
953
|
|
|
955
|
-
const addOnBuilder
|
|
954
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
956
955
|
addOnBuilder.build(packageJson);
|
|
957
956
|
|
|
958
957
|
assert.equal(unlinkStub.callCount, 1);
|
|
@@ -1015,7 +1014,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
1015
1014
|
// _removeTemplateTempFiles() stubs.
|
|
1016
1015
|
sandbox.stub(fs, "removeSync").returns();
|
|
1017
1016
|
|
|
1018
|
-
const addOnBuilder
|
|
1017
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
1019
1018
|
addOnBuilder.build(thirdPackageJson);
|
|
1020
1019
|
|
|
1021
1020
|
assert.equal(writeFileStub.callCount, 1);
|
|
@@ -1120,7 +1119,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
1120
1119
|
|
|
1121
1120
|
writeFileStub.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL).returns();
|
|
1122
1121
|
|
|
1123
|
-
const addOnBuilder
|
|
1122
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
1124
1123
|
addOnBuilder.build(packageJson);
|
|
1125
1124
|
addOnBuilder.displaySuccess();
|
|
1126
1125
|
assert.equal(logger.message.callCount, 3);
|
|
@@ -1292,7 +1291,7 @@ describe("TemplateAddOnBuilder", () => {
|
|
|
1292
1291
|
|
|
1293
1292
|
writeFileStub.withArgs(manifestJsonPath, getJSONString(manifest!.manifestProperties) + os.EOL).returns();
|
|
1294
1293
|
|
|
1295
|
-
const addOnBuilder
|
|
1294
|
+
const addOnBuilder = new AddOnBuilder(options, logger);
|
|
1296
1295
|
addOnBuilder.build(packageJson);
|
|
1297
1296
|
addOnBuilder.displaySuccess();
|
|
1298
1297
|
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
import type { Logger, Process } from "@adobe/ccweb-add-on-core";
|
|
26
26
|
import { DEFAULT_HOST_NAME, PackageJson, TemplateJson } from "@adobe/ccweb-add-on-core";
|
|
27
27
|
import { EntrypointType } from "@adobe/ccweb-add-on-manifest";
|
|
28
|
-
import {
|
|
28
|
+
import type { CommandExecutor as SSLCommandExecutor } from "@adobe/ccweb-add-on-ssl";
|
|
29
|
+
import { SetupCommandOptions as SSLSetupCommandOptions } from "@adobe/ccweb-add-on-ssl";
|
|
29
30
|
import { assert } from "chai";
|
|
30
31
|
import "mocha";
|
|
31
32
|
import path from "path";
|
|
@@ -34,18 +35,15 @@ import sinon from "sinon";
|
|
|
34
35
|
import type { StubbedInstance } from "ts-sinon";
|
|
35
36
|
import { stubInterface } from "ts-sinon";
|
|
36
37
|
import { fileURLToPath } from "url";
|
|
37
|
-
import type {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
PackageBuilderFactory
|
|
43
|
-
} from "../../app/index.js";
|
|
44
|
-
import { TemplateAddOnScaffolder } from "../../app/index.js";
|
|
38
|
+
import type { AddOnBuilderFactory } from "../../app/AddOnBuilder.js";
|
|
39
|
+
import type { AddOnBuilder } from "../../app/AddOnBuilder.js";
|
|
40
|
+
import { AddOnScaffolder } from "../../app/AddOnScaffolder.js";
|
|
41
|
+
import type { PackageBuilderFactory } from "../../app/PackageBuilder.js";
|
|
42
|
+
import type { PackageBuilder } from "../../app/PackageBuilder.js";
|
|
45
43
|
import { ScaffolderOptions } from "../../models/ScaffolderOptions.js";
|
|
46
44
|
import type { TemplateValidator } from "../../validators/TemplateValidator.js";
|
|
47
45
|
|
|
48
|
-
describe("
|
|
46
|
+
describe("AddOnScaffolder", () => {
|
|
49
47
|
const __filename = fileURLToPath(import.meta.url);
|
|
50
48
|
const __dirname = path.dirname(__filename);
|
|
51
49
|
|
|
@@ -60,7 +58,7 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
60
58
|
let addOnBuilder: StubbedInstance<AddOnBuilder>;
|
|
61
59
|
let addOnBuilderFactory: AddOnBuilderFactory;
|
|
62
60
|
|
|
63
|
-
let sslCommandExecutor: StubbedInstance<SSLCommandExecutor
|
|
61
|
+
let sslCommandExecutor: StubbedInstance<SSLCommandExecutor<SSLSetupCommandOptions>>;
|
|
64
62
|
|
|
65
63
|
let cliProcess: StubbedInstance<Process>;
|
|
66
64
|
let logger: StubbedInstance<Logger>;
|
|
@@ -83,7 +81,7 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
83
81
|
cliProcess = stubInterface();
|
|
84
82
|
logger = stubInterface();
|
|
85
83
|
|
|
86
|
-
addOnScaffolder = new
|
|
84
|
+
addOnScaffolder = new AddOnScaffolder(
|
|
87
85
|
addOnBuilderFactory,
|
|
88
86
|
packageBuilderFactory,
|
|
89
87
|
templateValidator,
|
|
@@ -235,7 +233,7 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
235
233
|
.withArgs("npm", expectedDependenciesArgs, { stdio: "inherit" })
|
|
236
234
|
.returns(Promise.resolve(installDependenciesResult));
|
|
237
235
|
|
|
238
|
-
const setupCommandOptions = new
|
|
236
|
+
const setupCommandOptions = new SSLSetupCommandOptions(DEFAULT_HOST_NAME, true, run.verbose);
|
|
239
237
|
sslCommandExecutor.execute.withArgs(setupCommandOptions).resolves();
|
|
240
238
|
|
|
241
239
|
addOnBuilder.displaySuccess.returns();
|
|
@@ -25,11 +25,10 @@
|
|
|
25
25
|
import { PackageJson, TemplateJson } from "@adobe/ccweb-add-on-core";
|
|
26
26
|
import { assert } from "chai";
|
|
27
27
|
import "mocha";
|
|
28
|
-
import
|
|
29
|
-
import { TemplatePackageBuilder } from "../../app/index.js";
|
|
28
|
+
import { PackageBuilder } from "../../app/PackageBuilder.js";
|
|
30
29
|
|
|
31
|
-
describe("
|
|
32
|
-
describe("build
|
|
30
|
+
describe("PackageBuilder", () => {
|
|
31
|
+
describe("build", () => {
|
|
33
32
|
describe("buildDevDependencies ...", () => {
|
|
34
33
|
it("should combine devDependencies from package when template does not have devDependencies.", () => {
|
|
35
34
|
const packageJsonContent = {
|
|
@@ -52,7 +51,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
52
51
|
...templateJsonContent
|
|
53
52
|
};
|
|
54
53
|
|
|
55
|
-
const packageBuilder
|
|
54
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
56
55
|
const combinedPackageJson = packageBuilder.build();
|
|
57
56
|
|
|
58
57
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -79,7 +78,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
79
78
|
...templateJsonContent
|
|
80
79
|
};
|
|
81
80
|
|
|
82
|
-
const packageBuilder
|
|
81
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
83
82
|
const combinedPackageJson = packageBuilder.build();
|
|
84
83
|
|
|
85
84
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -111,7 +110,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
111
110
|
}
|
|
112
111
|
};
|
|
113
112
|
|
|
114
|
-
const packageBuilder
|
|
113
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
115
114
|
const combinedPackageJson = packageBuilder.build();
|
|
116
115
|
|
|
117
116
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -140,7 +139,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
140
139
|
...templateJsonContent
|
|
141
140
|
};
|
|
142
141
|
|
|
143
|
-
const packageBuilder
|
|
142
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
144
143
|
const combinedPackageJson = packageBuilder.build();
|
|
145
144
|
|
|
146
145
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -167,7 +166,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
167
166
|
...templateJsonContent
|
|
168
167
|
};
|
|
169
168
|
|
|
170
|
-
const packageBuilder
|
|
169
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
171
170
|
const combinedPackageJson = packageBuilder.build();
|
|
172
171
|
|
|
173
172
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -199,7 +198,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
199
198
|
}
|
|
200
199
|
};
|
|
201
200
|
|
|
202
|
-
const packageBuilder
|
|
201
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
203
202
|
const combinedPackageJson = packageBuilder.build();
|
|
204
203
|
|
|
205
204
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -228,7 +227,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
228
227
|
...templateJsonContent
|
|
229
228
|
};
|
|
230
229
|
|
|
231
|
-
const packageBuilder
|
|
230
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
232
231
|
const combinedPackageJson = packageBuilder.build();
|
|
233
232
|
|
|
234
233
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -255,7 +254,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
255
254
|
...templateJsonContent
|
|
256
255
|
};
|
|
257
256
|
|
|
258
|
-
const packageBuilder
|
|
257
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
259
258
|
const combinedPackageJson = packageBuilder.build();
|
|
260
259
|
|
|
261
260
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -284,7 +283,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
284
283
|
scripts: { ...packageJsonContent.scripts, ...templateJsonContent.scripts }
|
|
285
284
|
};
|
|
286
285
|
|
|
287
|
-
const packageBuilder
|
|
286
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
288
287
|
const combinedPackageJson = packageBuilder.build();
|
|
289
288
|
|
|
290
289
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -322,7 +321,7 @@ describe("TemplatePackageBuilder", () => {
|
|
|
322
321
|
scripts: { ...packageJsonContent.scripts, ...templateJsonContent.scripts }
|
|
323
322
|
};
|
|
324
323
|
|
|
325
|
-
const packageBuilder
|
|
324
|
+
const packageBuilder = new PackageBuilder(packageJson, templateJson);
|
|
326
325
|
const combinedPackageJson = packageBuilder.build();
|
|
327
326
|
|
|
328
327
|
assert.deepEqual(combinedPackageJson, new PackageJson(expectedPackageJsonContent));
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
import { EntrypointType } from "@adobe/ccweb-add-on-manifest";
|
|
26
26
|
import { assert } from "chai";
|
|
27
27
|
import "mocha";
|
|
28
|
-
import { ScaffolderOptions } from "../../models/
|
|
28
|
+
import { ScaffolderOptions } from "../../models/ScaffolderOptions.js";
|
|
29
29
|
|
|
30
30
|
describe("ScaffolderOptions", () => {
|
|
31
31
|
describe("constructor", () => {
|
|
@@ -30,8 +30,7 @@ import sinon from "sinon";
|
|
|
30
30
|
import type { StubbedInstance } from "ts-sinon";
|
|
31
31
|
import { stubInterface } from "ts-sinon";
|
|
32
32
|
import { PROGRAM_NAME } from "../../constants.js";
|
|
33
|
-
import
|
|
34
|
-
import { AddOnTemplateValidator } from "../../validators/index.js";
|
|
33
|
+
import { TemplateValidator } from "../../validators/TemplateValidator.js";
|
|
35
34
|
|
|
36
35
|
describe("AddOnTemplateValidator", () => {
|
|
37
36
|
describe("validateTemplate ...", () => {
|
|
@@ -42,7 +41,7 @@ describe("AddOnTemplateValidator", () => {
|
|
|
42
41
|
beforeEach(() => {
|
|
43
42
|
sandbox = sinon.createSandbox();
|
|
44
43
|
logger = stubInterface<Logger>();
|
|
45
|
-
validator = new
|
|
44
|
+
validator = new TemplateValidator(logger);
|
|
46
45
|
});
|
|
47
46
|
|
|
48
47
|
afterEach(() => {
|
|
@@ -22,14 +22,57 @@
|
|
|
22
22
|
* SOFTWARE.
|
|
23
23
|
********************************************************************************/
|
|
24
24
|
|
|
25
|
+
import type { Logger } from "@adobe/ccweb-add-on-core";
|
|
26
|
+
import { ITypes as ICoreTypes, isNullOrWhiteSpace } from "@adobe/ccweb-add-on-core";
|
|
27
|
+
import { inject, injectable } from "inversify";
|
|
28
|
+
import process from "process";
|
|
29
|
+
import "reflect-metadata";
|
|
30
|
+
import format from "string-template";
|
|
31
|
+
import { PROGRAM_NAME } from "../constants.js";
|
|
32
|
+
|
|
25
33
|
/**
|
|
26
|
-
*
|
|
34
|
+
* Validator class to validate user selected template..
|
|
27
35
|
*/
|
|
28
|
-
|
|
36
|
+
@injectable()
|
|
37
|
+
export class TemplateValidator {
|
|
38
|
+
private readonly _logger: Logger;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Instantiate {@link TemplateValidator}.
|
|
42
|
+
*
|
|
43
|
+
* @param logger - {@link Logger} reference.
|
|
44
|
+
* @returns Reference to a new {@link TemplateValidator} instance.
|
|
45
|
+
*/
|
|
46
|
+
constructor(@inject(ICoreTypes.Logger) logger: Logger) {
|
|
47
|
+
this._logger = logger;
|
|
48
|
+
}
|
|
49
|
+
|
|
29
50
|
/**
|
|
30
51
|
* Validate the template.
|
|
31
52
|
*
|
|
32
53
|
* @param templateName - Name of the template.
|
|
33
54
|
*/
|
|
34
|
-
validateTemplate(templateName: string): void
|
|
55
|
+
validateTemplate(templateName: string): void {
|
|
56
|
+
if (isNullOrWhiteSpace(templateName)) {
|
|
57
|
+
this._logger.warning(LOGS.specifyValidTemplateName);
|
|
58
|
+
this._logger.warning(format(LOGS.executeProgram, { PROGRAM_NAME }), {
|
|
59
|
+
prefix: LOGS.tab
|
|
60
|
+
});
|
|
61
|
+
this._logger.message(LOGS.forExample, { prefix: LOGS.newLine });
|
|
62
|
+
this._logger.information(format(LOGS.executeProgramExample, { PROGRAM_NAME }), {
|
|
63
|
+
prefix: LOGS.tab
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
35
69
|
}
|
|
70
|
+
|
|
71
|
+
const LOGS = {
|
|
72
|
+
newLine: "\n",
|
|
73
|
+
tab: " ",
|
|
74
|
+
specifyValidTemplateName: "Please specify a valid template name:",
|
|
75
|
+
executeProgram: "{PROGRAM_NAME} --template <template-name>",
|
|
76
|
+
executeProgramExample: "{PROGRAM_NAME} --template javascript",
|
|
77
|
+
forExample: "For example:"
|
|
78
|
+
};
|
package/src/validators/index.ts
CHANGED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/********************************************************************************
|
|
2
|
-
* MIT License
|
|
3
|
-
|
|
4
|
-
* © Copyright 2023 Adobe. All rights reserved.
|
|
5
|
-
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
********************************************************************************/
|
|
24
|
-
import type { Logger } from "@adobe/ccweb-add-on-core";
|
|
25
|
-
import { PackageJson, TemplateJson } from "@adobe/ccweb-add-on-core";
|
|
26
|
-
import "reflect-metadata";
|
|
27
|
-
import type { ScaffolderOptions } from "../models/ScaffolderOptions.js";
|
|
28
|
-
import type { AddOnBuilder } from "./AddOnBuilder.js";
|
|
29
|
-
/**
|
|
30
|
-
* App builder implementation class for constructing the Add-on project.
|
|
31
|
-
*/
|
|
32
|
-
export declare class TemplateAddOnBuilder implements AddOnBuilder {
|
|
33
|
-
private readonly _logger;
|
|
34
|
-
private _options;
|
|
35
|
-
private _require;
|
|
36
|
-
private _templateRootDirectory;
|
|
37
|
-
private _gitignoreExists;
|
|
38
|
-
private _readmeExists;
|
|
39
|
-
/**
|
|
40
|
-
* Instantiate {@link TemplateAddOnBuilder}.
|
|
41
|
-
*
|
|
42
|
-
* @param options - {@link ScaffolderOptions}.
|
|
43
|
-
* @param logger - {@link Logger} reference.
|
|
44
|
-
* @returns Reference to a new {@link TemplateAddOnBuilder} instance.
|
|
45
|
-
*/
|
|
46
|
-
constructor(options: ScaffolderOptions, logger: Logger);
|
|
47
|
-
/**
|
|
48
|
-
* Get {@link PackageJson}.
|
|
49
|
-
*
|
|
50
|
-
* @returns Reference of {@link PackageJson}.
|
|
51
|
-
*/
|
|
52
|
-
getPackageJson(): PackageJson;
|
|
53
|
-
/**
|
|
54
|
-
* Get {@link TemplateJson}.
|
|
55
|
-
*
|
|
56
|
-
* @returns Reference of {@link TemplateJson}.
|
|
57
|
-
*/
|
|
58
|
-
getTemplateJson(): TemplateJson;
|
|
59
|
-
/**
|
|
60
|
-
* Get template devDependencies.
|
|
61
|
-
*
|
|
62
|
-
* @param template - {@link TemplateJson}
|
|
63
|
-
* @returns Set of template devDependencies.
|
|
64
|
-
*/
|
|
65
|
-
getDevDependenciesToInstall(template: TemplateJson): Set<string>;
|
|
66
|
-
/**
|
|
67
|
-
* Get template dependencies.
|
|
68
|
-
*
|
|
69
|
-
* @param template - {@link TemplateJson}
|
|
70
|
-
* @returns Set of template dependencies.
|
|
71
|
-
*/
|
|
72
|
-
getDependenciesToInstall(template: TemplateJson): Set<string>;
|
|
73
|
-
/**
|
|
74
|
-
* Build the Add-on.
|
|
75
|
-
*
|
|
76
|
-
* @param packageJson - {@link PackageJson}
|
|
77
|
-
*/
|
|
78
|
-
build(packageJson: string): void;
|
|
79
|
-
/**
|
|
80
|
-
* Display success message.
|
|
81
|
-
*/
|
|
82
|
-
displaySuccess(): void;
|
|
83
|
-
private _updateReadMe;
|
|
84
|
-
private _copyTemplateFiles;
|
|
85
|
-
private _updateGitIgnore;
|
|
86
|
-
private _updateManifest;
|
|
87
|
-
private _getAddOnName;
|
|
88
|
-
private _removeTemplateTempFiles;
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=TemplateAddOnBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateAddOnBuilder.d.ts","sourceRoot":"","sources":["../../src/app/TemplateAddOnBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;kFAsBkF;AAElF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAIH,WAAW,EACX,YAAY,EAGf,MAAM,0BAA0B,CAAC;AAQlC,OAAO,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,qBACa,oBAAqB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,sBAAsB,CAAU;IAExC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAAS;IAE9B;;;;;;OAMG;gBACS,OAAO,EAAE,iBAAiB,EAA6B,MAAM,EAAE,MAAM;IAQjF;;;;OAIG;IACH,cAAc,IAAI,WAAW;IAK7B;;;;OAIG;IACH,eAAe,IAAI,YAAY;IAO/B;;;;;OAKG;IACH,2BAA2B,CAAC,QAAQ,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;IAWhE;;;;;OAKG;IACH,wBAAwB,CAAC,QAAQ,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;IAW7D;;;;OAIG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAUhC;;OAEG;IACH,cAAc,IAAI,IAAI;IA8CtB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,eAAe;IA4DvB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,wBAAwB;CAGnC"}
|