Skip to content

Commit 184a91b

Browse files
author
Nadezhda Atanasova
authored
Respect configuration when preparing project files (#2958)
1 parent b62c925 commit 184a91b

14 files changed

+51
-45
lines changed

lib/commands/test.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
import * as helpers from "../common/helpers";
2+
13
function RunTestCommandFactory(platform: string) {
24
return function RunTestCommand(
5+
$options: IOptions,
36
$testExecutionService: ITestExecutionService,
47
$projectData: IProjectData) {
58
$projectData.initializeProjectData();
6-
this.execute = (args: string[]): Promise<void> => $testExecutionService.startTestRunner(platform, $projectData);
9+
const projectFilesConfig = helpers.getProjectFilesConfig({ isReleaseBuild: this.$options.release });
10+
this.execute = (args: string[]): Promise<void> => $testExecutionService.startTestRunner(platform, $projectData, projectFilesConfig);
711
this.allowedParameters = [];
812
};
913
}
@@ -12,9 +16,10 @@ $injector.registerCommand("dev-test|android", RunTestCommandFactory('android'));
1216
$injector.registerCommand("dev-test|ios", RunTestCommandFactory('iOS'));
1317

1418
function RunKarmaTestCommandFactory(platform: string) {
15-
return function RunKarmaTestCommand($testExecutionService: ITestExecutionService, $projectData: IProjectData) {
19+
return function RunKarmaTestCommand($options: IOptions, $testExecutionService: ITestExecutionService, $projectData: IProjectData) {
1620
$projectData.initializeProjectData();
17-
this.execute = (args: string[]): Promise<void> => $testExecutionService.startKarmaServer(platform, $projectData);
21+
const projectFilesConfig = helpers.getProjectFilesConfig({ isReleaseBuild: this.$options.release });
22+
this.execute = (args: string[]): Promise<void> => $testExecutionService.startKarmaServer(platform, $projectData, projectFilesConfig);
1823
this.allowedParameters = [];
1924
};
2025
}

lib/definitions/platform.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ interface IPlatformsData {
287287
}
288288

289289
interface INodeModulesBuilder {
290-
prepareNodeModules(absoluteOutputPath: string, platform: string, lastModifiedTime: Date, projectData: IProjectData): Promise<void>;
291-
prepareJSNodeModules(absoluteOutputPath: string, platform: string, lastModifiedTime: Date, projectData: IProjectData): Promise<void>;
290+
prepareNodeModules(absoluteOutputPath: string, platform: string, lastModifiedTime: Date, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void>;
291+
prepareJSNodeModules(absoluteOutputPath: string, platform: string, lastModifiedTime: Date, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void>;
292292
cleanNodeModules(absoluteOutputPath: string, platform: string): void;
293293
}
294294

lib/definitions/plugins.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
interface IPluginsService {
22
add(plugin: string, projectData: IProjectData): Promise<void>; // adds plugin by name, github url, local path and et.
33
remove(pluginName: string, projectData: IProjectData): Promise<void>; // removes plugin only by name
4-
prepare(pluginData: IDependencyData, platform: string, projectData: IProjectData): Promise<void>;
4+
prepare(pluginData: IDependencyData, platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void>;
55
getAllInstalledPlugins(projectData: IProjectData): Promise<IPluginData[]>;
66
ensureAllDependenciesAreInstalled(projectData: IProjectData): Promise<void>;
7-
preparePluginScripts(pluginData: IPluginData, platform: string, projectData: IProjectData): void
7+
preparePluginScripts(pluginData: IPluginData, platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): void
88

99
/**
1010
* Returns all dependencies and devDependencies from pacakge.json file.

lib/definitions/project.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,8 @@ interface IAndroidProjectPropertiesManager {
279279
}
280280

281281
interface ITestExecutionService {
282-
startTestRunner(platform: string, projectData: IProjectData): Promise<void>;
283-
startKarmaServer(platform: string, projectData: IProjectData): Promise<void>;
282+
startTestRunner(platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void>;
283+
startKarmaServer(platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void>;
284284
}
285285

286286
/**

lib/providers/project-files-provider.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ export class ProjectFilesProvider extends ProjectFilesProviderBase {
1212

1313
private static INTERNAL_NONPROJECT_FILES = [ "**/*.ts" ];
1414

15-
public mapFilePath(filePath: string, platform: string, projectData: IProjectData): string {
15+
public mapFilePath(filePath: string, platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): string {
1616
let platformData = this.$platformsData.getPlatformData(platform.toLowerCase(), projectData);
17-
let parsedFilePath = this.getPreparedFilePath(filePath);
17+
let parsedFilePath = this.getPreparedFilePath(filePath, projectFilesConfig);
1818
let mappedFilePath = "";
1919
if (parsedFilePath.indexOf(constants.NODE_MODULES_FOLDER_NAME) > -1) {
2020
let relativePath = path.relative(path.join(projectData.projectDir, constants.NODE_MODULES_FOLDER_NAME), parsedFilePath);

lib/services/platform-service.ts

+10-9
Original file line numberDiff line numberDiff line change
@@ -294,10 +294,11 @@ export class PlatformService extends EventEmitter implements IPlatformService {
294294
this.$logger.out("Preparing project...");
295295

296296
let platformData = this.$platformsData.getPlatformData(platform, projectData);
297-
await this.preparePlatformCoreJS(platform, platformData, appFilesUpdaterOptions, projectData, platformSpecificData, changesInfo);
297+
const projectFilesConfig = helpers.getProjectFilesConfig({ isReleaseBuild: appFilesUpdaterOptions.release });
298+
await this.preparePlatformCoreJS(platform, platformData, appFilesUpdaterOptions, projectData, platformSpecificData, changesInfo, filesToSync, projectFilesConfig);
298299

299300
if (!nativePrepare || !nativePrepare.skipNativePrepare) {
300-
await this.preparePlatformCoreNative(platform, platformData, appFilesUpdaterOptions, projectData, platformSpecificData, changesInfo);
301+
await this.preparePlatformCoreNative(platform, platformData, appFilesUpdaterOptions, projectData, platformSpecificData, changesInfo, projectFilesConfig);
301302
}
302303

303304
let directoryPath = path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME);
@@ -306,12 +307,12 @@ export class PlatformService extends EventEmitter implements IPlatformService {
306307
excludedDirs.push(constants.TNS_MODULES_FOLDER_NAME);
307308
}
308309

309-
this.$projectFilesManager.processPlatformSpecificFiles(directoryPath, platform, excludedDirs);
310+
this.$projectFilesManager.processPlatformSpecificFiles(directoryPath, platform, projectFilesConfig, excludedDirs);
310311

311312
this.$logger.out(`Project successfully prepared (${platform})`);
312313
}
313314

314-
private async preparePlatformCoreJS(platform: string, platformData: IPlatformData, appFilesUpdaterOptions: IAppFilesUpdaterOptions, projectData: IProjectData, platformSpecificData: IPlatformSpecificData, changesInfo?: IProjectChangesInfo, filesToSync?: Array<String>, ): Promise<void> {
315+
private async preparePlatformCoreJS(platform: string, platformData: IPlatformData, appFilesUpdaterOptions: IAppFilesUpdaterOptions, projectData: IProjectData, platformSpecificData: IPlatformSpecificData, changesInfo?: IProjectChangesInfo, filesToSync?: Array<String>, projectFilesConfig?: IProjectFilesConfig): Promise<void> {
315316
if (!changesInfo || changesInfo.appFilesChanged) {
316317
await this.copyAppFiles(platformData, appFilesUpdaterOptions, projectData);
317318

@@ -324,11 +325,11 @@ export class PlatformService extends EventEmitter implements IPlatformService {
324325
}
325326

326327
if (!changesInfo || changesInfo.modulesChanged) {
327-
await this.copyTnsModules(platform, platformData, projectData);
328+
await this.copyTnsModules(platform, platformData, projectData, projectFilesConfig);
328329
}
329330
}
330331

331-
public async preparePlatformCoreNative(platform: string, platformData: IPlatformData, appFilesUpdaterOptions: IAppFilesUpdaterOptions, projectData: IProjectData, platformSpecificData: IPlatformSpecificData, changesInfo?: IProjectChangesInfo): Promise<void> {
332+
public async preparePlatformCoreNative(platform: string, platformData: IPlatformData, appFilesUpdaterOptions: IAppFilesUpdaterOptions, projectData: IProjectData, platformSpecificData: IPlatformSpecificData, changesInfo?: IProjectChangesInfo, projectFilesConfig?: IProjectFilesConfig): Promise<void> {
332333
if (changesInfo.hasChanges) {
333334
await this.cleanProject(platform, appFilesUpdaterOptions, platformData, projectData);
334335
}
@@ -347,7 +348,7 @@ export class PlatformService extends EventEmitter implements IPlatformService {
347348

348349
let tnsModulesDestinationPath = path.join(appDestinationDirectoryPath, constants.TNS_MODULES_FOLDER_NAME);
349350
// Process node_modules folder
350-
await this.$nodeModulesBuilder.prepareNodeModules(tnsModulesDestinationPath, platform, lastModifiedTime, projectData);
351+
await this.$nodeModulesBuilder.prepareNodeModules(tnsModulesDestinationPath, platform, lastModifiedTime, projectData, projectFilesConfig);
351352
}
352353

353354
if (!changesInfo || changesInfo.configChanged || changesInfo.modulesChanged) {
@@ -385,14 +386,14 @@ export class PlatformService extends EventEmitter implements IPlatformService {
385386
}
386387
}
387388

388-
private async copyTnsModules(platform: string, platformData: IPlatformData, projectData: IProjectData): Promise<void> {
389+
private async copyTnsModules(platform: string, platformData: IPlatformData, projectData: IProjectData, projectFilesConfig?: IProjectFilesConfig): Promise<void> {
389390
let appDestinationDirectoryPath = path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME);
390391
let lastModifiedTime = this.$fs.exists(appDestinationDirectoryPath) ? this.$fs.getFsStats(appDestinationDirectoryPath).mtime : null;
391392

392393
try {
393394
let tnsModulesDestinationPath = path.join(appDestinationDirectoryPath, constants.TNS_MODULES_FOLDER_NAME);
394395
// Process node_modules folder
395-
await this.$nodeModulesBuilder.prepareJSNodeModules(tnsModulesDestinationPath, platform, lastModifiedTime, projectData);
396+
await this.$nodeModulesBuilder.prepareJSNodeModules(tnsModulesDestinationPath, platform, lastModifiedTime, projectData, projectFilesConfig);
396397
} catch (error) {
397398
this.$logger.debug(error);
398399
shell.rm("-rf", appDestinationDirectoryPath);

lib/services/plugins-service.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -107,22 +107,22 @@ export class PluginsService implements IPluginsService {
107107
return await platformData.platformProjectService.validatePlugins(projectData);
108108
}
109109

110-
public async prepare(dependencyData: IDependencyData, platform: string, projectData: IProjectData): Promise<void> {
110+
public async prepare(dependencyData: IDependencyData, platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void> {
111111
platform = platform.toLowerCase();
112112
let platformData = this.$platformsData.getPlatformData(platform, projectData);
113113
let pluginData = this.convertToPluginData(dependencyData, projectData.projectDir);
114114

115115
let appFolderExists = this.$fs.exists(path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME));
116116
if (appFolderExists) {
117-
this.preparePluginScripts(pluginData, platform, projectData);
117+
this.preparePluginScripts(pluginData, platform, projectData, projectFilesConfig);
118118
await this.preparePluginNativeCode(pluginData, platform, projectData);
119119

120120
// Show message
121121
this.$logger.out(`Successfully prepared plugin ${pluginData.name} for ${platform}.`);
122122
}
123123
}
124124

125-
public preparePluginScripts(pluginData: IPluginData, platform: string, projectData: IProjectData): void {
125+
public preparePluginScripts(pluginData: IPluginData, platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): void {
126126
let platformData = this.$platformsData.getPlatformData(platform, projectData);
127127
let pluginScriptsDestinationPath = path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME, "tns_modules");
128128
let scriptsDestinationExists = this.$fs.exists(pluginScriptsDestinationPath);
@@ -136,7 +136,7 @@ export class PluginsService implements IPluginsService {
136136
}
137137

138138
//prepare platform speciffic files, .map and .ts files
139-
this.$projectFilesManager.processPlatformSpecificFiles(pluginScriptsDestinationPath, platform);
139+
this.$projectFilesManager.processPlatformSpecificFiles(pluginScriptsDestinationPath, platform, projectFilesConfig);
140140
}
141141

142142
public async preparePluginNativeCode(pluginData: IPluginData, platform: string, projectData: IProjectData): Promise<void> {

lib/services/test-execution-service.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class TestExecutionService implements ITestExecutionService {
3333

3434
public platform: string;
3535

36-
public async startTestRunner(platform: string, projectData: IProjectData): Promise<void> {
36+
public async startTestRunner(platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void> {
3737
this.platform = platform;
3838
this.$options.justlaunch = true;
3939
await new Promise<void>((resolve, reject) => {
@@ -133,7 +133,7 @@ class TestExecutionService implements ITestExecutionService {
133133
});
134134
}
135135

136-
public async startKarmaServer(platform: string, projectData: IProjectData): Promise<void> {
136+
public async startKarmaServer(platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void> {
137137
platform = platform.toLowerCase();
138138
this.platform = platform;
139139

lib/tools/node-modules/node-modules-builder.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ export class NodeModulesBuilder implements INodeModulesBuilder {
88
private $nodeModulesDependenciesBuilder: INodeModulesDependenciesBuilder
99
) { }
1010

11-
public async prepareNodeModules(absoluteOutputPath: string, platform: string, lastModifiedTime: Date, projectData: IProjectData): Promise<void> {
11+
public async prepareNodeModules(absoluteOutputPath: string, platform: string, lastModifiedTime: Date, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void> {
1212
const productionDependencies = this.initialPrepareNodeModules(absoluteOutputPath, platform, lastModifiedTime, projectData);
1313
const npmPluginPrepare: NpmPluginPrepare = this.$injector.resolve(NpmPluginPrepare);
14-
await npmPluginPrepare.preparePlugins(productionDependencies, platform, projectData);
14+
await npmPluginPrepare.preparePlugins(productionDependencies, platform, projectData, projectFilesConfig);
1515
}
1616

17-
public async prepareJSNodeModules(absoluteOutputPath: string, platform: string, lastModifiedTime: Date, projectData: IProjectData): Promise<void> {
17+
public async prepareJSNodeModules(absoluteOutputPath: string, platform: string, lastModifiedTime: Date, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void> {
1818
const productionDependencies = this.initialPrepareNodeModules(absoluteOutputPath, platform, lastModifiedTime, projectData);
1919
const npmPluginPrepare: NpmPluginPrepare = this.$injector.resolve(NpmPluginPrepare);
20-
await npmPluginPrepare.prepareJSPlugins(productionDependencies, platform, projectData);
20+
await npmPluginPrepare.prepareJSPlugins(productionDependencies, platform, projectData, projectFilesConfig);
2121
}
2222

2323
public cleanNodeModules(absoluteOutputPath: string, platform: string): void {

lib/tools/node-modules/node-modules-dest-copy.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export class NpmPluginPrepare {
137137
return result;
138138
}
139139

140-
public async preparePlugins(dependencies: IDependencyData[], platform: string, projectData: IProjectData): Promise<void> {
140+
public async preparePlugins(dependencies: IDependencyData[], platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void> {
141141
if (_.isEmpty(dependencies) || this.allPrepared(dependencies, platform, projectData)) {
142142
return;
143143
}
@@ -155,10 +155,10 @@ export class NpmPluginPrepare {
155155
await this.afterPrepare(dependencies, platform, projectData);
156156
}
157157

158-
public async prepareJSPlugins(dependencies: IDependencyData[], platform: string, projectData: IProjectData): Promise<void> {
158+
public async prepareJSPlugins(dependencies: IDependencyData[], platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise<void> {
159159
if (_.isEmpty(dependencies) || this.allPrepared(dependencies, platform, projectData)) {
160160
return;
161-
}
161+
}
162162

163163
for (let dependencyKey in dependencies) {
164164
const dependency = dependencies[dependencyKey];
@@ -169,7 +169,7 @@ export class NpmPluginPrepare {
169169
let platformData = this.$platformsData.getPlatformData(platform, projectData);
170170
let appFolderExists = this.$fs.exists(path.join(platformData.appDestinationDirectoryPath, constants.APP_FOLDER_NAME));
171171
if (appFolderExists) {
172-
this.$pluginsService.preparePluginScripts(pluginData, platform, projectData);
172+
this.$pluginsService.preparePluginScripts(pluginData, platform, projectData, projectFilesConfig);
173173
// Show message
174174
this.$logger.out(`Successfully prepared plugin ${pluginData.name} for ${platform}.`);
175175
}

test/plugin-prepare.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class TestNpmPluginPrepare extends NpmPluginPrepare {
2828
describe("Plugin preparation", () => {
2929
it("skips prepare if no plugins", async () => {
3030
const pluginPrepare = new TestNpmPluginPrepare({});
31-
await pluginPrepare.preparePlugins([], "android", null);
31+
await pluginPrepare.preparePlugins([], "android", null, {});
3232
assert.deepEqual({}, pluginPrepare.preparedDependencies);
3333
});
3434

@@ -42,7 +42,7 @@ describe("Plugin preparation", () => {
4242
nativescript: null,
4343
}
4444
];
45-
await pluginPrepare.preparePlugins(testDependencies, "android", null);
45+
await pluginPrepare.preparePlugins(testDependencies, "android", null, {});
4646
assert.deepEqual({}, pluginPrepare.preparedDependencies);
4747
});
4848

@@ -62,7 +62,7 @@ describe("Plugin preparation", () => {
6262
nativescript: null,
6363
}
6464
];
65-
await pluginPrepare.preparePlugins(testDependencies, "android", null);
65+
await pluginPrepare.preparePlugins(testDependencies, "android", null, {});
6666
const prepareData = { "tns-core-modules-widgets": true, "nativescript-calendar": true };
6767
assert.deepEqual(prepareData, pluginPrepare.preparedDependencies);
6868
});

test/plugins-service.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ describe("Plugins service", () => {
516516
`\n@#[line:1,col:39].` +
517517
`\n@#[line:1,col:39].`;
518518
mockBeginCommand(testInjector, expectedErrorMessage);
519-
await pluginsService.prepare(pluginJsonData, "android", projectData);
519+
await pluginsService.prepare(pluginJsonData, "android", projectData, {});
520520
});
521521
});
522522
});

0 commit comments

Comments
 (0)