Skip to content

Commit

Permalink
feat(gradle-version): source releases from registryUrls (#4684)
Browse files Browse the repository at this point in the history
Fixes #4676
  • Loading branch information
isker authored and rarkins committed Oct 18, 2019
1 parent 2a4de19 commit 3d13426
Show file tree
Hide file tree
Showing 3 changed files with 734 additions and 33 deletions.
77 changes: 44 additions & 33 deletions lib/datasource/gradle-version/index.ts
@@ -1,7 +1,8 @@
import { coerce } from 'semver';
import is from '@sindresorhus/is';
import { logger } from '../../logger';
import got from '../../util/got';
import { PkgReleaseConfig, ReleaseResult } from '../common';
import { PkgReleaseConfig, ReleaseResult, Release } from '../common';

const GradleVersionsServiceUrl = 'https://services.gradle.org/versions/all';

Expand All @@ -16,36 +17,46 @@ interface GradleRelease {
}[];
}

export async function getPkgReleases(
_config: PkgReleaseConfig
): Promise<ReleaseResult> {
try {
const response: GradleRelease = await got(GradleVersionsServiceUrl, {
json: true,
});
const releases = response.body
.filter(release => !release.snapshot && !release.nightly)
.filter(
release =>
// some milestone have wrong metadata and need to be filtered by version name content
release.rcFor === '' && !release.version.includes('milestone')
)
.map(release => ({
version: coerce(release.version).toString(),
downloadUrl: release.downloadUrl,
checksumUrl: release.checksumUrl,
}));
const gradle: ReleaseResult = {
releases,
homepage: 'https://gradle.org',
sourceUrl: 'https://github.com/gradle/gradle',
};
return gradle;
} catch (err) {
logger.debug({ err });
if (!(err.statusCode === 404 || err.code === 'ENOTFOUND')) {
logger.warn({ err }, 'Gradle release lookup failure: Unknown error');
}
throw new Error('registry-failure');
}
export async function getPkgReleases({
registryUrls,
}: PkgReleaseConfig): Promise<ReleaseResult> {
const versionsUrls = is.nonEmptyArray(registryUrls)
? registryUrls
: [GradleVersionsServiceUrl];

const allReleases: Release[][] = await Promise.all(
versionsUrls.map(async url => {
try {
const response: GradleRelease = await got(url, {
json: true,
});
const releases = response.body
.filter(release => !release.snapshot && !release.nightly)
.filter(
release =>
// some milestone have wrong metadata and need to be filtered by version name content
release.rcFor === '' && !release.version.includes('milestone')
)
.map(release => ({
version: coerce(release.version).toString(),
downloadUrl: release.downloadUrl,
checksumUrl: release.checksumUrl,
}));
return releases;
} catch (err) {
logger.debug({ err });
if (!(err.statusCode === 404 || err.code === 'ENOTFOUND')) {
logger.warn({ err }, 'Gradle release lookup failure: Unknown error');
}
throw new Error('registry-failure');
}
})
);

const gradle: ReleaseResult = {
releases: Array.prototype.concat.apply([], allReleases),
homepage: 'https://gradle.org',
sourceUrl: 'https://github.com/gradle/gradle',
};
return gradle;
}

0 comments on commit 3d13426

Please sign in to comment.