@adobe/ccweb-add-on-scaffolder 2.5.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 +9 -2
- 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.d.ts +2 -1
- package/dist/config/inversify.config.d.ts.map +1 -1
- 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/models/ScaffolderOptions.d.ts +3 -3
- package/dist/models/ScaffolderOptions.d.ts.map +1 -1
- package/dist/models/ScaffolderOptions.js +4 -4
- 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 +11 -11
- 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 +10 -10
- package/src/config/inversify.types.ts +6 -2
- package/src/index.ts +1 -1
- package/src/models/ScaffolderOptions.ts +4 -4
- package/src/test/app/{TemplateAddOnBuilder.spec.ts → AddOnBuilder.spec.ts} +21 -22
- package/src/test/app/{TemplateAddOnScaffolder.spec.ts → AddOnScaffolder.spec.ts} +20 -22
- package/src/test/app/{TemplatePackageBuilder.spec.ts → PackageBuilder.spec.ts} +13 -14
- package/src/test/models/ScaffolderOptions.spec.ts +5 -5
- 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/tsconfig.json +4 -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
|
@@ -22,8 +22,12 @@
|
|
|
22
22
|
* SOFTWARE.
|
|
23
23
|
********************************************************************************/
|
|
24
24
|
|
|
25
|
-
export const ITypes
|
|
26
|
-
|
|
25
|
+
export const ITypes: {
|
|
26
|
+
AddOnScaffolder: symbol;
|
|
27
|
+
AddOnBuilder: symbol;
|
|
28
|
+
PackageBuilder: symbol;
|
|
29
|
+
TemplateValidator: symbol;
|
|
30
|
+
} = {
|
|
27
31
|
AddOnScaffolder: Symbol.for("AddOnScaffolder"),
|
|
28
32
|
AddOnBuilder: Symbol.for("AddOnBuilder"),
|
|
29
33
|
PackageBuilder: Symbol.for("PackageBuilder"),
|
package/src/index.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* SOFTWARE.
|
|
23
23
|
********************************************************************************/
|
|
24
24
|
|
|
25
|
-
export * from "./app/AddOnScaffolder.js";
|
|
25
|
+
export type * from "./app/AddOnScaffolder.js";
|
|
26
26
|
export * from "./config/index.js";
|
|
27
27
|
export * from "./constants.js";
|
|
28
28
|
export * from "./models/index.js";
|
|
@@ -41,7 +41,7 @@ export class ScaffolderOptions {
|
|
|
41
41
|
/**
|
|
42
42
|
* Kind of the Add-on. For example: panel.
|
|
43
43
|
*/
|
|
44
|
-
readonly
|
|
44
|
+
readonly entrypointType: EntrypointType;
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Path of the Add-on root directory.
|
|
@@ -62,7 +62,7 @@ export class ScaffolderOptions {
|
|
|
62
62
|
* Instantiate {@link ScaffolderOptions}.
|
|
63
63
|
* @param addOnDirectory - Path of the Add-on directory.
|
|
64
64
|
* @param addOnName - Name of the Add-on.
|
|
65
|
-
* @param
|
|
65
|
+
* @param entrypointType - Kind of the Add-on. For example: panel.
|
|
66
66
|
* @param rootDirectory - Path of the Add-on root directory.
|
|
67
67
|
* @param templateName - Name of the template with which the Add-on is to be scaffolded.
|
|
68
68
|
* @param verbose - Verbose flag.
|
|
@@ -71,14 +71,14 @@ export class ScaffolderOptions {
|
|
|
71
71
|
constructor(
|
|
72
72
|
addOnDirectory: string,
|
|
73
73
|
addOnName: string,
|
|
74
|
-
|
|
74
|
+
entrypointType: EntrypointType,
|
|
75
75
|
rootDirectory: string,
|
|
76
76
|
templateName: string,
|
|
77
77
|
verbose: boolean
|
|
78
78
|
) {
|
|
79
79
|
this.addOnDirectory = addOnDirectory;
|
|
80
80
|
this.addOnName = addOnName;
|
|
81
|
-
this.
|
|
81
|
+
this.entrypointType = entrypointType;
|
|
82
82
|
this.rootDirectory = rootDirectory;
|
|
83
83
|
this.templateName = templateName;
|
|
84
84
|
this.verbose = verbose;
|
|
@@ -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,
|
|
@@ -105,7 +103,7 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
105
103
|
|
|
106
104
|
const addOnDirectory = `${__dirname}/data/first-test-app`;
|
|
107
105
|
const addOnName = "first-test-app";
|
|
108
|
-
const
|
|
106
|
+
const entrypointType = EntrypointType.PANEL;
|
|
109
107
|
const rootDirectory = `${__dirname}/data`;
|
|
110
108
|
const templateName = "javascript";
|
|
111
109
|
const verbose = false;
|
|
@@ -113,7 +111,7 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
113
111
|
const options = new ScaffolderOptions(
|
|
114
112
|
addOnDirectory,
|
|
115
113
|
addOnName,
|
|
116
|
-
|
|
114
|
+
entrypointType,
|
|
117
115
|
rootDirectory,
|
|
118
116
|
templateName,
|
|
119
117
|
verbose
|
|
@@ -131,7 +129,7 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
131
129
|
{
|
|
132
130
|
addOnDirectory: `${__dirname}/data/first-test-app`,
|
|
133
131
|
addOnName: "first-test-app",
|
|
134
|
-
|
|
132
|
+
entrypointType: EntrypointType.PANEL,
|
|
135
133
|
rootDirectory: `${__dirname}/data`,
|
|
136
134
|
templateName: "javascript",
|
|
137
135
|
verbose: true
|
|
@@ -139,7 +137,7 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
139
137
|
{
|
|
140
138
|
addOnDirectory: `${__dirname}/data/second-test-app`,
|
|
141
139
|
addOnName: "second-test-app",
|
|
142
|
-
|
|
140
|
+
entrypointType: EntrypointType.PANEL,
|
|
143
141
|
rootDirectory: `${__dirname}/data`,
|
|
144
142
|
templateName: "javascript",
|
|
145
143
|
verbose: false
|
|
@@ -152,8 +150,8 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
152
150
|
const packageJson = new PackageJson({
|
|
153
151
|
name: run.addOnName,
|
|
154
152
|
version: "1.0.0",
|
|
155
|
-
description: `WXP ${run.
|
|
156
|
-
keywords: ["adobe", "wxp", run.
|
|
153
|
+
description: `WXP ${run.entrypointType} application.`,
|
|
154
|
+
keywords: ["adobe", "wxp", run.entrypointType],
|
|
157
155
|
scripts: {
|
|
158
156
|
clean: "ccweb-add-on-scripts clean",
|
|
159
157
|
build: "ccweb-add-on-scripts build",
|
|
@@ -182,8 +180,8 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
182
180
|
const combinedPackageJson = new PackageJson({
|
|
183
181
|
name: run.addOnName,
|
|
184
182
|
version: "1.0.0",
|
|
185
|
-
description: `WXP ${run.
|
|
186
|
-
keywords: ["adobe", "wxp", run.
|
|
183
|
+
description: `WXP ${run.entrypointType} application.`,
|
|
184
|
+
keywords: ["adobe", "wxp", run.entrypointType],
|
|
187
185
|
scripts: {
|
|
188
186
|
clean: "ccweb-add-on-scripts clean",
|
|
189
187
|
build: "ccweb-add-on-scripts build",
|
|
@@ -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();
|
|
@@ -243,7 +241,7 @@ describe("TemplateAddOnScaffolder", () => {
|
|
|
243
241
|
const options = new ScaffolderOptions(
|
|
244
242
|
run.addOnDirectory,
|
|
245
243
|
run.addOnName,
|
|
246
|
-
run.
|
|
244
|
+
run.entrypointType as EntrypointType,
|
|
247
245
|
run.rootDirectory,
|
|
248
246
|
run.templateName,
|
|
249
247
|
run.verbose
|
|
@@ -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", () => {
|
|
@@ -33,25 +33,25 @@ describe("ScaffolderOptions", () => {
|
|
|
33
33
|
{
|
|
34
34
|
addOnDirectory: "/apps/test-app",
|
|
35
35
|
addOnName: "test-app",
|
|
36
|
-
|
|
36
|
+
entrypointType: EntrypointType.PANEL,
|
|
37
37
|
rootDirectory: "/apps",
|
|
38
38
|
templateName: "javascript",
|
|
39
39
|
verbose: false
|
|
40
40
|
}
|
|
41
41
|
];
|
|
42
42
|
runs.forEach(run => {
|
|
43
|
-
it(`should create a new instance for: ${run.
|
|
43
|
+
it(`should create a new instance for: ${run.entrypointType}.`, () => {
|
|
44
44
|
const scaffolderOptions = new ScaffolderOptions(
|
|
45
45
|
run.addOnDirectory,
|
|
46
46
|
run.addOnName,
|
|
47
|
-
run.
|
|
47
|
+
run.entrypointType as EntrypointType,
|
|
48
48
|
run.rootDirectory,
|
|
49
49
|
run.templateName,
|
|
50
50
|
run.verbose
|
|
51
51
|
);
|
|
52
52
|
assert.equal(scaffolderOptions.addOnDirectory, run.addOnDirectory);
|
|
53
53
|
assert.equal(scaffolderOptions.addOnName, run.addOnName);
|
|
54
|
-
assert.equal(scaffolderOptions.
|
|
54
|
+
assert.equal(scaffolderOptions.entrypointType, run.entrypointType);
|
|
55
55
|
assert.equal(scaffolderOptions.rootDirectory, run.rootDirectory);
|
|
56
56
|
assert.equal(scaffolderOptions.templateName, run.templateName);
|
|
57
57
|
assert.equal(scaffolderOptions.verbose, run.verbose);
|
|
@@ -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
package/tsconfig.json
CHANGED
|
@@ -17,11 +17,14 @@
|
|
|
17
17
|
"outDir": "dist",
|
|
18
18
|
"preserveConstEnums": true,
|
|
19
19
|
"resolveJsonModule": true,
|
|
20
|
+
"skipLibCheck": true,
|
|
20
21
|
"sourceMap": true,
|
|
21
22
|
"strict": true,
|
|
22
23
|
"target": "ESNext",
|
|
24
|
+
"lib": ["ES2020", "DOM"],
|
|
23
25
|
"types": ["reflect-metadata"],
|
|
24
|
-
"useUnknownInCatchVariables": false
|
|
26
|
+
"useUnknownInCatchVariables": false,
|
|
27
|
+
"isolatedDeclarations": true
|
|
25
28
|
},
|
|
26
29
|
"exclude": ["node_modules", "src/test/**/*"],
|
|
27
30
|
"include": ["src/**/*"]
|