@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.
Files changed (59) hide show
  1. package/.c8rc.json +5 -1
  2. package/.mocharc.json +3 -1
  3. package/dist/app/AddOnBuilder.d.ts +27 -7
  4. package/dist/app/AddOnBuilder.d.ts.map +1 -1
  5. package/dist/app/AddOnBuilder.js +247 -0
  6. package/dist/app/AddOnScaffolder.d.ts +29 -2
  7. package/dist/app/AddOnScaffolder.d.ts.map +1 -1
  8. package/dist/app/AddOnScaffolder.js +106 -1
  9. package/dist/app/PackageBuilder.d.ts +21 -7
  10. package/dist/app/PackageBuilder.d.ts.map +1 -1
  11. package/dist/app/PackageBuilder.js +68 -1
  12. package/dist/app/index.d.ts +0 -3
  13. package/dist/app/index.d.ts.map +1 -1
  14. package/dist/app/index.js +0 -3
  15. package/dist/config/inversify.config.js +8 -6
  16. package/dist/config/inversify.types.d.ts +0 -1
  17. package/dist/config/inversify.types.d.ts.map +1 -1
  18. package/dist/config/inversify.types.js +0 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +0 -1
  22. package/dist/tsconfig.tsbuildinfo +1 -1
  23. package/dist/validators/TemplateValidator.d.ts +12 -2
  24. package/dist/validators/TemplateValidator.d.ts.map +1 -1
  25. package/dist/validators/TemplateValidator.js +54 -1
  26. package/dist/validators/index.d.ts +0 -1
  27. package/dist/validators/index.d.ts.map +1 -1
  28. package/dist/validators/index.js +0 -1
  29. package/package.json +8 -8
  30. package/src/app/AddOnBuilder.ts +258 -15
  31. package/src/app/AddOnScaffolder.ts +120 -3
  32. package/src/app/PackageBuilder.ts +75 -9
  33. package/src/app/index.ts +0 -3
  34. package/src/config/inversify.config.ts +8 -8
  35. package/src/config/inversify.types.ts +0 -2
  36. package/src/index.ts +1 -1
  37. package/src/test/app/{TemplateAddOnBuilder.spec.ts → AddOnBuilder.spec.ts} +21 -22
  38. package/src/test/app/{TemplateAddOnScaffolder.spec.ts → AddOnScaffolder.spec.ts} +11 -13
  39. package/src/test/app/{TemplatePackageBuilder.spec.ts → PackageBuilder.spec.ts} +13 -14
  40. package/src/test/models/ScaffolderOptions.spec.ts +1 -1
  41. package/src/test/validators/{AppTemplateValidator.spec.ts → TemplateValidator.spec.ts} +2 -3
  42. package/src/validators/TemplateValidator.ts +46 -3
  43. package/src/validators/index.ts +0 -1
  44. package/dist/app/TemplateAddOnBuilder.d.ts +0 -90
  45. package/dist/app/TemplateAddOnBuilder.d.ts.map +0 -1
  46. package/dist/app/TemplateAddOnBuilder.js +0 -273
  47. package/dist/app/TemplateAddOnScaffolder.d.ts +0 -63
  48. package/dist/app/TemplateAddOnScaffolder.d.ts.map +0 -1
  49. package/dist/app/TemplateAddOnScaffolder.js +0 -130
  50. package/dist/app/TemplatePackageBuilder.d.ts +0 -49
  51. package/dist/app/TemplatePackageBuilder.d.ts.map +0 -1
  52. package/dist/app/TemplatePackageBuilder.js +0 -92
  53. package/dist/validators/AddOnTemplateValidator.d.ts +0 -46
  54. package/dist/validators/AddOnTemplateValidator.d.ts.map +0 -1
  55. package/dist/validators/AddOnTemplateValidator.js +0 -78
  56. package/src/app/TemplateAddOnBuilder.ts +0 -319
  57. package/src/app/TemplateAddOnScaffolder.ts +0 -153
  58. package/src/app/TemplatePackageBuilder.ts +0 -102
  59. 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 type { AddOnBuilder } from "../../app/index.js";
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("TemplateAddOnBuilder", () => {
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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: AddOnBuilder = new TemplateAddOnBuilder(options, logger);
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 { SetupCommandOptions, type CommandExecutor as SSLCommandExecutor } from "@adobe/ccweb-add-on-ssl";
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
- AddOnBuilder,
39
- AddOnBuilderFactory,
40
- AddOnScaffolder,
41
- PackageBuilder,
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("TemplateAddOnScaffolder", () => {
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 TemplateAddOnScaffolder(
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 SetupCommandOptions(DEFAULT_HOST_NAME, true, run.verbose);
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 type { PackageBuilder } from "../../app/index.js";
29
- import { TemplatePackageBuilder } from "../../app/index.js";
28
+ import { PackageBuilder } from "../../app/PackageBuilder.js";
30
29
 
31
- describe("TemplatePackageBuilder", () => {
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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: PackageBuilder = new TemplatePackageBuilder(packageJson, templateJson);
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/index.js";
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 type { TemplateValidator } from "../../validators/index.js";
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 AddOnTemplateValidator(logger);
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
- * Template validator interface to validate user selected template.
34
+ * Validator class to validate user selected template..
27
35
  */
28
- export interface TemplateValidator {
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
+ };
@@ -22,5 +22,4 @@
22
22
  * SOFTWARE.
23
23
  ********************************************************************************/
24
24
 
25
- export * from "./AddOnTemplateValidator.js";
26
25
  export * from "./TemplateValidator.js";
@@ -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"}