mirror of
https://github.com/graalvm/setup-graalvm.git
synced 2025-01-19 03:43:02 +08:00
Relax requirement of mandrel versions starting with mandrel-
Since we can now define the distribution there is no longer the need to include the mandrel- prefix in Mandrel versions.
This commit is contained in:
parent
22b65d7de0
commit
cde0daed27
@ -9,7 +9,7 @@ process.env['RUNNER_TEMP'] = path.join(__dirname, 'TEMP')
|
|||||||
test('request invalid version/javaVersion combination', async () => {
|
test('request invalid version/javaVersion combination', async () => {
|
||||||
for (var combination of [
|
for (var combination of [
|
||||||
['mandrel-23.1.1.0-Final', '17'],
|
['mandrel-23.1.1.0-Final', '17'],
|
||||||
['mandrel-23.0.2.1-Final', '21'],
|
['mandrel-23.0.2.1-Final', '21']
|
||||||
]) {
|
]) {
|
||||||
let error = new Error('unexpected')
|
let error = new Error('unexpected')
|
||||||
try {
|
try {
|
||||||
@ -29,7 +29,7 @@ test('request invalid version/javaVersion combination', async () => {
|
|||||||
test('request invalid version', async () => {
|
test('request invalid version', async () => {
|
||||||
for (var combination of [
|
for (var combination of [
|
||||||
['mandrel-23.1.1.0', '21'],
|
['mandrel-23.1.1.0', '21'],
|
||||||
['mandrel-23.0.2.1', '17'],
|
['mandrel-23.0.2.1', '17']
|
||||||
]) {
|
]) {
|
||||||
let error = new Error('unexpected')
|
let error = new Error('unexpected')
|
||||||
try {
|
try {
|
||||||
@ -54,15 +54,19 @@ test('find latest', async () => {
|
|||||||
expect(tag_name).toContain(mandrel.MANDREL_TAG_PREFIX)
|
expect(tag_name).toContain(mandrel.MANDREL_TAG_PREFIX)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('get latest Mandrel for specific JDK', async () => {
|
test('get known latest Mandrel for specific JDK', async () => {
|
||||||
// Test deprecated versions that won't get updates anymore
|
// Test deprecated versions that won't get updates anymore
|
||||||
for (var combination of [
|
for (var combination of [
|
||||||
['11', '22.2.0.0-Final'],
|
['11', '22.2.0.0-Final'],
|
||||||
['20', '23.0.1.2-Final']]) {
|
['20', '23.0.1.2-Final']
|
||||||
|
]) {
|
||||||
const latest = await mandrel.getLatestMandrelReleaseUrl(combination[0])
|
const latest = await mandrel.getLatestMandrelReleaseUrl(combination[0])
|
||||||
expect(latest).toContain(`mandrel-java${combination[0]}`)
|
expect(latest).toContain(`mandrel-java${combination[0]}`)
|
||||||
expect(latest).toContain(combination[1])
|
expect(latest).toContain(combination[1])
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
test('get latest Mandrel for specific JDK', async () => {
|
||||||
// Test supported versions
|
// Test supported versions
|
||||||
for (var javaVersion of ['17', '21']) {
|
for (var javaVersion of ['17', '21']) {
|
||||||
const latest = await mandrel.getLatestMandrelReleaseUrl(javaVersion)
|
const latest = await mandrel.getLatestMandrelReleaseUrl(javaVersion)
|
||||||
|
55
dist/cleanup/index.js
generated
vendored
55
dist/cleanup/index.js
generated
vendored
@ -58304,7 +58304,7 @@ class Range {
|
|||||||
this.set = this.raw
|
this.set = this.raw
|
||||||
.split('||')
|
.split('||')
|
||||||
// map the range to a 2d array of comparators
|
// map the range to a 2d array of comparators
|
||||||
.map(r => this.parseRange(r.trim()))
|
.map(r => this.parseRange(r))
|
||||||
// throw out any comparator lists that are empty
|
// throw out any comparator lists that are empty
|
||||||
// this generally means that it was not a valid range, which is allowed
|
// this generally means that it was not a valid range, which is allowed
|
||||||
// in loose mode, but will still throw if the WHOLE range is invalid.
|
// in loose mode, but will still throw if the WHOLE range is invalid.
|
||||||
@ -58364,18 +58364,15 @@ class Range {
|
|||||||
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
|
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
|
||||||
range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
|
range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
|
||||||
debug('hyphen replace', range)
|
debug('hyphen replace', range)
|
||||||
|
|
||||||
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
|
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
|
||||||
range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
|
range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
|
||||||
debug('comparator trim', range)
|
debug('comparator trim', range)
|
||||||
|
|
||||||
// `~ 1.2.3` => `~1.2.3`
|
// `~ 1.2.3` => `~1.2.3`
|
||||||
range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
|
range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
|
||||||
debug('tilde trim', range)
|
|
||||||
|
|
||||||
// `^ 1.2.3` => `^1.2.3`
|
// `^ 1.2.3` => `^1.2.3`
|
||||||
range = range.replace(re[t.CARETTRIM], caretTrimReplace)
|
range = range.replace(re[t.CARETTRIM], caretTrimReplace)
|
||||||
debug('caret trim', range)
|
|
||||||
|
|
||||||
// At this point, the range is completely trimmed and
|
// At this point, the range is completely trimmed and
|
||||||
// ready to be split into comparators.
|
// ready to be split into comparators.
|
||||||
@ -59677,10 +59674,6 @@ const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
|
|||||||
// Max safe segment length for coercion.
|
// Max safe segment length for coercion.
|
||||||
const MAX_SAFE_COMPONENT_LENGTH = 16
|
const MAX_SAFE_COMPONENT_LENGTH = 16
|
||||||
|
|
||||||
// Max safe length for a build identifier. The max length minus 6 characters for
|
|
||||||
// the shortest version with a build 0.0.0+BUILD.
|
|
||||||
const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
|
|
||||||
|
|
||||||
const RELEASE_TYPES = [
|
const RELEASE_TYPES = [
|
||||||
'major',
|
'major',
|
||||||
'premajor',
|
'premajor',
|
||||||
@ -59694,7 +59687,6 @@ const RELEASE_TYPES = [
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
MAX_LENGTH,
|
MAX_LENGTH,
|
||||||
MAX_SAFE_COMPONENT_LENGTH,
|
MAX_SAFE_COMPONENT_LENGTH,
|
||||||
MAX_SAFE_BUILD_LENGTH,
|
|
||||||
MAX_SAFE_INTEGER,
|
MAX_SAFE_INTEGER,
|
||||||
RELEASE_TYPES,
|
RELEASE_TYPES,
|
||||||
SEMVER_SPEC_VERSION,
|
SEMVER_SPEC_VERSION,
|
||||||
@ -59776,11 +59768,7 @@ module.exports = parseOptions
|
|||||||
/***/ 9523:
|
/***/ 9523:
|
||||||
/***/ ((module, exports, __nccwpck_require__) => {
|
/***/ ((module, exports, __nccwpck_require__) => {
|
||||||
|
|
||||||
const {
|
const { MAX_SAFE_COMPONENT_LENGTH } = __nccwpck_require__(2293)
|
||||||
MAX_SAFE_COMPONENT_LENGTH,
|
|
||||||
MAX_SAFE_BUILD_LENGTH,
|
|
||||||
MAX_LENGTH,
|
|
||||||
} = __nccwpck_require__(2293)
|
|
||||||
const debug = __nccwpck_require__(427)
|
const debug = __nccwpck_require__(427)
|
||||||
exports = module.exports = {}
|
exports = module.exports = {}
|
||||||
|
|
||||||
@ -59791,31 +59779,16 @@ const src = exports.src = []
|
|||||||
const t = exports.t = {}
|
const t = exports.t = {}
|
||||||
let R = 0
|
let R = 0
|
||||||
|
|
||||||
const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
|
|
||||||
|
|
||||||
// Replace some greedy regex tokens to prevent regex dos issues. These regex are
|
|
||||||
// used internally via the safeRe object since all inputs in this library get
|
|
||||||
// normalized first to trim and collapse all extra whitespace. The original
|
|
||||||
// regexes are exported for userland consumption and lower level usage. A
|
|
||||||
// future breaking change could export the safer regex only with a note that
|
|
||||||
// all input should have extra whitespace removed.
|
|
||||||
const safeRegexReplacements = [
|
|
||||||
['\\s', 1],
|
|
||||||
['\\d', MAX_LENGTH],
|
|
||||||
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
|
|
||||||
]
|
|
||||||
|
|
||||||
const makeSafeRegex = (value) => {
|
|
||||||
for (const [token, max] of safeRegexReplacements) {
|
|
||||||
value = value
|
|
||||||
.split(`${token}*`).join(`${token}{0,${max}}`)
|
|
||||||
.split(`${token}+`).join(`${token}{1,${max}}`)
|
|
||||||
}
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
|
|
||||||
const createToken = (name, value, isGlobal) => {
|
const createToken = (name, value, isGlobal) => {
|
||||||
const safe = makeSafeRegex(value)
|
// Replace all greedy whitespace to prevent regex dos issues. These regex are
|
||||||
|
// used internally via the safeRe object since all inputs in this library get
|
||||||
|
// normalized first to trim and collapse all extra whitespace. The original
|
||||||
|
// regexes are exported for userland consumption and lower level usage. A
|
||||||
|
// future breaking change could export the safer regex only with a note that
|
||||||
|
// all input should have extra whitespace removed.
|
||||||
|
const safe = value
|
||||||
|
.split('\\s*').join('\\s{0,1}')
|
||||||
|
.split('\\s+').join('\\s')
|
||||||
const index = R++
|
const index = R++
|
||||||
debug(name, index, value)
|
debug(name, index, value)
|
||||||
t[name] = index
|
t[name] = index
|
||||||
@ -59831,13 +59804,13 @@ const createToken = (name, value, isGlobal) => {
|
|||||||
// A single `0`, or a non-zero digit followed by zero or more digits.
|
// A single `0`, or a non-zero digit followed by zero or more digits.
|
||||||
|
|
||||||
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
|
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
|
||||||
createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
|
createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')
|
||||||
|
|
||||||
// ## Non-numeric Identifier
|
// ## Non-numeric Identifier
|
||||||
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
||||||
// more letters, digits, or hyphens.
|
// more letters, digits, or hyphens.
|
||||||
|
|
||||||
createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
|
createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*')
|
||||||
|
|
||||||
// ## Main Version
|
// ## Main Version
|
||||||
// Three dot-separated numeric identifiers.
|
// Three dot-separated numeric identifiers.
|
||||||
@ -59872,7 +59845,7 @@ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
|
|||||||
// ## Build Metadata Identifier
|
// ## Build Metadata Identifier
|
||||||
// Any combination of digits, letters, or hyphens.
|
// Any combination of digits, letters, or hyphens.
|
||||||
|
|
||||||
createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
|
createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')
|
||||||
|
|
||||||
// ## Build Metadata
|
// ## Build Metadata
|
||||||
// Plus sign, followed by one or more period-separated build metadata
|
// Plus sign, followed by one or more period-separated build metadata
|
||||||
|
162
dist/main/index.js
generated
vendored
162
dist/main/index.js
generated
vendored
@ -58304,7 +58304,7 @@ class Range {
|
|||||||
this.set = this.raw
|
this.set = this.raw
|
||||||
.split('||')
|
.split('||')
|
||||||
// map the range to a 2d array of comparators
|
// map the range to a 2d array of comparators
|
||||||
.map(r => this.parseRange(r.trim()))
|
.map(r => this.parseRange(r))
|
||||||
// throw out any comparator lists that are empty
|
// throw out any comparator lists that are empty
|
||||||
// this generally means that it was not a valid range, which is allowed
|
// this generally means that it was not a valid range, which is allowed
|
||||||
// in loose mode, but will still throw if the WHOLE range is invalid.
|
// in loose mode, but will still throw if the WHOLE range is invalid.
|
||||||
@ -58364,18 +58364,15 @@ class Range {
|
|||||||
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
|
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
|
||||||
range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
|
range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
|
||||||
debug('hyphen replace', range)
|
debug('hyphen replace', range)
|
||||||
|
|
||||||
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
|
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
|
||||||
range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
|
range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
|
||||||
debug('comparator trim', range)
|
debug('comparator trim', range)
|
||||||
|
|
||||||
// `~ 1.2.3` => `~1.2.3`
|
// `~ 1.2.3` => `~1.2.3`
|
||||||
range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
|
range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
|
||||||
debug('tilde trim', range)
|
|
||||||
|
|
||||||
// `^ 1.2.3` => `^1.2.3`
|
// `^ 1.2.3` => `^1.2.3`
|
||||||
range = range.replace(re[t.CARETTRIM], caretTrimReplace)
|
range = range.replace(re[t.CARETTRIM], caretTrimReplace)
|
||||||
debug('caret trim', range)
|
|
||||||
|
|
||||||
// At this point, the range is completely trimmed and
|
// At this point, the range is completely trimmed and
|
||||||
// ready to be split into comparators.
|
// ready to be split into comparators.
|
||||||
@ -59677,10 +59674,6 @@ const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
|
|||||||
// Max safe segment length for coercion.
|
// Max safe segment length for coercion.
|
||||||
const MAX_SAFE_COMPONENT_LENGTH = 16
|
const MAX_SAFE_COMPONENT_LENGTH = 16
|
||||||
|
|
||||||
// Max safe length for a build identifier. The max length minus 6 characters for
|
|
||||||
// the shortest version with a build 0.0.0+BUILD.
|
|
||||||
const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
|
|
||||||
|
|
||||||
const RELEASE_TYPES = [
|
const RELEASE_TYPES = [
|
||||||
'major',
|
'major',
|
||||||
'premajor',
|
'premajor',
|
||||||
@ -59694,7 +59687,6 @@ const RELEASE_TYPES = [
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
MAX_LENGTH,
|
MAX_LENGTH,
|
||||||
MAX_SAFE_COMPONENT_LENGTH,
|
MAX_SAFE_COMPONENT_LENGTH,
|
||||||
MAX_SAFE_BUILD_LENGTH,
|
|
||||||
MAX_SAFE_INTEGER,
|
MAX_SAFE_INTEGER,
|
||||||
RELEASE_TYPES,
|
RELEASE_TYPES,
|
||||||
SEMVER_SPEC_VERSION,
|
SEMVER_SPEC_VERSION,
|
||||||
@ -59776,11 +59768,7 @@ module.exports = parseOptions
|
|||||||
/***/ 9523:
|
/***/ 9523:
|
||||||
/***/ ((module, exports, __nccwpck_require__) => {
|
/***/ ((module, exports, __nccwpck_require__) => {
|
||||||
|
|
||||||
const {
|
const { MAX_SAFE_COMPONENT_LENGTH } = __nccwpck_require__(2293)
|
||||||
MAX_SAFE_COMPONENT_LENGTH,
|
|
||||||
MAX_SAFE_BUILD_LENGTH,
|
|
||||||
MAX_LENGTH,
|
|
||||||
} = __nccwpck_require__(2293)
|
|
||||||
const debug = __nccwpck_require__(427)
|
const debug = __nccwpck_require__(427)
|
||||||
exports = module.exports = {}
|
exports = module.exports = {}
|
||||||
|
|
||||||
@ -59791,31 +59779,16 @@ const src = exports.src = []
|
|||||||
const t = exports.t = {}
|
const t = exports.t = {}
|
||||||
let R = 0
|
let R = 0
|
||||||
|
|
||||||
const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
|
|
||||||
|
|
||||||
// Replace some greedy regex tokens to prevent regex dos issues. These regex are
|
|
||||||
// used internally via the safeRe object since all inputs in this library get
|
|
||||||
// normalized first to trim and collapse all extra whitespace. The original
|
|
||||||
// regexes are exported for userland consumption and lower level usage. A
|
|
||||||
// future breaking change could export the safer regex only with a note that
|
|
||||||
// all input should have extra whitespace removed.
|
|
||||||
const safeRegexReplacements = [
|
|
||||||
['\\s', 1],
|
|
||||||
['\\d', MAX_LENGTH],
|
|
||||||
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
|
|
||||||
]
|
|
||||||
|
|
||||||
const makeSafeRegex = (value) => {
|
|
||||||
for (const [token, max] of safeRegexReplacements) {
|
|
||||||
value = value
|
|
||||||
.split(`${token}*`).join(`${token}{0,${max}}`)
|
|
||||||
.split(`${token}+`).join(`${token}{1,${max}}`)
|
|
||||||
}
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
|
|
||||||
const createToken = (name, value, isGlobal) => {
|
const createToken = (name, value, isGlobal) => {
|
||||||
const safe = makeSafeRegex(value)
|
// Replace all greedy whitespace to prevent regex dos issues. These regex are
|
||||||
|
// used internally via the safeRe object since all inputs in this library get
|
||||||
|
// normalized first to trim and collapse all extra whitespace. The original
|
||||||
|
// regexes are exported for userland consumption and lower level usage. A
|
||||||
|
// future breaking change could export the safer regex only with a note that
|
||||||
|
// all input should have extra whitespace removed.
|
||||||
|
const safe = value
|
||||||
|
.split('\\s*').join('\\s{0,1}')
|
||||||
|
.split('\\s+').join('\\s')
|
||||||
const index = R++
|
const index = R++
|
||||||
debug(name, index, value)
|
debug(name, index, value)
|
||||||
t[name] = index
|
t[name] = index
|
||||||
@ -59831,13 +59804,13 @@ const createToken = (name, value, isGlobal) => {
|
|||||||
// A single `0`, or a non-zero digit followed by zero or more digits.
|
// A single `0`, or a non-zero digit followed by zero or more digits.
|
||||||
|
|
||||||
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
|
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
|
||||||
createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
|
createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')
|
||||||
|
|
||||||
// ## Non-numeric Identifier
|
// ## Non-numeric Identifier
|
||||||
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
||||||
// more letters, digits, or hyphens.
|
// more letters, digits, or hyphens.
|
||||||
|
|
||||||
createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
|
createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*')
|
||||||
|
|
||||||
// ## Main Version
|
// ## Main Version
|
||||||
// Three dot-separated numeric identifiers.
|
// Three dot-separated numeric identifiers.
|
||||||
@ -59872,7 +59845,7 @@ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
|
|||||||
// ## Build Metadata Identifier
|
// ## Build Metadata Identifier
|
||||||
// Any combination of digits, letters, or hyphens.
|
// Any combination of digits, letters, or hyphens.
|
||||||
|
|
||||||
createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
|
createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')
|
||||||
|
|
||||||
// ## Build Metadata
|
// ## Build Metadata
|
||||||
// Plus sign, followed by one or more period-separated build metadata
|
// Plus sign, followed by one or more period-separated build metadata
|
||||||
@ -71418,12 +71391,7 @@ function run() {
|
|||||||
graalVMHome = yield graalvm.setUpGraalVMJDKCE(javaVersion);
|
graalVMHome = yield graalvm.setUpGraalVMJDKCE(javaVersion);
|
||||||
break;
|
break;
|
||||||
case c.DISTRIBUTION_MANDREL:
|
case c.DISTRIBUTION_MANDREL:
|
||||||
if (graalVMVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
|
||||||
graalVMHome = yield (0, mandrel_1.setUpMandrel)(graalVMVersion, javaVersion);
|
graalVMHome = yield (0, mandrel_1.setUpMandrel)(graalVMVersion, javaVersion);
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new Error(`Mandrel requires the 'version' option (see https://github.com/graalvm/setup-graalvm/tree/main#options).`);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case '':
|
case '':
|
||||||
if (javaVersion === c.VERSION_DEV) {
|
if (javaVersion === c.VERSION_DEV) {
|
||||||
@ -71541,23 +71509,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.setUpMandrel = void 0;
|
exports.stripMandrelNamespace = exports.getLatestMandrelReleaseUrl = exports.setUpMandrel = exports.MANDREL_TAG_PREFIX = exports.MANDREL_REPO = void 0;
|
||||||
const c = __importStar(__nccwpck_require__(9042));
|
const c = __importStar(__nccwpck_require__(9042));
|
||||||
|
const httpClient = __importStar(__nccwpck_require__(9925));
|
||||||
const utils_1 = __nccwpck_require__(1314);
|
const utils_1 = __nccwpck_require__(1314);
|
||||||
const tool_cache_1 = __nccwpck_require__(7784);
|
const tool_cache_1 = __nccwpck_require__(7784);
|
||||||
const MANDREL_REPO = 'mandrel';
|
const path_1 = __nccwpck_require__(1017);
|
||||||
const MANDREL_TAG_PREFIX = c.MANDREL_NAMESPACE;
|
exports.MANDREL_REPO = 'mandrel';
|
||||||
|
exports.MANDREL_TAG_PREFIX = c.MANDREL_NAMESPACE;
|
||||||
const MANDREL_DL_BASE = 'https://github.com/graalvm/mandrel/releases/download';
|
const MANDREL_DL_BASE = 'https://github.com/graalvm/mandrel/releases/download';
|
||||||
function setUpMandrel(graalvmVersion, javaVersion) {
|
const DISCO_API_BASE = 'https://api.foojay.io/disco/v3.0/packages/jdks';
|
||||||
|
function setUpMandrel(mandrelVersion, javaVersion) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const mandrelVersion = graalvmVersion.substring(c.MANDREL_NAMESPACE.length, graalvmVersion.length);
|
const version = stripMandrelNamespace(mandrelVersion);
|
||||||
let mandrelHome;
|
let mandrelHome;
|
||||||
switch (mandrelVersion) {
|
switch (version) {
|
||||||
case 'latest':
|
case 'latest':
|
||||||
mandrelHome = yield setUpMandrelLatest(javaVersion);
|
mandrelHome = yield setUpMandrelLatest(javaVersion);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mandrelHome = yield setUpMandrelRelease(mandrelVersion, javaVersion);
|
mandrelHome = yield setUpMandrelRelease(version, javaVersion);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return mandrelHome;
|
return mandrelHome;
|
||||||
@ -71566,21 +71537,79 @@ function setUpMandrel(graalvmVersion, javaVersion) {
|
|||||||
exports.setUpMandrel = setUpMandrel;
|
exports.setUpMandrel = setUpMandrel;
|
||||||
function setUpMandrelLatest(javaVersion) {
|
function setUpMandrelLatest(javaVersion) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const latestRelease = yield (0, utils_1.getLatestRelease)(MANDREL_REPO);
|
const latest_release_url = yield getLatestMandrelReleaseUrl(javaVersion);
|
||||||
const tag_name = latestRelease.tag_name;
|
const version_tag = getTagFromURI(latest_release_url);
|
||||||
if (tag_name.startsWith(MANDREL_TAG_PREFIX)) {
|
const version = stripMandrelNamespace(version_tag);
|
||||||
const latestVersion = tag_name.substring(MANDREL_TAG_PREFIX.length, tag_name.length);
|
const toolName = determineToolName(javaVersion);
|
||||||
return setUpMandrelRelease(latestVersion, javaVersion);
|
return (0, utils_1.downloadExtractAndCacheJDK)(() => __awaiter(this, void 0, void 0, function* () { return (0, tool_cache_1.downloadTool)(latest_release_url); }), toolName, version);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// Download URIs are of the form https://github.com/graalvm/mandrel/releases/download/<tag>/<archive-name>
|
||||||
|
function getTagFromURI(uri) {
|
||||||
|
const parts = uri.split('/');
|
||||||
|
try {
|
||||||
|
return parts[parts.length - 2];
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
throw new Error(`Failed to extract tag from URI ${uri}: ${error}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getLatestMandrelReleaseUrl(javaVersion) {
|
||||||
|
var _a;
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const url = `${DISCO_API_BASE}?jdk_version=${javaVersion}&distribution=${c.DISTRIBUTION_MANDREL}&architecture=${c.JDK_ARCH}&operating_system=${c.JDK_PLATFORM}&latest=per_distro`;
|
||||||
|
const _http = new httpClient.HttpClient('http-client-tests');
|
||||||
|
const response = yield _http.getJson(url);
|
||||||
|
if (response.statusCode !== 200) {
|
||||||
|
throw new Error(`Failed to fetch latest Mandrel release for Java ${javaVersion} from DISCO API: ${response.result}`);
|
||||||
|
}
|
||||||
|
const result = (_a = response.result) === null || _a === void 0 ? void 0 : _a.result[0];
|
||||||
|
try {
|
||||||
|
const pkg_info_uri = result.links.pkg_info_uri;
|
||||||
|
return yield getLatestMandrelReleaseUrlHelper(_http, javaVersion, pkg_info_uri);
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
throw new Error(`Failed to get latest Mandrel release for Java ${javaVersion} from DISCO API: ${error}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.getLatestMandrelReleaseUrl = getLatestMandrelReleaseUrl;
|
||||||
|
function getLatestMandrelReleaseUrlHelper(_http, java_version, pkg_info_uri) {
|
||||||
|
var _a;
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const response = yield _http.getJson(pkg_info_uri);
|
||||||
|
if (response.statusCode !== 200) {
|
||||||
|
throw new Error(`Failed to fetch package info of latest Mandrel release for Java ${java_version} from DISCO API: ${response.result}`);
|
||||||
|
}
|
||||||
|
const result = (_a = response.result) === null || _a === void 0 ? void 0 : _a.result[0];
|
||||||
|
try {
|
||||||
|
return result.direct_download_uri;
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
throw new Error(`Failed to get download URI of latest Mandrel release for Java ${java_version} from DISCO API: ${error}`);
|
||||||
}
|
}
|
||||||
throw new Error(`Could not find latest Mandrel release: ${tag_name}`);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function setUpMandrelRelease(version, javaVersion) {
|
function setUpMandrelRelease(version, javaVersion) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const identifier = determineMandrelIdentifier(version, javaVersion);
|
|
||||||
const downloadUrl = `${MANDREL_DL_BASE}/${MANDREL_TAG_PREFIX}${version}/${identifier}${c.GRAALVM_FILE_EXTENSION}`;
|
|
||||||
const toolName = determineToolName(javaVersion);
|
const toolName = determineToolName(javaVersion);
|
||||||
return (0, utils_1.downloadExtractAndCacheJDK)(() => __awaiter(this, void 0, void 0, function* () { return (0, tool_cache_1.downloadTool)(downloadUrl); }), toolName, version);
|
return (0, utils_1.downloadExtractAndCacheJDK)(() => __awaiter(this, void 0, void 0, function* () { return downloadMandrelJDK(version, javaVersion); }), toolName, version);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function downloadMandrelJDK(version, javaVersion) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const identifier = determineMandrelIdentifier(version, javaVersion);
|
||||||
|
const downloadUrl = `${MANDREL_DL_BASE}/${exports.MANDREL_TAG_PREFIX}${version}/${identifier}${c.GRAALVM_FILE_EXTENSION}`;
|
||||||
|
try {
|
||||||
|
return yield (0, tool_cache_1.downloadTool)(downloadUrl);
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
if (error instanceof Error && error.message.includes('404')) {
|
||||||
|
// Not Found
|
||||||
|
throw new Error(`Failed to download ${(0, path_1.basename)(downloadUrl)}. Are you sure version: '${version}' and java-version: '${javaVersion}' are correct?`);
|
||||||
|
}
|
||||||
|
throw new Error(`Failed to download ${(0, path_1.basename)(downloadUrl)} (error: ${error}).`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function determineMandrelIdentifier(version, javaVersion) {
|
function determineMandrelIdentifier(version, javaVersion) {
|
||||||
@ -71589,6 +71618,15 @@ function determineMandrelIdentifier(version, javaVersion) {
|
|||||||
function determineToolName(javaVersion) {
|
function determineToolName(javaVersion) {
|
||||||
return `mandrel-java${javaVersion}-${c.GRAALVM_PLATFORM}`;
|
return `mandrel-java${javaVersion}-${c.GRAALVM_PLATFORM}`;
|
||||||
}
|
}
|
||||||
|
function stripMandrelNamespace(graalVMVersion) {
|
||||||
|
if (graalVMVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
||||||
|
return graalVMVersion.substring(c.MANDREL_NAMESPACE.length, graalVMVersion.length);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return graalVMVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.stripMandrelNamespace = stripMandrelNamespace;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
@ -58,13 +58,7 @@ async function run(): Promise<void> {
|
|||||||
graalVMHome = await graalvm.setUpGraalVMJDKCE(javaVersion)
|
graalVMHome = await graalvm.setUpGraalVMJDKCE(javaVersion)
|
||||||
break
|
break
|
||||||
case c.DISTRIBUTION_MANDREL:
|
case c.DISTRIBUTION_MANDREL:
|
||||||
if (graalVMVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
|
||||||
graalVMHome = await setUpMandrel(graalVMVersion, javaVersion)
|
graalVMHome = await setUpMandrel(graalVMVersion, javaVersion)
|
||||||
} else {
|
|
||||||
throw new Error(
|
|
||||||
`Mandrel requires the 'version' option (see https://github.com/graalvm/setup-graalvm/tree/main#options).`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
break
|
break
|
||||||
case '':
|
case '':
|
||||||
if (javaVersion === c.VERSION_DEV) {
|
if (javaVersion === c.VERSION_DEV) {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import * as c from './constants'
|
import * as c from './constants'
|
||||||
|
import * as httpClient from '@actions/http-client'
|
||||||
import {downloadExtractAndCacheJDK, getLatestRelease} from './utils'
|
import {downloadExtractAndCacheJDK, getLatestRelease} from './utils'
|
||||||
import {downloadTool} from '@actions/tool-cache'
|
import {downloadTool} from '@actions/tool-cache'
|
||||||
import {basename} from 'path'
|
import {basename} from 'path'
|
||||||
@ -8,22 +9,23 @@ export const MANDREL_TAG_PREFIX = c.MANDREL_NAMESPACE
|
|||||||
const MANDREL_DL_BASE = 'https://github.com/graalvm/mandrel/releases/download'
|
const MANDREL_DL_BASE = 'https://github.com/graalvm/mandrel/releases/download'
|
||||||
const DISCO_API_BASE = 'https://api.foojay.io/disco/v3.0/packages/jdks'
|
const DISCO_API_BASE = 'https://api.foojay.io/disco/v3.0/packages/jdks'
|
||||||
|
|
||||||
|
interface JdkData {
|
||||||
|
message: string
|
||||||
|
result: any
|
||||||
|
}
|
||||||
|
|
||||||
export async function setUpMandrel(
|
export async function setUpMandrel(
|
||||||
graalvmVersion: string,
|
mandrelVersion: string,
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const mandrelVersion = graalvmVersion.substring(
|
const version = stripMandrelNamespace(mandrelVersion)
|
||||||
c.MANDREL_NAMESPACE.length,
|
|
||||||
graalvmVersion.length
|
|
||||||
)
|
|
||||||
|
|
||||||
let mandrelHome
|
let mandrelHome
|
||||||
switch (mandrelVersion) {
|
switch (version) {
|
||||||
case 'latest':
|
case 'latest':
|
||||||
mandrelHome = await setUpMandrelLatest(javaVersion)
|
mandrelHome = await setUpMandrelLatest(javaVersion)
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
mandrelHome = await setUpMandrelRelease(mandrelVersion, javaVersion)
|
mandrelHome = await setUpMandrelRelease(version, javaVersion)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,9 +34,8 @@ export async function setUpMandrel(
|
|||||||
|
|
||||||
async function setUpMandrelLatest(javaVersion: string): Promise<string> {
|
async function setUpMandrelLatest(javaVersion: string): Promise<string> {
|
||||||
const latest_release_url = await getLatestMandrelReleaseUrl(javaVersion)
|
const latest_release_url = await getLatestMandrelReleaseUrl(javaVersion)
|
||||||
const version_tag = getTagFromURI(latest_release_url);
|
const version_tag = getTagFromURI(latest_release_url)
|
||||||
const version = version_tag.substring(c.MANDREL_NAMESPACE.length, version_tag.length)
|
const version = stripMandrelNamespace(version_tag)
|
||||||
console.log(version);
|
|
||||||
|
|
||||||
const toolName = determineToolName(javaVersion)
|
const toolName = determineToolName(javaVersion)
|
||||||
return downloadExtractAndCacheJDK(
|
return downloadExtractAndCacheJDK(
|
||||||
@ -46,39 +47,58 @@ async function setUpMandrelLatest(javaVersion: string): Promise<string> {
|
|||||||
|
|
||||||
// Download URIs are of the form https://github.com/graalvm/mandrel/releases/download/<tag>/<archive-name>
|
// Download URIs are of the form https://github.com/graalvm/mandrel/releases/download/<tag>/<archive-name>
|
||||||
function getTagFromURI(uri: string): string {
|
function getTagFromURI(uri: string): string {
|
||||||
const parts = uri.split('/');
|
const parts = uri.split('/')
|
||||||
try {
|
try {
|
||||||
return parts[parts.length - 2];
|
return parts[parts.length - 2]
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error(`Failed to extract tag from URI ${uri}: ${error}`)
|
throw new Error(`Failed to extract tag from URI ${uri}: ${error}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getLatestMandrelReleaseUrl(javaVersion: string): Promise<string> {
|
export async function getLatestMandrelReleaseUrl(
|
||||||
|
javaVersion: string
|
||||||
|
): Promise<string> {
|
||||||
const url = `${DISCO_API_BASE}?jdk_version=${javaVersion}&distribution=${c.DISTRIBUTION_MANDREL}&architecture=${c.JDK_ARCH}&operating_system=${c.JDK_PLATFORM}&latest=per_distro`
|
const url = `${DISCO_API_BASE}?jdk_version=${javaVersion}&distribution=${c.DISTRIBUTION_MANDREL}&architecture=${c.JDK_ARCH}&operating_system=${c.JDK_PLATFORM}&latest=per_distro`
|
||||||
const response = await fetch(url)
|
const _http = new httpClient.HttpClient('http-client-tests')
|
||||||
if (!response.ok) {
|
const response = await _http.getJson<JdkData>(url)
|
||||||
throw new Error(`Failed to fetch latest Mandrel release for Java ${javaVersion} from DISCO API: ${response.statusText}`)
|
if (response.statusCode !== 200) {
|
||||||
|
throw new Error(
|
||||||
|
`Failed to fetch latest Mandrel release for Java ${javaVersion} from DISCO API: ${response.result}`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
const data = await response.json()
|
const result = response.result?.result[0]
|
||||||
try {
|
try {
|
||||||
const pkg_info_uri = data.result[0].links.pkg_info_uri
|
const pkg_info_uri = result.links.pkg_info_uri
|
||||||
return getLatestMandrelReleaseUrlHelper(javaVersion, pkg_info_uri)
|
return await getLatestMandrelReleaseUrlHelper(
|
||||||
|
_http,
|
||||||
|
javaVersion,
|
||||||
|
pkg_info_uri
|
||||||
|
)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error(`Failed to get latest Mandrel release for Java ${javaVersion} from DISCO API: ${error}`)
|
throw new Error(
|
||||||
|
`Failed to get latest Mandrel release for Java ${javaVersion} from DISCO API: ${error}`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getLatestMandrelReleaseUrlHelper(java_version: string, pkg_info_uri: string): Promise<string> {
|
async function getLatestMandrelReleaseUrlHelper(
|
||||||
const response = await fetch(pkg_info_uri)
|
_http: httpClient.HttpClient,
|
||||||
if (!response.ok) {
|
java_version: string,
|
||||||
throw new Error(`Failed to fetch package info of latest Mandrel release for Java ${java_version} from DISCO API: ${response.statusText}`)
|
pkg_info_uri: string
|
||||||
|
): Promise<string> {
|
||||||
|
const response = await _http.getJson<JdkData>(pkg_info_uri)
|
||||||
|
if (response.statusCode !== 200) {
|
||||||
|
throw new Error(
|
||||||
|
`Failed to fetch package info of latest Mandrel release for Java ${java_version} from DISCO API: ${response.result}`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
const data = await response.json()
|
const result = response.result?.result[0]
|
||||||
try {
|
try {
|
||||||
return data.result[0].direct_download_uri
|
return result.direct_download_uri
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error(`Failed to get download URI of latest Mandrel release for Java ${java_version} from DISCO API: ${error}`)
|
throw new Error(
|
||||||
|
`Failed to get download URI of latest Mandrel release for Java ${java_version} from DISCO API: ${error}`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,3 +147,14 @@ function determineMandrelIdentifier(
|
|||||||
function determineToolName(javaVersion: string): string {
|
function determineToolName(javaVersion: string): string {
|
||||||
return `mandrel-java${javaVersion}-${c.GRAALVM_PLATFORM}`
|
return `mandrel-java${javaVersion}-${c.GRAALVM_PLATFORM}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function stripMandrelNamespace(graalVMVersion: string) {
|
||||||
|
if (graalVMVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
||||||
|
return graalVMVersion.substring(
|
||||||
|
c.MANDREL_NAMESPACE.length,
|
||||||
|
graalVMVersion.length
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
return graalVMVersion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user