Skip to content

Commit 13b0f4c

Browse files
committed
fix: use npm view command to get gradle versions from registry in order to fix the problems when private npm registry is configured
Rel to #4283
1 parent 6f646a9 commit 13b0f4c

File tree

3 files changed

+64
-6
lines changed

3 files changed

+64
-6
lines changed

lib/base-package-manager.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export abstract class BasePackageManager implements INodePackageManager {
9393
array.push(`--${flag}`);
9494
array.push(`${config[flag]}`);
9595
} else if (config[flag]) {
96-
if (flag === "dist-tags" || flag === "versions" || flag === "name") {
96+
if (flag === "dist-tags" || flag === "versions" || flag === "name" || flag === "gradle") {
9797
array.push(` ${flag}`);
9898
continue;
9999
}

lib/services/android-plugin-build-service.ts

+35-5
Original file line numberDiff line numberDiff line change
@@ -294,26 +294,56 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
294294
}
295295

296296
private async getRuntimeGradleVersions(projectDir: string): Promise<IRuntimeGradleVersions> {
297-
const registryData = await this.$packageManager.getRegistryPackageData(TNS_ANDROID_RUNTIME_NAME);
298297
let runtimeGradleVersions: IRuntimeGradleVersions = null;
299298
if (projectDir) {
300299
const projectRuntimeVersion = this.$platformService.getCurrentPlatformVersion(
301300
this.$devicePlatformsConstants.Android,
302301
this.$projectDataService.getProjectData(projectDir));
303-
runtimeGradleVersions = this.getGradleVersions(registryData.versions[projectRuntimeVersion]);
302+
runtimeGradleVersions = await this.getGradleVersions(projectRuntimeVersion);
304303
this.$logger.trace(`Got gradle versions ${JSON.stringify(runtimeGradleVersions)} from runtime v${projectRuntimeVersion}`);
305304
}
306305

307306
if (!runtimeGradleVersions) {
308-
const latestRuntimeVersion = registryData["dist-tags"].latest;
309-
runtimeGradleVersions = this.getGradleVersions(registryData.versions[latestRuntimeVersion]);
307+
const latestRuntimeVersion = await this.getLatestRuntimeVersion();
308+
runtimeGradleVersions = await this.getGradleVersions(latestRuntimeVersion);
310309
this.$logger.trace(`Got gradle versions ${JSON.stringify(runtimeGradleVersions)} from the latest runtime v${latestRuntimeVersion}`);
311310
}
312311

313312
return runtimeGradleVersions || {};
314313
}
315314

316-
private getGradleVersions(packageData: { gradle: { version: string, android: string } }): IRuntimeGradleVersions {
315+
private async getLatestRuntimeVersion(): Promise<string> {
316+
let runtimeVersion: string = null;
317+
318+
try {
319+
const result = await this.$packageManager.view(TNS_ANDROID_RUNTIME_NAME, { "dist-tags": true });
320+
runtimeVersion = result.latest;
321+
} catch (err) {
322+
this.$logger.trace(`Error while getting latest android runtime version from view command: ${err}`);
323+
const registryData = await this.$packageManager.getRegistryPackageData(TNS_ANDROID_RUNTIME_NAME);
324+
runtimeVersion = registryData["dist-tags"].latest;
325+
}
326+
327+
return runtimeVersion;
328+
}
329+
330+
private async getGradleVersions(runtimeVersion: string): Promise<IRuntimeGradleVersions> {
331+
let runtimeGradleVersions: { gradle: { version: string, android: string } } = null;
332+
333+
try {
334+
const output = await this.$packageManager.view(`${TNS_ANDROID_RUNTIME_NAME}@${runtimeVersion}`, { gradle: true });
335+
runtimeGradleVersions = { gradle: output };
336+
} catch (err) {
337+
this.$logger.trace(`Error while getting gradle data for android runtime from view command: ${err}`);
338+
const registryData = await this.$packageManager.getRegistryPackageData(TNS_ANDROID_RUNTIME_NAME);
339+
runtimeGradleVersions = registryData.versions[runtimeVersion];
340+
}
341+
342+
const result = this.getGradleVersionsCore(runtimeGradleVersions);
343+
return result;
344+
}
345+
346+
private getGradleVersionsCore(packageData: { gradle: { version: string, android: string } }): IRuntimeGradleVersions {
317347
const packageJsonGradle = packageData && packageData.gradle;
318348
let runtimeVersions: IRuntimeGradleVersions = null;
319349
if (packageJsonGradle && (packageJsonGradle.version || packageJsonGradle.android)) {

test/services/android-plugin-build-service.ts

+28
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,34 @@ describe('androidPluginBuildService', () => {
111111
}
112112
};
113113

114+
return result;
115+
},
116+
view: async (packageName: string, config: any): Promise<any> => {
117+
let result: any = null;
118+
if (config && config.gradle) {
119+
const packageVersion = packageName.split("@")[1];
120+
switch (packageVersion) {
121+
case "1.0.0":
122+
result = {
123+
version: options.projectRuntimeGradleVersion,
124+
android: options.projectRuntimeGradleAndroidVersion
125+
};
126+
break;
127+
case "4.1.2":
128+
result = {
129+
version: options.latestRuntimeGradleVersion,
130+
android: options.latestRuntimeGradleAndroidVersion
131+
};
132+
break;
133+
}
134+
}
135+
136+
if (config && config["dist-tags"]) {
137+
result = {
138+
latest: "4.1.2"
139+
};
140+
}
141+
114142
return result;
115143
}
116144
};

0 commit comments

Comments
 (0)