@react-native-windows/cli 0.0.0-canary.99 → 0.0.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/README.md +0 -2
- package/lib-commonjs/{runWindows/utils/autolink.d.ts → commands/autolinkWindows/autolinkWindows.d.ts} +87 -86
- package/lib-commonjs/{runWindows/utils/autolink.js → commands/autolinkWindows/autolinkWindows.js} +655 -625
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js.map +1 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.d.ts +14 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js +33 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js.map +1 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.d.ts +27 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.js +206 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.js.map +1 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.d.ts +12 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js +23 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/configUtils.d.ts +123 -116
- package/lib-commonjs/{config → commands/config}/configUtils.js +380 -341
- package/lib-commonjs/commands/config/configUtils.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/dependencyConfig.d.ts +37 -37
- package/lib-commonjs/{config → commands/config}/dependencyConfig.js +227 -221
- package/lib-commonjs/commands/config/dependencyConfig.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/projectConfig.d.ts +27 -27
- package/lib-commonjs/{config → commands/config}/projectConfig.js +180 -176
- package/lib-commonjs/commands/config/projectConfig.js.map +1 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.d.ts +6 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.js +21 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.js.map +1 -0
- package/lib-commonjs/{healthChecks.d.ts → commands/healthCheck/healthChecks.d.ts} +7 -2
- package/lib-commonjs/commands/healthCheck/healthChecks.js +124 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.js.map +1 -0
- package/lib-commonjs/commands/initWindows/initWindows.d.ts +46 -0
- package/lib-commonjs/commands/initWindows/initWindows.js +244 -0
- package/lib-commonjs/commands/initWindows/initWindows.js.map +1 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.d.ts +15 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.js +38 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.js.map +1 -0
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindows.d.ts +10 -11
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindows.js +321 -318
- package/lib-commonjs/commands/runWindows/runWindows.js.map +1 -0
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.d.ts +56 -56
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.js +132 -135
- package/lib-commonjs/commands/runWindows/runWindowsOptions.js.map +1 -0
- package/lib-commonjs/e2etest/autolink.test.d.ts +6 -6
- package/lib-commonjs/e2etest/autolink.test.js +366 -418
- package/lib-commonjs/e2etest/autolink.test.js.map +1 -1
- package/lib-commonjs/e2etest/dependencyConfig.test.d.ts +6 -6
- package/lib-commonjs/e2etest/dependencyConfig.test.js +129 -161
- package/lib-commonjs/e2etest/dependencyConfig.test.js.map +1 -1
- package/lib-commonjs/e2etest/healthChecks.test.d.ts +6 -0
- package/lib-commonjs/e2etest/healthChecks.test.js +31 -0
- package/lib-commonjs/e2etest/healthChecks.test.js.map +1 -0
- package/lib-commonjs/e2etest/initWindows.test.d.ts +6 -0
- package/lib-commonjs/e2etest/initWindows.test.js +43 -0
- package/lib-commonjs/e2etest/initWindows.test.js.map +1 -0
- package/lib-commonjs/e2etest/projectConfig.test.d.ts +6 -6
- package/lib-commonjs/e2etest/projectConfig.test.js +110 -124
- package/lib-commonjs/e2etest/projectConfig.test.js.map +1 -1
- package/lib-commonjs/e2etest/projectConfig.utils.d.ts +8 -4
- package/lib-commonjs/e2etest/projectConfig.utils.js +76 -62
- package/lib-commonjs/e2etest/projectConfig.utils.js.map +1 -1
- package/lib-commonjs/e2etest/runWindows.test.d.ts +6 -6
- package/lib-commonjs/e2etest/runWindows.test.js +60 -39
- package/lib-commonjs/e2etest/runWindows.test.js.map +1 -1
- package/lib-commonjs/e2etest/typesUpToDate.test.d.ts +6 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.js +21 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.js.map +1 -0
- package/lib-commonjs/generator-common/index.d.ts +39 -39
- package/lib-commonjs/generator-common/index.js +242 -242
- package/lib-commonjs/generator-common/index.js.map +1 -1
- package/lib-commonjs/generator-windows/index.d.ts +10 -10
- package/lib-commonjs/generator-windows/index.js +316 -369
- package/lib-commonjs/generator-windows/index.js.map +1 -1
- package/lib-commonjs/index.d.ts +50 -50
- package/lib-commonjs/index.js +77 -106
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/{runWindows/utils → utils}/build.d.ts +12 -12
- package/lib-commonjs/{runWindows/utils → utils}/build.js +84 -84
- package/lib-commonjs/utils/build.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.d.ts +6 -6
- package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.js +69 -69
- package/lib-commonjs/utils/checkRequirements.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.d.ts +21 -15
- package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.js +149 -127
- package/lib-commonjs/utils/commandWithProgress.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/deploy.d.ts +12 -12
- package/lib-commonjs/{runWindows/utils → utils}/deploy.js +353 -328
- package/lib-commonjs/utils/deploy.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/info.d.ts +6 -6
- package/lib-commonjs/{runWindows/utils → utils}/info.js +28 -28
- package/lib-commonjs/utils/info.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/msbuildtools.d.ts +28 -26
- package/lib-commonjs/{runWindows/utils → utils}/msbuildtools.js +273 -219
- package/lib-commonjs/utils/msbuildtools.js.map +1 -0
- package/lib-commonjs/utils/pathHelpers.d.ts +9 -0
- package/lib-commonjs/utils/pathHelpers.js +37 -0
- package/lib-commonjs/utils/pathHelpers.js.map +1 -0
- package/lib-commonjs/utils/telemetryHelpers.d.ts +29 -0
- package/lib-commonjs/utils/telemetryHelpers.js +121 -0
- package/lib-commonjs/utils/telemetryHelpers.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/version.d.ts +19 -19
- package/lib-commonjs/{runWindows/utils → utils}/version.js +109 -109
- package/lib-commonjs/utils/version.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/vsInstalls.d.ts +34 -34
- package/lib-commonjs/{runWindows/utils → utils}/vsInstalls.js +99 -73
- package/lib-commonjs/utils/vsInstalls.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/vstools.d.ts +16 -16
- package/lib-commonjs/{runWindows/utils → utils}/vstools.js +189 -162
- package/lib-commonjs/utils/vstools.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.d.ts +24 -24
- package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.js +108 -108
- package/lib-commonjs/utils/winappdeploytool.js.map +1 -0
- package/package.json +27 -20
- package/src/powershell/Eval-MsBuildProperties.ps1 +156 -0
- package/lib-commonjs/config/configUtils.js.map +0 -1
- package/lib-commonjs/config/dependencyConfig.js.map +0 -1
- package/lib-commonjs/config/projectConfig.js.map +0 -1
- package/lib-commonjs/healthChecks.js +0 -88
- package/lib-commonjs/healthChecks.js.map +0 -1
- package/lib-commonjs/runWindows/runWindows.js.map +0 -1
- package/lib-commonjs/runWindows/runWindowsOptions.js.map +0 -1
- package/lib-commonjs/runWindows/utils/autolink.js.map +0 -1
- package/lib-commonjs/runWindows/utils/build.js.map +0 -1
- package/lib-commonjs/runWindows/utils/checkRequirements.js.map +0 -1
- package/lib-commonjs/runWindows/utils/commandWithProgress.js.map +0 -1
- package/lib-commonjs/runWindows/utils/deploy.js.map +0 -1
- package/lib-commonjs/runWindows/utils/info.js.map +0 -1
- package/lib-commonjs/runWindows/utils/msbuildtools.js.map +0 -1
- package/lib-commonjs/runWindows/utils/version.js.map +0 -1
- package/lib-commonjs/runWindows/utils/vsInstalls.js.map +0 -1
- package/lib-commonjs/runWindows/utils/vstools.js.map +0 -1
- package/lib-commonjs/runWindows/utils/winappdeploytool.js.map +0 -1
- /package/{powershell → src/powershell}/Add-AppDevPackage.ps1 +0 -0
- /package/{powershell → src/powershell}/WindowsStoreAppUtils.ps1 +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
* @format
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const telemetry_1 = require("@react-native-windows/telemetry");
|
|
9
|
+
const initWindowsOptions_1 = require("../commands/initWindows/initWindowsOptions");
|
|
10
|
+
function validateOptionName(name, optionName) {
|
|
11
|
+
// Do not add a default case here. Every item must explicitly return true
|
|
12
|
+
switch (optionName) {
|
|
13
|
+
case 'logging':
|
|
14
|
+
case 'template':
|
|
15
|
+
case 'name':
|
|
16
|
+
case 'namespace':
|
|
17
|
+
case 'overwrite':
|
|
18
|
+
case 'telemetry':
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
throw new Error(`Unable to find ${optionName} to match '${name}' in InitOptions.`);
|
|
22
|
+
}
|
|
23
|
+
test('initOptions - validate options', () => {
|
|
24
|
+
for (const commandOption of initWindowsOptions_1.initOptions) {
|
|
25
|
+
// Validate names
|
|
26
|
+
expect(commandOption.name).not.toBeNull();
|
|
27
|
+
expect(commandOption.name.startsWith('--')).toBe(true);
|
|
28
|
+
expect(commandOption.name).toBe(commandOption.name.trim());
|
|
29
|
+
// Validate defaults
|
|
30
|
+
if (!commandOption.name.endsWith(' [string]') &&
|
|
31
|
+
!commandOption.name.endsWith(' [number]')) {
|
|
32
|
+
// Commander ignores defaults for flags, so leave undefined to prevent confusion
|
|
33
|
+
expect(commandOption.default).toBeUndefined();
|
|
34
|
+
}
|
|
35
|
+
// Validate description
|
|
36
|
+
expect(commandOption.description).not.toBeNull();
|
|
37
|
+
expect(commandOption.description).toBe(commandOption.description.trim());
|
|
38
|
+
// Validate all command options are present in InitOptions
|
|
39
|
+
const optionName = (0, telemetry_1.commanderNameToOptionName)(commandOption.name);
|
|
40
|
+
expect(validateOptionName(commandOption.name, optionName)).toBe(true);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=initWindows.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initWindows.test.js","sourceRoot":"","sources":["../../src/e2etest/initWindows.test.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,+DAA0E;AAE1E,mFAGoD;AAEpD,SAAS,kBAAkB,CACzB,IAAY,EACZ,UAA6B;IAE7B,yEAAyE;IACzE,QAAQ,UAAU,EAAE;QAClB,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,IAAI,CAAC;KACf;IACD,MAAM,IAAI,KAAK,CACb,kBAAkB,UAAU,cAAc,IAAI,mBAAmB,CAClE,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,KAAK,MAAM,aAAa,IAAI,gCAAW,EAAE;QACvC,iBAAiB;QACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3D,oBAAoB;QACpB,IACE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EACzC;YACA,gFAAgF;YAChF,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;SAC/C;QAED,uBAAuB;QACvB,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,CAAC,aAAa,CAAC,WAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3E,0DAA0D;QAC1D,MAAM,UAAU,GAAG,IAAA,qCAAyB,EAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,CACJ,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,UAA+B,CAAC,CACxE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACd;AACH,CAAC,CAAC,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {commanderNameToOptionName} from '@react-native-windows/telemetry';\n\nimport {\n initOptions,\n InitOptions,\n} from '../commands/initWindows/initWindowsOptions';\n\nfunction validateOptionName(\n name: string,\n optionName: keyof InitOptions,\n): boolean {\n // Do not add a default case here. Every item must explicitly return true\n switch (optionName) {\n case 'logging':\n case 'template':\n case 'name':\n case 'namespace':\n case 'overwrite':\n case 'telemetry':\n return true;\n }\n throw new Error(\n `Unable to find ${optionName} to match '${name}' in InitOptions.`,\n );\n}\n\ntest('initOptions - validate options', () => {\n for (const commandOption of initOptions) {\n // Validate names\n expect(commandOption.name).not.toBeNull();\n expect(commandOption.name.startsWith('--')).toBe(true);\n expect(commandOption.name).toBe(commandOption.name.trim());\n\n // Validate defaults\n if (\n !commandOption.name.endsWith(' [string]') &&\n !commandOption.name.endsWith(' [number]')\n ) {\n // Commander ignores defaults for flags, so leave undefined to prevent confusion\n expect(commandOption.default).toBeUndefined();\n }\n\n // Validate description\n expect(commandOption.description).not.toBeNull();\n expect(commandOption.description!).toBe(commandOption.description!.trim());\n\n // Validate all command options are present in InitOptions\n const optionName = commanderNameToOptionName(commandOption.name);\n expect(\n validateOptionName(commandOption.name, optionName as keyof InitOptions),\n ).toBe(true);\n }\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
* @format
|
|
5
|
-
*/
|
|
6
|
-
export {};
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
* @format
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
@@ -1,125 +1,111 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
* @format
|
|
6
|
-
*/
|
|
7
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
-
};
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
const fs_1 = __importDefault(require("fs"));
|
|
12
|
-
const path_1 = __importDefault(require("path"));
|
|
13
|
-
const projectConfig_1 = require("../config/projectConfig");
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
await (0,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
await (0,
|
|
43
|
-
}),
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const folder = path_1.default.resolve('src/e2etest/projects/WithWinUI3');
|
|
112
|
-
const rnc = require(path_1.default.join(folder, 'react-native.config.js'));
|
|
113
|
-
const config = (0, projectConfig_1.projectConfigWindows)(folder, rnc.project.windows);
|
|
114
|
-
const al = new autolink_1.AutolinkWindows({ windows: config }, {}, {
|
|
115
|
-
check: false,
|
|
116
|
-
logging: false,
|
|
117
|
-
});
|
|
118
|
-
const exd = await al.ensureXAMLDialect();
|
|
119
|
-
expect(exd).toBeTruthy();
|
|
120
|
-
const packagesConfig = (await fs_1.default.promises.readFile(path_1.default.join(folder, 'windows/WithWinUI3/packages.config'))).toString();
|
|
121
|
-
const experimentalFeatures = (await fs_1.default.promises.readFile(path_1.default.join(folder, 'windows/ExperimentalFeatures.props'))).toString();
|
|
122
|
-
expect(packagesConfig.replace(/\r/g, '')).toMatchSnapshot();
|
|
123
|
-
expect(experimentalFeatures.replace(/\r/g, '')).toMatchSnapshot();
|
|
124
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
* @format
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
const fs_1 = __importDefault(require("@react-native-windows/fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const projectConfig_1 = require("../commands/config/projectConfig");
|
|
14
|
+
const autolinkWindows_1 = require("../commands/autolinkWindows/autolinkWindows");
|
|
15
|
+
const projectConfig_utils_1 = require("./projectConfig.utils");
|
|
16
|
+
function project(name, setup) {
|
|
17
|
+
return [name, setup];
|
|
18
|
+
}
|
|
19
|
+
const projects = [
|
|
20
|
+
// Nothing but a react-native.config.js, with nulls
|
|
21
|
+
project('BlankApp'),
|
|
22
|
+
// Nothing but a windows folder
|
|
23
|
+
project('MissingProjectFilesApp', async (folder) => {
|
|
24
|
+
const windowsDir = path_1.default.join(folder, 'windows');
|
|
25
|
+
await (0, projectConfig_utils_1.tryMkdir)(windowsDir);
|
|
26
|
+
}),
|
|
27
|
+
// New C++ project based on the template
|
|
28
|
+
project('SimpleCppApp', async (folder) => {
|
|
29
|
+
await (0, projectConfig_utils_1.ensureCppAppProject)(folder, 'SimpleCppApp');
|
|
30
|
+
}),
|
|
31
|
+
// New C# project based on the template
|
|
32
|
+
project('SimpleCSharpApp', async (folder) => {
|
|
33
|
+
await (0, projectConfig_utils_1.ensureCSharpAppProject)(folder, 'SimpleCSharpApp');
|
|
34
|
+
}),
|
|
35
|
+
project('WithWinUI3', async (folder) => {
|
|
36
|
+
await (0, projectConfig_utils_1.ensureWinUI3Project)(folder);
|
|
37
|
+
}),
|
|
38
|
+
project('WithHermes', async (folder) => {
|
|
39
|
+
await (0, projectConfig_utils_1.ensureHermesProject)(folder);
|
|
40
|
+
}),
|
|
41
|
+
project('WithExperimentalNuget', async (folder) => {
|
|
42
|
+
await (0, projectConfig_utils_1.ensureExperimentalNuGetProject)(folder);
|
|
43
|
+
}),
|
|
44
|
+
project('WithIndirectDependency'),
|
|
45
|
+
];
|
|
46
|
+
// Tests that given userConfig is null, the result will always be null
|
|
47
|
+
test.each(projects)('projectConfig - %s (userConfig is null)', async (name, setup) => {
|
|
48
|
+
const folder = path_1.default.resolve('src/e2etest/projects/', name);
|
|
49
|
+
if (setup !== undefined) {
|
|
50
|
+
await setup(folder);
|
|
51
|
+
}
|
|
52
|
+
const userConfig = null;
|
|
53
|
+
expect((0, projectConfig_1.projectConfigWindows)(folder, userConfig)).toBeNull();
|
|
54
|
+
});
|
|
55
|
+
// Tests the result given a windows project config in react-native.config.js
|
|
56
|
+
test.each(projects)('projectConfig - %s (Use react-native.config.js)', async (name, setup) => {
|
|
57
|
+
const folder = path_1.default.resolve('src/e2etest/projects/', name);
|
|
58
|
+
const rnc = require(path_1.default.join(folder, 'react-native.config.js'));
|
|
59
|
+
if (setup !== undefined) {
|
|
60
|
+
await setup(folder);
|
|
61
|
+
}
|
|
62
|
+
const userConfig = rnc.project.windows;
|
|
63
|
+
if (name === 'BlankApp') {
|
|
64
|
+
expect((0, projectConfig_1.projectConfigWindows)(folder, userConfig)).toMatchSnapshot();
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
expect((0, projectConfig_1.projectConfigWindows)(folder, userConfig)).toMatchSnapshot({
|
|
68
|
+
folder: expect.stringContaining(name),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
// Tests the result of ignoring the windows project config in react-native.config.js
|
|
73
|
+
test.each(projects)('projectConfig - %s (Ignore react-native.config.js)', async (name, setup) => {
|
|
74
|
+
const folder = path_1.default.resolve('src/e2etest/projects/', name);
|
|
75
|
+
if (setup !== undefined) {
|
|
76
|
+
await setup(folder);
|
|
77
|
+
}
|
|
78
|
+
const userConfig = {};
|
|
79
|
+
if (name === 'BlankApp') {
|
|
80
|
+
expect((0, projectConfig_1.projectConfigWindows)(folder, userConfig)).toMatchSnapshot();
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
expect((0, projectConfig_1.projectConfigWindows)(folder, userConfig)).toMatchSnapshot({
|
|
84
|
+
folder: expect.stringContaining(name),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
test('useWinUI3=true in react-native.config.js, UseWinUI3=false in ExperimentalFeatures.props', async () => {
|
|
89
|
+
const folder = path_1.default.resolve('src/e2etest/projects/WithWinUI3');
|
|
90
|
+
// Create project with UseWinUI3 == false in ExperimentalFeatures.props
|
|
91
|
+
await (0, projectConfig_utils_1.ensureCppAppProject)(folder, 'WithWinUI3', false, false, false);
|
|
92
|
+
const rnc = require(path_1.default.join(folder, 'react-native.config.js'));
|
|
93
|
+
const config = (0, projectConfig_1.projectConfigWindows)(folder, rnc.project.windows);
|
|
94
|
+
// Set useWinUI3=true in react-native.config.js
|
|
95
|
+
config.useWinUI3 = true;
|
|
96
|
+
const experimentalFeaturesPropsFile = path_1.default.join(folder, 'windows/ExperimentalFeatures.props');
|
|
97
|
+
// Verify starting props file
|
|
98
|
+
const startingExperimentalFeatures = (await fs_1.default.readFile(experimentalFeaturesPropsFile)).toString();
|
|
99
|
+
expect(startingExperimentalFeatures.replace(/\r/g, '')).toMatchSnapshot();
|
|
100
|
+
// Run Autolink to sync the files
|
|
101
|
+
const al = new autolinkWindows_1.AutoLinkWindows({ windows: config }, {}, {
|
|
102
|
+
check: false,
|
|
103
|
+
logging: false,
|
|
104
|
+
});
|
|
105
|
+
const exd = await al.ensureXAMLDialect();
|
|
106
|
+
expect(exd).toBeTruthy();
|
|
107
|
+
// Verify ending props file
|
|
108
|
+
const finalExperimentalFeatures = (await fs_1.default.readFile(experimentalFeaturesPropsFile)).toString();
|
|
109
|
+
expect(finalExperimentalFeatures.replace(/\r/g, '')).toMatchSnapshot();
|
|
110
|
+
});
|
|
125
111
|
//# sourceMappingURL=projectConfig.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.test.js","sourceRoot":"","sources":["../../src/e2etest/projectConfig.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport {\n projectConfigWindows,\n WindowsProjectConfig,\n} from '../config/projectConfig';\n\nimport {copyAndReplace} from '../generator-common';\nimport {AutolinkWindows} from '../runWindows/utils/autolink';\nimport {\n ensureWinUI3Project,\n templateRoot,\n testProjectGuid,\n tryMkdir,\n} from './projectConfig.utils';\n\ntype TargetProject = [string, ((folder: string) => Promise<void>)?];\n\nfunction project(\n name: string,\n setup?: (folder: string) => Promise<void>,\n): TargetProject {\n return [name, setup];\n}\n\nconst projects: TargetProject[] = [\n // Nothing but a react-native.config.js, with nulls\n project('BlankApp'),\n // Nothing but a windows folder\n project('MissingProjectFilesApp', async (folder: string) => {\n const windowsDir = path.join(folder, 'windows');\n await tryMkdir(windowsDir);\n }),\n // New C++ project based on the template\n project('SimpleCppApp', async (folder: string) => {\n const windowsDir = path.join(folder, 'windows');\n await tryMkdir(windowsDir);\n\n const replacements = {\n name: 'SimpleCppApp',\n namespace: 'SimpleCppApp',\n useMustache: true,\n projectGuidUpper: testProjectGuid,\n projectGuidLower: testProjectGuid.toLowerCase(),\n };\n\n await copyAndReplace(\n path.join(templateRoot, 'cpp-app/proj/MyApp.sln'),\n path.join(windowsDir, 'SimpleCppApp.sln'),\n replacements,\n null,\n );\n\n const projDir = path.join(windowsDir, 'SimpleCppApp');\n await tryMkdir(projDir);\n\n await copyAndReplace(\n path.join(templateRoot, 'cpp-app/proj/MyApp.vcxproj'),\n path.join(projDir, 'SimpleCppApp.vcxproj'),\n replacements,\n null,\n );\n }),\n // New C# project based on the template\n project('SimpleCSharpApp', async (folder: string) => {\n const windowsDir = path.join(folder, 'windows');\n await tryMkdir(windowsDir);\n\n const replacements = {\n name: 'SimpleCSharpApp',\n namespace: 'SimpleCSharpApp',\n useMustache: true,\n projectGuidUpper: testProjectGuid,\n projectGuidLower: testProjectGuid.toLowerCase(),\n };\n\n await copyAndReplace(\n path.join(templateRoot, 'cs-app/proj/MyApp.sln'),\n path.join(windowsDir, 'SimpleCSharpApp.sln'),\n replacements,\n null,\n );\n\n const projDir = path.join(windowsDir, 'SimpleCSharpApp');\n await tryMkdir(projDir);\n\n await copyAndReplace(\n path.join(templateRoot, 'cs-app/proj/MyApp.csproj'),\n path.join(projDir, 'SimpleCSharpApp.csproj'),\n replacements,\n null,\n );\n }),\n project('WithWinUI3', async (folder: string) => {\n await ensureWinUI3Project(folder);\n }),\n project('WithIndirectDependency'),\n project('WithExperimentalFeaturesProps'),\n project('WithUseExperimentalNuget'),\n project('WithUseExperimentalNugetSetInProject'),\n];\n\n// Tests that given userConfig is null, the result will always be null\ntest.each(projects)(\n 'projectConfig - %s (userConfig is null)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig = null;\n\n expect(projectConfigWindows(folder, userConfig)).toBeNull();\n },\n);\n\n// Tests the result given a windows project config in react-native.config.js\ntest.each(projects)(\n 'projectConfig - %s (Use react-native.config.js)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig: Partial<WindowsProjectConfig> = rnc.project.windows;\n\n if (name === 'BlankApp') {\n expect(projectConfigWindows(folder, userConfig)).toMatchSnapshot();\n } else {\n expect(projectConfigWindows(folder, userConfig)).toMatchSnapshot({\n folder: expect.stringContaining(name),\n });\n }\n },\n);\n\n// Tests the result of ignoring the windows project config in react-native.config.js\ntest.each(projects)(\n 'projectConfig - %s (Ignore react-native.config.js)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig: Partial<WindowsProjectConfig> = {};\n\n if (name === 'BlankApp') {\n expect(projectConfigWindows(folder, userConfig)).toMatchSnapshot();\n } else {\n expect(projectConfigWindows(folder, userConfig)).toMatchSnapshot({\n folder: expect.stringContaining(name),\n });\n }\n },\n);\n\ntest('useWinUI3=true in react-native.config.js, useWinUI3=false in ExperimentalFeatures.props', async () => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n const config = projectConfigWindows(folder, rnc.project.windows)!;\n\n const al = new AutolinkWindows(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n\n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n\n const packagesConfig = (\n await fs.promises.readFile(\n path.join(folder, 'windows/WithWinUI3/packages.config'),\n )\n ).toString();\n\n const experimentalFeatures = (\n await fs.promises.readFile(\n path.join(folder, 'windows/ExperimentalFeatures.props'),\n )\n ).toString();\n\n expect(packagesConfig.replace(/\\r/g, '')).toMatchSnapshot();\n\n expect(experimentalFeatures.replace(/\\r/g, '')).toMatchSnapshot();\n});\n"]}
|
|
1
|
+
{"version":3,"file":"projectConfig.test.js","sourceRoot":"","sources":["../../src/e2etest/projectConfig.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\n\nimport {\n projectConfigWindows,\n WindowsProjectConfig,\n} from '../commands/config/projectConfig';\n\nimport {AutoLinkWindows} from '../commands/autolinkWindows/autolinkWindows';\nimport {\n ensureCppAppProject,\n ensureCSharpAppProject,\n ensureWinUI3Project,\n ensureHermesProject,\n ensureExperimentalNuGetProject,\n tryMkdir,\n} from './projectConfig.utils';\n\ntype TargetProject = [string, ((folder: string) => Promise<void>)?];\n\nfunction project(\n name: string,\n setup?: (folder: string) => Promise<void>,\n): TargetProject {\n return [name, setup];\n}\n\nconst projects: TargetProject[] = [\n // Nothing but a react-native.config.js, with nulls\n project('BlankApp'),\n // Nothing but a windows folder\n project('MissingProjectFilesApp', async (folder: string) => {\n const windowsDir = path.join(folder, 'windows');\n await tryMkdir(windowsDir);\n }),\n // New C++ project based on the template\n project('SimpleCppApp', async (folder: string) => {\n await ensureCppAppProject(folder, 'SimpleCppApp');\n }),\n // New C# project based on the template\n project('SimpleCSharpApp', async (folder: string) => {\n await ensureCSharpAppProject(folder, 'SimpleCSharpApp');\n }),\n project('WithWinUI3', async (folder: string) => {\n await ensureWinUI3Project(folder);\n }),\n project('WithHermes', async (folder: string) => {\n await ensureHermesProject(folder);\n }),\n project('WithExperimentalNuget', async (folder: string) => {\n await ensureExperimentalNuGetProject(folder);\n }),\n project('WithIndirectDependency'),\n];\n\n// Tests that given userConfig is null, the result will always be null\ntest.each(projects)(\n 'projectConfig - %s (userConfig is null)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig = null;\n\n expect(projectConfigWindows(folder, userConfig)).toBeNull();\n },\n);\n\n// Tests the result given a windows project config in react-native.config.js\ntest.each(projects)(\n 'projectConfig - %s (Use react-native.config.js)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig: Partial<WindowsProjectConfig> = rnc.project.windows;\n\n if (name === 'BlankApp') {\n expect(projectConfigWindows(folder, userConfig)).toMatchSnapshot();\n } else {\n expect(projectConfigWindows(folder, userConfig)).toMatchSnapshot({\n folder: expect.stringContaining(name),\n });\n }\n },\n);\n\n// Tests the result of ignoring the windows project config in react-native.config.js\ntest.each(projects)(\n 'projectConfig - %s (Ignore react-native.config.js)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig: Partial<WindowsProjectConfig> = {};\n\n if (name === 'BlankApp') {\n expect(projectConfigWindows(folder, userConfig)).toMatchSnapshot();\n } else {\n expect(projectConfigWindows(folder, userConfig)).toMatchSnapshot({\n folder: expect.stringContaining(name),\n });\n }\n },\n);\n\ntest('useWinUI3=true in react-native.config.js, UseWinUI3=false in ExperimentalFeatures.props', async () => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n\n // Create project with UseWinUI3 == false in ExperimentalFeatures.props\n await ensureCppAppProject(folder, 'WithWinUI3', false, false, false);\n\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n const config = projectConfigWindows(folder, rnc.project.windows)!;\n // Set useWinUI3=true in react-native.config.js\n config.useWinUI3 = true;\n\n const experimentalFeaturesPropsFile = path.join(\n folder,\n 'windows/ExperimentalFeatures.props',\n );\n\n // Verify starting props file\n const startingExperimentalFeatures = (\n await fs.readFile(experimentalFeaturesPropsFile)\n ).toString();\n expect(startingExperimentalFeatures.replace(/\\r/g, '')).toMatchSnapshot();\n\n // Run Autolink to sync the files\n const al = new AutoLinkWindows(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n\n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n\n // Verify ending props file\n const finalExperimentalFeatures = (\n await fs.readFile(experimentalFeaturesPropsFile)\n ).toString();\n\n expect(finalExperimentalFeatures.replace(/\\r/g, '')).toMatchSnapshot();\n});\n"]}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export declare const templateRoot: string;
|
|
2
|
-
export declare const testProjectGuid = "{416476D5-974A-4EE2-8145-4E331297247E}";
|
|
3
|
-
export declare function tryMkdir(dir: string): Promise<void>;
|
|
4
|
-
export declare function
|
|
1
|
+
export declare const templateRoot: string;
|
|
2
|
+
export declare const testProjectGuid = "{416476D5-974A-4EE2-8145-4E331297247E}";
|
|
3
|
+
export declare function tryMkdir(dir: string): Promise<void>;
|
|
4
|
+
export declare function ensureCppAppProject(folder: string, name: string, useWinUI3?: boolean, useHermes?: boolean, useExperimentalNuget?: boolean): Promise<void>;
|
|
5
|
+
export declare function ensureCSharpAppProject(folder: string, name: string, useWinUI3?: boolean, useHermes?: boolean, useExperimentalNuget?: boolean): Promise<void>;
|
|
6
|
+
export declare function ensureWinUI3Project(folder: string): Promise<void>;
|
|
7
|
+
export declare function ensureHermesProject(folder: string): Promise<void>;
|
|
8
|
+
export declare function ensureExperimentalNuGetProject(folder: string): Promise<void>;
|
|
@@ -1,63 +1,77 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ensureWinUI3Project = exports.tryMkdir = exports.testProjectGuid = exports.templateRoot = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const generator_common_1 = require("../generator-common");
|
|
10
|
-
exports.templateRoot = path_1.default.resolve('../../../vnext/template');
|
|
11
|
-
exports.testProjectGuid = '{416476D5-974A-4EE2-8145-4E331297247E}';
|
|
12
|
-
async function tryMkdir(dir) {
|
|
13
|
-
try {
|
|
14
|
-
await fs_1.default.
|
|
15
|
-
}
|
|
16
|
-
catch (err) { }
|
|
17
|
-
}
|
|
18
|
-
exports.tryMkdir = tryMkdir;
|
|
19
|
-
async function
|
|
20
|
-
const windowsDir = path_1.default.join(folder, 'windows');
|
|
21
|
-
if (fs_1.default.existsSync(windowsDir)) {
|
|
22
|
-
await fs_1.default.
|
|
23
|
-
}
|
|
24
|
-
await tryMkdir(windowsDir);
|
|
25
|
-
const replacements = {
|
|
26
|
-
name
|
|
27
|
-
namespace:
|
|
28
|
-
useMustache: true,
|
|
29
|
-
projectGuidUpper: exports.testProjectGuid,
|
|
30
|
-
projectGuidLower: exports.testProjectGuid.toLowerCase(),
|
|
31
|
-
useWinUI3:
|
|
32
|
-
useHermes:
|
|
33
|
-
useExperimentalNuget:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
await (0, generator_common_1.copyAndReplace)(path_1.default.join(exports.templateRoot, '
|
|
59
|
-
|
|
60
|
-
await (
|
|
61
|
-
}
|
|
62
|
-
exports.
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ensureExperimentalNuGetProject = exports.ensureHermesProject = exports.ensureWinUI3Project = exports.ensureCSharpAppProject = exports.ensureCppAppProject = exports.tryMkdir = exports.testProjectGuid = exports.templateRoot = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("@react-native-windows/fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const generator_common_1 = require("../generator-common");
|
|
10
|
+
exports.templateRoot = path_1.default.resolve('../../../vnext/template');
|
|
11
|
+
exports.testProjectGuid = '{416476D5-974A-4EE2-8145-4E331297247E}';
|
|
12
|
+
async function tryMkdir(dir) {
|
|
13
|
+
try {
|
|
14
|
+
await fs_1.default.mkdir(dir, { recursive: true });
|
|
15
|
+
}
|
|
16
|
+
catch (err) { }
|
|
17
|
+
}
|
|
18
|
+
exports.tryMkdir = tryMkdir;
|
|
19
|
+
async function ensureCppAppProject(folder, name, useWinUI3, useHermes, useExperimentalNuget) {
|
|
20
|
+
const windowsDir = path_1.default.join(folder, 'windows');
|
|
21
|
+
if (fs_1.default.existsSync(windowsDir)) {
|
|
22
|
+
await fs_1.default.rmdir(windowsDir, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
await tryMkdir(windowsDir);
|
|
25
|
+
const replacements = {
|
|
26
|
+
name,
|
|
27
|
+
namespace: name,
|
|
28
|
+
useMustache: true,
|
|
29
|
+
projectGuidUpper: exports.testProjectGuid,
|
|
30
|
+
projectGuidLower: exports.testProjectGuid.toLowerCase(),
|
|
31
|
+
useWinUI3: !!useWinUI3,
|
|
32
|
+
useHermes: !!useHermes,
|
|
33
|
+
useExperimentalNuget: !!useExperimentalNuget,
|
|
34
|
+
};
|
|
35
|
+
await (0, generator_common_1.copyAndReplace)(path_1.default.join(exports.templateRoot, 'cpp-app/proj/MyApp.sln'), path_1.default.join(windowsDir, `${name}.sln`), replacements, null);
|
|
36
|
+
const projDir = path_1.default.join(windowsDir, name);
|
|
37
|
+
await tryMkdir(projDir);
|
|
38
|
+
await (0, generator_common_1.copyAndReplace)(path_1.default.join(exports.templateRoot, 'cpp-app/proj/MyApp.vcxproj'), path_1.default.join(projDir, `${name}.vcxproj`), replacements, null);
|
|
39
|
+
await (0, generator_common_1.copyAndReplace)(path_1.default.join(exports.templateRoot, 'shared-app/proj/ExperimentalFeatures.props'), path_1.default.join(windowsDir, 'ExperimentalFeatures.props'), replacements, null);
|
|
40
|
+
}
|
|
41
|
+
exports.ensureCppAppProject = ensureCppAppProject;
|
|
42
|
+
async function ensureCSharpAppProject(folder, name, useWinUI3, useHermes, useExperimentalNuget) {
|
|
43
|
+
const windowsDir = path_1.default.join(folder, 'windows');
|
|
44
|
+
if (fs_1.default.existsSync(windowsDir)) {
|
|
45
|
+
await fs_1.default.rmdir(windowsDir, { recursive: true });
|
|
46
|
+
}
|
|
47
|
+
await tryMkdir(windowsDir);
|
|
48
|
+
const replacements = {
|
|
49
|
+
name,
|
|
50
|
+
namespace: name,
|
|
51
|
+
useMustache: true,
|
|
52
|
+
projectGuidUpper: exports.testProjectGuid,
|
|
53
|
+
projectGuidLower: exports.testProjectGuid.toLowerCase(),
|
|
54
|
+
useWinUI3: !!useWinUI3,
|
|
55
|
+
useHermes: !!useHermes,
|
|
56
|
+
useExperimentalNuget: !!useExperimentalNuget,
|
|
57
|
+
};
|
|
58
|
+
await (0, generator_common_1.copyAndReplace)(path_1.default.join(exports.templateRoot, 'cs-app/proj/MyApp.sln'), path_1.default.join(windowsDir, `${name}.sln`), replacements, null);
|
|
59
|
+
const projDir = path_1.default.join(windowsDir, name);
|
|
60
|
+
await tryMkdir(projDir);
|
|
61
|
+
await (0, generator_common_1.copyAndReplace)(path_1.default.join(exports.templateRoot, 'cs-app/proj/MyApp.csproj'), path_1.default.join(projDir, `${name}.csproj`), replacements, null);
|
|
62
|
+
await (0, generator_common_1.copyAndReplace)(path_1.default.join(exports.templateRoot, 'shared-app/proj/ExperimentalFeatures.props'), path_1.default.join(windowsDir, 'ExperimentalFeatures.props'), replacements, null);
|
|
63
|
+
}
|
|
64
|
+
exports.ensureCSharpAppProject = ensureCSharpAppProject;
|
|
65
|
+
async function ensureWinUI3Project(folder) {
|
|
66
|
+
await ensureCppAppProject(folder, 'WithWinUI3', true, false, false);
|
|
67
|
+
}
|
|
68
|
+
exports.ensureWinUI3Project = ensureWinUI3Project;
|
|
69
|
+
async function ensureHermesProject(folder) {
|
|
70
|
+
await ensureCppAppProject(folder, 'WithHermes', false, true, false);
|
|
71
|
+
}
|
|
72
|
+
exports.ensureHermesProject = ensureHermesProject;
|
|
73
|
+
async function ensureExperimentalNuGetProject(folder) {
|
|
74
|
+
await ensureCppAppProject(folder, 'WithExperimentalNuGet', false, false, true);
|
|
75
|
+
}
|
|
76
|
+
exports.ensureExperimentalNuGetProject = ensureExperimentalNuGetProject;
|
|
63
77
|
//# sourceMappingURL=projectConfig.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.utils.js","sourceRoot":"","sources":["../../src/e2etest/projectConfig.utils.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"projectConfig.utils.js","sourceRoot":"","sources":["../../src/e2etest/projectConfig.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from '@react-native-windows/fs'\nimport path from 'path';\nimport { copyAndReplace } from '../generator-common';\n\nexport const templateRoot = path.resolve('../../../vnext/template');\n\nexport const testProjectGuid = '{416476D5-974A-4EE2-8145-4E331297247E}';\n\nexport async function tryMkdir(dir: string): Promise<void> {\n try {\n await fs.mkdir(dir, {recursive: true});\n } catch (err) {}\n}\n\nexport async function ensureCppAppProject(folder: string, name: string, useWinUI3?: boolean, useHermes?: boolean, useExperimentalNuget?: boolean) {\n const windowsDir = path.join(folder, 'windows');\n if (fs.existsSync(windowsDir)) {\n await fs.rmdir(windowsDir, {recursive: true});\n }\n await tryMkdir(windowsDir);\n\n const replacements = {\n name,\n namespace: name,\n useMustache: true,\n projectGuidUpper: testProjectGuid,\n projectGuidLower: testProjectGuid.toLowerCase(),\n useWinUI3: !!useWinUI3,\n useHermes: !!useHermes,\n useExperimentalNuget: !!useExperimentalNuget,\n };\n\n await copyAndReplace(\n path.join(templateRoot, 'cpp-app/proj/MyApp.sln'),\n path.join(windowsDir, `${name}.sln`),\n replacements,\n null\n );\n\n const projDir = path.join(windowsDir, name);\n await tryMkdir(projDir);\n\n await copyAndReplace(\n path.join(templateRoot, 'cpp-app/proj/MyApp.vcxproj'),\n path.join(projDir, `${name}.vcxproj`),\n replacements,\n null\n );\n\n await copyAndReplace(\n path.join(templateRoot, 'shared-app/proj/ExperimentalFeatures.props'),\n path.join(windowsDir, 'ExperimentalFeatures.props'),\n replacements,\n null\n );\n}\n\nexport async function ensureCSharpAppProject(folder: string, name: string, useWinUI3?: boolean, useHermes?: boolean, useExperimentalNuget?: boolean) {\n const windowsDir = path.join(folder, 'windows');\n if (fs.existsSync(windowsDir)) {\n await fs.rmdir(windowsDir, {recursive: true});\n }\n await tryMkdir(windowsDir);\n\n const replacements = {\n name,\n namespace: name,\n useMustache: true,\n projectGuidUpper: testProjectGuid,\n projectGuidLower: testProjectGuid.toLowerCase(),\n useWinUI3: !!useWinUI3,\n useHermes: !!useHermes,\n useExperimentalNuget: !!useExperimentalNuget,\n };\n\n await copyAndReplace(\n path.join(templateRoot, 'cs-app/proj/MyApp.sln'),\n path.join(windowsDir, `${name}.sln`),\n replacements,\n null\n );\n\n const projDir = path.join(windowsDir, name);\n await tryMkdir(projDir);\n\n await copyAndReplace(\n path.join(templateRoot, 'cs-app/proj/MyApp.csproj'),\n path.join(projDir, `${name}.csproj`),\n replacements,\n null\n );\n\n await copyAndReplace(\n path.join(templateRoot, 'shared-app/proj/ExperimentalFeatures.props'),\n path.join(windowsDir, 'ExperimentalFeatures.props'),\n replacements,\n null\n );\n}\n\nexport async function ensureWinUI3Project(folder: string) {\n await ensureCppAppProject(folder, 'WithWinUI3', true, false, false);\n}\n\nexport async function ensureHermesProject(folder: string) {\n await ensureCppAppProject(folder, 'WithHermes', false, true, false);\n}\n\nexport async function ensureExperimentalNuGetProject(folder: string) {\n await ensureCppAppProject(folder, 'WithExperimentalNuGet', false, false, true);\n}"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
* @format
|
|
5
|
-
*/
|
|
6
|
-
export {};
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
* @format
|
|
5
|
+
*/
|
|
6
|
+
export {};
|