mirror of
https://github.com/stCarolas/setup-maven.git
synced 2025-02-25 17:15:47 +00:00
Revert to NodeJS v12 and Apply ESLint
into the project
This commit is contained in:
parent
7a818935c0
commit
e069019619
46
.eslintrc.json
Normal file
46
.eslintrc.json
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"env": {
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"plugins": ["@typescript-eslint"],
|
||||
"extends": [
|
||||
"eslint:recommended", // all
|
||||
"plugin:@typescript-eslint/all",
|
||||
"prettier"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["**/*.test.ts"],
|
||||
"env": {
|
||||
"jest/globals": true
|
||||
},
|
||||
"plugins": ["jest"],
|
||||
"extends": ["plugin:jest/all"],
|
||||
"rules": {
|
||||
"jest/prefer-expect-assertions": "off"
|
||||
}
|
||||
}
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 9,
|
||||
"sourceType": "module",
|
||||
"project": "./tsconfig.eslint.json"
|
||||
},
|
||||
"rules": {
|
||||
"@typescript-eslint/no-implicit-any-catch": "off",
|
||||
"@typescript-eslint/no-magic-numbers": [
|
||||
"error",
|
||||
{
|
||||
"ignoreArrayIndexes": true
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/strict-boolean-expressions": [
|
||||
"error",
|
||||
{
|
||||
"allowNullableString": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -4,4 +4,4 @@
|
||||
* text=auto eol=lf
|
||||
|
||||
# Excluded from stats, hidden in diffs
|
||||
dist/*.js -diff -merge linguist-generated
|
||||
dist/** -diff -merge linguist-generated
|
||||
|
@ -18,8 +18,8 @@ jobs:
|
||||
Clone this repository and build the project with command
|
||||
|
||||
```batch
|
||||
docker run --rm -it -v "%PWD%:/usr/src/app" -w /usr/src/app node:16-alpine /bin/sh -c ^
|
||||
"npm i --no-bin-links --no-save && npm run lint && npm test && npm run build"
|
||||
docker run --rm -it -v "%PWD%:/usr/src/app" -w /usr/src/app node:12-alpine /bin/sh -c ^
|
||||
"yarn --no-bin-links && yarn lint && yarn test && yarn build"
|
||||
```
|
||||
|
||||
**Note** that `%PWD%` is the project working directory in `Unix` format, such as: `/c/Users/source/repos/setup-maven`
|
||||
|
@ -1,10 +1,11 @@
|
||||
import * as installer from '../src/installer';
|
||||
|
||||
describe('getAvailableVersions', () => {
|
||||
it('load real available versions', async () => {
|
||||
it('loads real available versions', async () => {
|
||||
const availableVersions = await installer.getAvailableVersions();
|
||||
|
||||
expect(availableVersions).toBeTruthy();
|
||||
expect(availableVersions).toEqual(expect.arrayContaining(['3.2.5', '3.3.3', '3.8.2']));
|
||||
expect(availableVersions).toStrictEqual(
|
||||
expect.arrayContaining(['3.0', '3.2.5', '3.3.3', '3.8.2'])
|
||||
);
|
||||
});
|
||||
});
|
||||
|
17
__tests__/main.test.ts
Normal file
17
__tests__/main.test.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import * as core from '@actions/core';
|
||||
|
||||
import { run } from '../src/main';
|
||||
|
||||
describe('failed to run with invalid inputs', () => {
|
||||
it.each([
|
||||
['maven-version', { 'maven-version': ' foo-3!' }] // eslint-disable-line no-inline-comments
|
||||
])('%s', async (name: string, inputs: Readonly<Record<string, string>>) => {
|
||||
const spyFailed = jest.spyOn(core, 'setFailed');
|
||||
jest.spyOn(core, 'getInput').mockImplementation((key: string) => inputs[key]);
|
||||
|
||||
await run();
|
||||
expect(spyFailed).toHaveBeenCalledWith(
|
||||
expect.stringMatching(new RegExp(`[Ii]nvalid .*'${inputs[name]}'`))
|
||||
);
|
||||
});
|
||||
});
|
16
__tests__/utils.test.ts
Normal file
16
__tests__/utils.test.ts
Normal file
@ -0,0 +1,16 @@
|
||||
import * as path from 'path';
|
||||
|
||||
import { getVersionFromToolcachePath } from '../src/utils';
|
||||
|
||||
describe('getVersionFromToolcachePath', () => {
|
||||
it.each([
|
||||
['', ''],
|
||||
['foo', '.'],
|
||||
[path.join('foo', '1.0', 'x64'), '1.0'],
|
||||
[`bar${path.sep}foo${path.sep}`, 'bar']
|
||||
])('%s -> %s', (toolPath: string, expected: string) => {
|
||||
const actual = getVersionFromToolcachePath(toolPath);
|
||||
|
||||
expect(actual).toBe(expected);
|
||||
});
|
||||
});
|
@ -10,5 +10,5 @@ outputs:
|
||||
version:
|
||||
description: 'Actual version of Apache Maven that has been installed'
|
||||
runs:
|
||||
using: 'node16'
|
||||
using: 'node12'
|
||||
main: 'dist/index.js'
|
||||
|
338
dist/index.js
generated
vendored
338
dist/index.js
generated
vendored
@ -14,7 +14,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const os = __importStar(__nccwpck_require__(37));
|
||||
const os = __importStar(__nccwpck_require__(87));
|
||||
const utils_1 = __nccwpck_require__(278);
|
||||
/**
|
||||
* Commands
|
||||
@ -112,8 +112,8 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const command_1 = __nccwpck_require__(351);
|
||||
const file_command_1 = __nccwpck_require__(717);
|
||||
const utils_1 = __nccwpck_require__(278);
|
||||
const os = __importStar(__nccwpck_require__(37));
|
||||
const path = __importStar(__nccwpck_require__(17));
|
||||
const os = __importStar(__nccwpck_require__(87));
|
||||
const path = __importStar(__nccwpck_require__(622));
|
||||
/**
|
||||
* The code to exit an action
|
||||
*/
|
||||
@ -348,8 +348,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
// We use any as a valid input type
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
const fs = __importStar(__nccwpck_require__(147));
|
||||
const os = __importStar(__nccwpck_require__(37));
|
||||
const fs = __importStar(__nccwpck_require__(747));
|
||||
const os = __importStar(__nccwpck_require__(87));
|
||||
const utils_1 = __nccwpck_require__(278);
|
||||
function issueCommand(command, message) {
|
||||
const filePath = process.env[`GITHUB_${command}`];
|
||||
@ -399,6 +399,25 @@ exports.toCommandValue = toCommandValue;
|
||||
|
||||
"use strict";
|
||||
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
@ -408,14 +427,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
||||
result["default"] = mod;
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.getExecOutput = exports.exec = void 0;
|
||||
const string_decoder_1 = __nccwpck_require__(304);
|
||||
const tr = __importStar(__nccwpck_require__(159));
|
||||
/**
|
||||
* Exec a command.
|
||||
@ -441,6 +455,51 @@ function exec(commandLine, args, options) {
|
||||
});
|
||||
}
|
||||
exports.exec = exec;
|
||||
/**
|
||||
* Exec a command and get the output.
|
||||
* Output will be streamed to the live console.
|
||||
* Returns promise with the exit code and collected stdout and stderr
|
||||
*
|
||||
* @param commandLine command to execute (can include additional args). Must be correctly escaped.
|
||||
* @param args optional arguments for tool. Escaping is handled by the lib.
|
||||
* @param options optional exec options. See ExecOptions
|
||||
* @returns Promise<ExecOutput> exit code, stdout, and stderr
|
||||
*/
|
||||
function getExecOutput(commandLine, args, options) {
|
||||
var _a, _b;
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let stdout = '';
|
||||
let stderr = '';
|
||||
//Using string decoder covers the case where a mult-byte character is split
|
||||
const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');
|
||||
const stderrDecoder = new string_decoder_1.StringDecoder('utf8');
|
||||
const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;
|
||||
const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;
|
||||
const stdErrListener = (data) => {
|
||||
stderr += stderrDecoder.write(data);
|
||||
if (originalStdErrListener) {
|
||||
originalStdErrListener(data);
|
||||
}
|
||||
};
|
||||
const stdOutListener = (data) => {
|
||||
stdout += stdoutDecoder.write(data);
|
||||
if (originalStdoutListener) {
|
||||
originalStdoutListener(data);
|
||||
}
|
||||
};
|
||||
const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });
|
||||
const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));
|
||||
//flush any remaining characters
|
||||
stdout += stdoutDecoder.end();
|
||||
stderr += stderrDecoder.end();
|
||||
return {
|
||||
exitCode,
|
||||
stdout,
|
||||
stderr
|
||||
};
|
||||
});
|
||||
}
|
||||
exports.getExecOutput = getExecOutput;
|
||||
//# sourceMappingURL=exec.js.map
|
||||
|
||||
/***/ }),
|
||||
@ -450,6 +509,25 @@ exports.exec = exec;
|
||||
|
||||
"use strict";
|
||||
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
@ -459,20 +537,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
||||
result["default"] = mod;
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const os = __importStar(__nccwpck_require__(37));
|
||||
const events = __importStar(__nccwpck_require__(361));
|
||||
const child = __importStar(__nccwpck_require__(81));
|
||||
const path = __importStar(__nccwpck_require__(17));
|
||||
exports.argStringToArray = exports.ToolRunner = void 0;
|
||||
const os = __importStar(__nccwpck_require__(87));
|
||||
const events = __importStar(__nccwpck_require__(614));
|
||||
const child = __importStar(__nccwpck_require__(129));
|
||||
const path = __importStar(__nccwpck_require__(622));
|
||||
const io = __importStar(__nccwpck_require__(436));
|
||||
const ioUtil = __importStar(__nccwpck_require__(962));
|
||||
const timers_1 = __nccwpck_require__(213);
|
||||
/* eslint-disable @typescript-eslint/unbound-method */
|
||||
const IS_WINDOWS = process.platform === 'win32';
|
||||
/*
|
||||
@ -542,11 +615,12 @@ class ToolRunner extends events.EventEmitter {
|
||||
s = s.substring(n + os.EOL.length);
|
||||
n = s.indexOf(os.EOL);
|
||||
}
|
||||
strBuffer = s;
|
||||
return s;
|
||||
}
|
||||
catch (err) {
|
||||
// streaming lines to console is best effort. Don't fail a build.
|
||||
this._debug(`error processing line. Failed with error ${err}`);
|
||||
return '';
|
||||
}
|
||||
}
|
||||
_getSpawnFileName() {
|
||||
@ -828,7 +902,7 @@ class ToolRunner extends events.EventEmitter {
|
||||
// if the tool is only a file name, then resolve it from the PATH
|
||||
// otherwise verify it exists (add extension on Windows if necessary)
|
||||
this.toolPath = yield io.which(this.toolPath, true);
|
||||
return new Promise((resolve, reject) => {
|
||||
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
||||
this._debug(`exec tool: ${this.toolPath}`);
|
||||
this._debug('arguments:');
|
||||
for (const arg of this.args) {
|
||||
@ -842,9 +916,12 @@ class ToolRunner extends events.EventEmitter {
|
||||
state.on('debug', (message) => {
|
||||
this._debug(message);
|
||||
});
|
||||
if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {
|
||||
return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));
|
||||
}
|
||||
const fileName = this._getSpawnFileName();
|
||||
const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));
|
||||
const stdbuffer = '';
|
||||
let stdbuffer = '';
|
||||
if (cp.stdout) {
|
||||
cp.stdout.on('data', (data) => {
|
||||
if (this.options.listeners && this.options.listeners.stdout) {
|
||||
@ -853,14 +930,14 @@ class ToolRunner extends events.EventEmitter {
|
||||
if (!optionsNonNull.silent && optionsNonNull.outStream) {
|
||||
optionsNonNull.outStream.write(data);
|
||||
}
|
||||
this._processLineBuffer(data, stdbuffer, (line) => {
|
||||
stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {
|
||||
if (this.options.listeners && this.options.listeners.stdline) {
|
||||
this.options.listeners.stdline(line);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
const errbuffer = '';
|
||||
let errbuffer = '';
|
||||
if (cp.stderr) {
|
||||
cp.stderr.on('data', (data) => {
|
||||
state.processStderr = true;
|
||||
@ -875,7 +952,7 @@ class ToolRunner extends events.EventEmitter {
|
||||
: optionsNonNull.outStream;
|
||||
s.write(data);
|
||||
}
|
||||
this._processLineBuffer(data, errbuffer, (line) => {
|
||||
errbuffer = this._processLineBuffer(data, errbuffer, (line) => {
|
||||
if (this.options.listeners && this.options.listeners.errline) {
|
||||
this.options.listeners.errline(line);
|
||||
}
|
||||
@ -922,7 +999,7 @@ class ToolRunner extends events.EventEmitter {
|
||||
}
|
||||
cp.stdin.end(this.options.input);
|
||||
}
|
||||
});
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -1008,7 +1085,7 @@ class ExecState extends events.EventEmitter {
|
||||
this._setResult();
|
||||
}
|
||||
else if (this.processExited) {
|
||||
this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);
|
||||
this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);
|
||||
}
|
||||
}
|
||||
_debug(message) {
|
||||
@ -1058,8 +1135,8 @@ class ExecState extends events.EventEmitter {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const http = __nccwpck_require__(685);
|
||||
const https = __nccwpck_require__(687);
|
||||
const http = __nccwpck_require__(605);
|
||||
const https = __nccwpck_require__(211);
|
||||
const pm = __nccwpck_require__(443);
|
||||
let tunnel;
|
||||
var HttpCodes;
|
||||
@ -1678,9 +1755,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
};
|
||||
var _a;
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const assert_1 = __nccwpck_require__(491);
|
||||
const fs = __nccwpck_require__(147);
|
||||
const path = __nccwpck_require__(17);
|
||||
const assert_1 = __nccwpck_require__(357);
|
||||
const fs = __nccwpck_require__(747);
|
||||
const path = __nccwpck_require__(622);
|
||||
_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
|
||||
exports.IS_WINDOWS = process.platform === 'win32';
|
||||
function exists(fsPath) {
|
||||
@ -1879,9 +1956,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const childProcess = __nccwpck_require__(81);
|
||||
const path = __nccwpck_require__(17);
|
||||
const util_1 = __nccwpck_require__(837);
|
||||
const childProcess = __nccwpck_require__(129);
|
||||
const path = __nccwpck_require__(622);
|
||||
const util_1 = __nccwpck_require__(669);
|
||||
const ioUtil = __nccwpck_require__(962);
|
||||
const exec = util_1.promisify(childProcess.exec);
|
||||
/**
|
||||
@ -2187,9 +2264,9 @@ const semver = __importStar(__nccwpck_require__(911));
|
||||
const core_1 = __nccwpck_require__(186);
|
||||
// needs to be require for core node modules to be mocked
|
||||
/* eslint @typescript-eslint/no-require-imports: 0 */
|
||||
const os = __nccwpck_require__(37);
|
||||
const cp = __nccwpck_require__(81);
|
||||
const fs = __nccwpck_require__(147);
|
||||
const os = __nccwpck_require__(87);
|
||||
const cp = __nccwpck_require__(129);
|
||||
const fs = __nccwpck_require__(747);
|
||||
function _findMatch(versionSpec, stable, candidates, archFilter) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const platFilter = os.platform();
|
||||
@ -2378,17 +2455,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const core = __importStar(__nccwpck_require__(186));
|
||||
const io = __importStar(__nccwpck_require__(436));
|
||||
const fs = __importStar(__nccwpck_require__(147));
|
||||
const fs = __importStar(__nccwpck_require__(747));
|
||||
const mm = __importStar(__nccwpck_require__(473));
|
||||
const os = __importStar(__nccwpck_require__(37));
|
||||
const path = __importStar(__nccwpck_require__(17));
|
||||
const os = __importStar(__nccwpck_require__(87));
|
||||
const path = __importStar(__nccwpck_require__(622));
|
||||
const httpm = __importStar(__nccwpck_require__(925));
|
||||
const semver = __importStar(__nccwpck_require__(911));
|
||||
const stream = __importStar(__nccwpck_require__(781));
|
||||
const util = __importStar(__nccwpck_require__(837));
|
||||
const stream = __importStar(__nccwpck_require__(413));
|
||||
const util = __importStar(__nccwpck_require__(669));
|
||||
const v4_1 = __importDefault(__nccwpck_require__(824));
|
||||
const exec_1 = __nccwpck_require__(514);
|
||||
const assert_1 = __nccwpck_require__(491);
|
||||
const assert_1 = __nccwpck_require__(357);
|
||||
const retry_helper_1 = __nccwpck_require__(279);
|
||||
class HTTPError extends Error {
|
||||
constructor(httpStatusCode) {
|
||||
@ -4581,13 +4658,13 @@ module.exports = __nccwpck_require__(219);
|
||||
"use strict";
|
||||
|
||||
|
||||
var net = __nccwpck_require__(808);
|
||||
var tls = __nccwpck_require__(404);
|
||||
var http = __nccwpck_require__(685);
|
||||
var https = __nccwpck_require__(687);
|
||||
var events = __nccwpck_require__(361);
|
||||
var assert = __nccwpck_require__(491);
|
||||
var util = __nccwpck_require__(837);
|
||||
var net = __nccwpck_require__(631);
|
||||
var tls = __nccwpck_require__(16);
|
||||
var http = __nccwpck_require__(605);
|
||||
var https = __nccwpck_require__(211);
|
||||
var events = __nccwpck_require__(614);
|
||||
var assert = __nccwpck_require__(357);
|
||||
var util = __nccwpck_require__(669);
|
||||
|
||||
|
||||
exports.httpOverHttp = httpOverHttp;
|
||||
@ -4886,7 +4963,7 @@ module.exports = bytesToUuid;
|
||||
// Unique ID creation requires a high quality random # generator. In node.js
|
||||
// this is pretty straight-forward - we use the crypto API.
|
||||
|
||||
var crypto = __nccwpck_require__(113);
|
||||
var crypto = __nccwpck_require__(417);
|
||||
|
||||
module.exports = function nodeRNG() {
|
||||
return crypto.randomBytes(16);
|
||||
@ -4951,7 +5028,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
@ -4965,45 +5042,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.findVersionForDownload = exports.downloadMaven = exports.getAvailableVersions = exports.setupMaven = void 0;
|
||||
const path = __importStar(__nccwpck_require__(17));
|
||||
exports.setupMaven = exports.findVersionForDownload = exports.downloadMaven = exports.getAvailableVersions = void 0;
|
||||
const path = __importStar(__nccwpck_require__(622));
|
||||
const core = __importStar(__nccwpck_require__(186));
|
||||
const httpm = __importStar(__nccwpck_require__(925));
|
||||
const tc = __importStar(__nccwpck_require__(784));
|
||||
const http_client_1 = __nccwpck_require__(925);
|
||||
const semver = __importStar(__nccwpck_require__(911));
|
||||
const utils_1 = __nccwpck_require__(314);
|
||||
function setupMaven(versionSpec, installedVersion) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let toolPath = tc.find('maven', versionSpec);
|
||||
let resolvedVersion = utils_1.getVersionFromToolcachePath(toolPath);
|
||||
if (installedVersion) {
|
||||
if (!toolPath || semver.gte(installedVersion, resolvedVersion)) {
|
||||
core.info(`Use system Maven version ${installedVersion} instead of the cached one: ${resolvedVersion}`);
|
||||
return installedVersion;
|
||||
}
|
||||
}
|
||||
else if (!toolPath) {
|
||||
resolvedVersion = yield findVersionForDownload(versionSpec);
|
||||
toolPath = yield downloadMaven(resolvedVersion);
|
||||
}
|
||||
core.addPath(path.join(toolPath, 'bin'));
|
||||
return resolvedVersion;
|
||||
});
|
||||
}
|
||||
exports.setupMaven = setupMaven;
|
||||
const DOWNLOAD_BASE_URL = 'https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven';
|
||||
function getAvailableVersions() {
|
||||
var _a;
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const resourceUrl = `${DOWNLOAD_BASE_URL}/maven-metadata.xml`;
|
||||
const http = new http_client_1.HttpClient('setup-maven', undefined, { allowRetries: true });
|
||||
const http = new httpm.HttpClient('setup-maven', undefined, { allowRetries: true });
|
||||
core.info(`Downloading Maven versions manifest from ${resourceUrl} ...`);
|
||||
const response = yield http.get(resourceUrl);
|
||||
const body = yield response.readBody();
|
||||
if (response.message.statusCode !== http_client_1.HttpCodes.OK || !body) {
|
||||
if (response.message.statusCode !== httpm.HttpCodes.OK || !body) {
|
||||
throw new Error(`Unable to get available versions from ${resourceUrl}`);
|
||||
}
|
||||
const availableVersions = body.match(/(?<=<version>)[^<>]+(?=<\/version>)/g) || [];
|
||||
core.debug(`Available Maven versions: [${availableVersions}]`);
|
||||
const availableVersions = (_a = body.match(/(?<=<version>)[^<>]+(?=<\/version>)/g)) !== null && _a !== void 0 ? _a : [];
|
||||
core.debug(`Available Maven versions: [${availableVersions.toString()}]`);
|
||||
return availableVersions;
|
||||
});
|
||||
}
|
||||
@ -5035,6 +5094,25 @@ function findVersionForDownload(versionSpec) {
|
||||
});
|
||||
}
|
||||
exports.findVersionForDownload = findVersionForDownload;
|
||||
function setupMaven(versionSpec, installedVersion) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let toolPath = tc.find('maven', versionSpec);
|
||||
let resolvedVersion = utils_1.getVersionFromToolcachePath(toolPath);
|
||||
if (installedVersion) {
|
||||
if (!toolPath || semver.gte(installedVersion, resolvedVersion)) {
|
||||
core.info(`Use system Maven version ${installedVersion} instead of the cached one: ${resolvedVersion}`);
|
||||
return installedVersion;
|
||||
}
|
||||
}
|
||||
else if (!toolPath) {
|
||||
resolvedVersion = yield findVersionForDownload(versionSpec);
|
||||
toolPath = yield downloadMaven(resolvedVersion);
|
||||
}
|
||||
core.addPath(path.join(toolPath, 'bin'));
|
||||
return resolvedVersion;
|
||||
});
|
||||
}
|
||||
exports.setupMaven = setupMaven;
|
||||
|
||||
|
||||
/***/ }),
|
||||
@ -5059,7 +5137,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
@ -5078,14 +5156,17 @@ const core = __importStar(__nccwpck_require__(186));
|
||||
const semver = __importStar(__nccwpck_require__(911));
|
||||
const utils_1 = __nccwpck_require__(314);
|
||||
const installer_1 = __nccwpck_require__(574);
|
||||
function resolveVersionInput() {
|
||||
const versionSpec = core.getInput('maven-version') || '3';
|
||||
if (!semver.validRange(versionSpec)) {
|
||||
throw new Error(`Invalid SemVer notation '${versionSpec}' for a Maven version`);
|
||||
}
|
||||
return versionSpec;
|
||||
}
|
||||
function run() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
try {
|
||||
const versionSpec = core.getInput('maven-version') || '3';
|
||||
if (!semver.validRange(versionSpec)) {
|
||||
core.setFailed(`Invalid SemVer notation '${versionSpec}' for a Maven version`);
|
||||
return;
|
||||
}
|
||||
const versionSpec = resolveVersionInput();
|
||||
let installedVersion = yield utils_1.getActiveMavenVersion();
|
||||
if (installedVersion && !semver.satisfies(installedVersion, versionSpec)) {
|
||||
installedVersion = undefined;
|
||||
@ -5093,8 +5174,8 @@ function run() {
|
||||
installedVersion = yield installer_1.setupMaven(versionSpec, installedVersion);
|
||||
core.setOutput('version', installedVersion);
|
||||
}
|
||||
catch (error) {
|
||||
core.setFailed(error.toString());
|
||||
catch (err) {
|
||||
core.setFailed(err.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -5123,7 +5204,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
@ -5137,8 +5218,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.getExecOutput = exports.getActiveMavenVersion = exports.getVersionFromToolcachePath = void 0;
|
||||
const path = __importStar(__nccwpck_require__(17));
|
||||
exports.getActiveMavenVersion = exports.getVersionFromToolcachePath = void 0;
|
||||
const path = __importStar(__nccwpck_require__(622));
|
||||
const core = __importStar(__nccwpck_require__(186));
|
||||
const exec = __importStar(__nccwpck_require__(514));
|
||||
function getVersionFromToolcachePath(toolPath) {
|
||||
@ -5151,42 +5232,24 @@ exports.getVersionFromToolcachePath = getVersionFromToolcachePath;
|
||||
function getActiveMavenVersion() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
try {
|
||||
const { output } = yield getExecOutput('mvn', ['-v']);
|
||||
const found = output.match(/^[^\d]*(\S+)/);
|
||||
const { stdout } = yield exec.getExecOutput('mvn', ['-v'], { silent: true });
|
||||
const found = /^[^\d]*(\S+)/.exec(stdout);
|
||||
const installedVersion = !found ? '' : found[1];
|
||||
core.debug(`Retrieved activated Maven version: ${installedVersion}`);
|
||||
return installedVersion;
|
||||
}
|
||||
catch (error) {
|
||||
core.info(`Failed to get activated Maven version. ${error}`);
|
||||
catch (err) {
|
||||
core.info(`Failed to get activated Maven version. ${err.message}`);
|
||||
}
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
exports.getActiveMavenVersion = getActiveMavenVersion;
|
||||
/**
|
||||
* Exec a command and get the standard output.
|
||||
*
|
||||
* @throws {Error} If the exit-code is non-zero.
|
||||
*/
|
||||
function getExecOutput(command, args) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let output = '';
|
||||
const exitCode = yield exec.exec(command, args, {
|
||||
silent: true,
|
||||
listeners: {
|
||||
stdout: (data) => (output += data.toString())
|
||||
}
|
||||
});
|
||||
return { exitCode, output };
|
||||
});
|
||||
}
|
||||
exports.getExecOutput = getExecOutput;
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 491:
|
||||
/***/ 357:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5194,7 +5257,7 @@ module.exports = require("assert");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 81:
|
||||
/***/ 129:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5202,7 +5265,7 @@ module.exports = require("child_process");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 113:
|
||||
/***/ 417:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5210,7 +5273,7 @@ module.exports = require("crypto");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 361:
|
||||
/***/ 614:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5218,7 +5281,7 @@ module.exports = require("events");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 147:
|
||||
/***/ 747:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5226,7 +5289,7 @@ module.exports = require("fs");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 685:
|
||||
/***/ 605:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5234,7 +5297,7 @@ module.exports = require("http");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 687:
|
||||
/***/ 211:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5242,7 +5305,7 @@ module.exports = require("https");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 808:
|
||||
/***/ 631:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5250,7 +5313,7 @@ module.exports = require("net");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 37:
|
||||
/***/ 87:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5258,7 +5321,7 @@ module.exports = require("os");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 17:
|
||||
/***/ 622:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5266,7 +5329,7 @@ module.exports = require("path");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 781:
|
||||
/***/ 413:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5274,7 +5337,23 @@ module.exports = require("stream");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 404:
|
||||
/***/ 304:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
module.exports = require("string_decoder");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 213:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
module.exports = require("timers");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 16:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5282,7 +5361,7 @@ module.exports = require("tls");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 837:
|
||||
/***/ 669:
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
@ -5337,6 +5416,7 @@ var exports = __webpack_exports__;
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const main_1 = __nccwpck_require__(399);
|
||||
// noinspection JSIgnoredPromiseFromCall
|
||||
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
||||
main_1.run();
|
||||
|
||||
})();
|
||||
|
10
jest.config.json
Normal file
10
jest.config.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"clearMocks": true,
|
||||
"moduleFileExtensions": ["ts", "js"],
|
||||
"testEnvironment": "node",
|
||||
"testMatch": ["**/*.test.ts"],
|
||||
"transform": {
|
||||
"\\.ts$": "ts-jest"
|
||||
},
|
||||
"verbose": true
|
||||
}
|
3169
package-lock.json
generated
3169
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
47
package.json
47
package.json
@ -5,12 +5,14 @@
|
||||
"description": "setup maven action",
|
||||
"main": "dist/index.js",
|
||||
"scripts": {
|
||||
"build": "npm run ncc -- build -o dist src/setup-maven.ts",
|
||||
"build": "yarn ncc build -o dist src/setup-maven.ts",
|
||||
"test": "node node_modules/jest/bin/jest.js",
|
||||
"format": "npm run prettier -- \"{,!(dist)/**/}?*.*\" --write",
|
||||
"lint": "npm run prettier -- \"{,!(dist)/**/}?*.*\" --check",
|
||||
"format": "yarn prettier \"{,!(dist)/**/}*.{ts,js*,yml,md}\" --write",
|
||||
"format-check": "yarn prettier \"{,!(dist)/**/}*.{ts,js*,yml,md}\" --check",
|
||||
"lint": "yarn format-check && yarn eslint \"{,!(dist)/**/}*.{ts,js}\"",
|
||||
"ncc": "node node_modules/@vercel/ncc/dist/ncc/cli.js",
|
||||
"prettier": "node node_modules/prettier/bin-prettier.js --ignore-path .gitignore"
|
||||
"prettier": "node node_modules/prettier/bin-prettier.js --ignore-path .gitignore",
|
||||
"eslint": "node node_modules/eslint/bin/eslint.js --ignore-path .gitignore"
|
||||
},
|
||||
"keywords": [
|
||||
"actions",
|
||||
@ -21,21 +23,30 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/exec": "^1.0.4",
|
||||
"@actions/http-client": "^1.0.11",
|
||||
"@actions/tool-cache": "^1.6.1",
|
||||
"@actions/exec": "^1.0.0",
|
||||
"@actions/http-client": "^1.0.8",
|
||||
"@actions/tool-cache": "^1.3.1",
|
||||
"semver": "^6.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^27.0.2",
|
||||
"@types/node": "^16.11.25",
|
||||
"@types/node": "^12.0.4",
|
||||
"@types/semver": "^6.0.0",
|
||||
"@vercel/ncc": "^0.33.4",
|
||||
"@typescript-eslint/eslint-plugin": "^4.20.0",
|
||||
"@typescript-eslint/parser": "^4.20.0",
|
||||
"@vercel/ncc": "^0.31.1",
|
||||
"eslint": "^7.23.0",
|
||||
"eslint-config-prettier": ">=8.0.0",
|
||||
"eslint-plugin-jest": "^24.3.0",
|
||||
"jest": "^27.2.5",
|
||||
"jest-circus": "^27.2.5",
|
||||
"prettier": "^1.19.1",
|
||||
"prettier": "^1.17.1",
|
||||
"ts-jest": "^27.0.5",
|
||||
"typescript": "^4.2.3"
|
||||
"typescript": "^3.5.1"
|
||||
},
|
||||
"resolutions": {
|
||||
"**/color-convert/color-name": "~1.1.4",
|
||||
"**/escodegen/optionator": "^0.9.1",
|
||||
"eslint/@babel/code-frame": "^7.12.13"
|
||||
},
|
||||
"prettier": {
|
||||
"printWidth": 100,
|
||||
@ -43,17 +54,5 @@
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none",
|
||||
"arrowParens": "avoid"
|
||||
},
|
||||
"jest": {
|
||||
"clearMocks": true,
|
||||
"testEnvironment": "node",
|
||||
"testMatch": [
|
||||
"**/*.test.ts"
|
||||
],
|
||||
"testRunner": "jest-circus/runner",
|
||||
"transform": {
|
||||
"\\.ts$": "ts-jest"
|
||||
},
|
||||
"verbose": true
|
||||
}
|
||||
}
|
||||
|
@ -1,49 +1,27 @@
|
||||
import * as path from 'path';
|
||||
import * as core from '@actions/core';
|
||||
import * as httpm from '@actions/http-client';
|
||||
import * as tc from '@actions/tool-cache';
|
||||
import { HttpClient, HttpCodes } from '@actions/http-client';
|
||||
import * as semver from 'semver';
|
||||
|
||||
import { getVersionFromToolcachePath } from './utils';
|
||||
|
||||
export async function setupMaven(versionSpec: string, installedVersion?: string): Promise<string> {
|
||||
let toolPath = tc.find('maven', versionSpec);
|
||||
let resolvedVersion = getVersionFromToolcachePath(toolPath);
|
||||
|
||||
if (installedVersion) {
|
||||
if (!toolPath || semver.gte(installedVersion, resolvedVersion)) {
|
||||
core.info(
|
||||
`Use system Maven version ${installedVersion} instead of the cached one: ${resolvedVersion}`
|
||||
);
|
||||
|
||||
return installedVersion;
|
||||
}
|
||||
} else if (!toolPath) {
|
||||
resolvedVersion = await findVersionForDownload(versionSpec);
|
||||
|
||||
toolPath = await downloadMaven(resolvedVersion);
|
||||
}
|
||||
|
||||
core.addPath(path.join(toolPath, 'bin'));
|
||||
return resolvedVersion;
|
||||
}
|
||||
|
||||
const DOWNLOAD_BASE_URL = 'https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven';
|
||||
|
||||
export async function getAvailableVersions(): Promise<string[]> {
|
||||
const resourceUrl = `${DOWNLOAD_BASE_URL}/maven-metadata.xml`;
|
||||
const http = new HttpClient('setup-maven', undefined, { allowRetries: true });
|
||||
const http = new httpm.HttpClient('setup-maven', undefined, { allowRetries: true });
|
||||
|
||||
core.info(`Downloading Maven versions manifest from ${resourceUrl} ...`);
|
||||
const response = await http.get(resourceUrl);
|
||||
const body = await response.readBody();
|
||||
|
||||
if (response.message.statusCode !== HttpCodes.OK || !body) {
|
||||
if (response.message.statusCode !== httpm.HttpCodes.OK || !body) {
|
||||
throw new Error(`Unable to get available versions from ${resourceUrl}`);
|
||||
}
|
||||
|
||||
const availableVersions = body.match(/(?<=<version>)[^<>]+(?=<\/version>)/g) || [];
|
||||
core.debug(`Available Maven versions: [${availableVersions}]`);
|
||||
const availableVersions = body.match(/(?<=<version>)[^<>]+(?=<\/version>)/g) ?? [];
|
||||
core.debug(`Available Maven versions: [${availableVersions.toString()}]`);
|
||||
|
||||
return availableVersions;
|
||||
}
|
||||
@ -75,3 +53,25 @@ export async function findVersionForDownload(versionSpec: string): Promise<strin
|
||||
core.debug(`Resolved version for download: ${resolvedVersion}`);
|
||||
return resolvedVersion;
|
||||
}
|
||||
|
||||
export async function setupMaven(versionSpec: string, installedVersion?: string): Promise<string> {
|
||||
let toolPath = tc.find('maven', versionSpec);
|
||||
let resolvedVersion = getVersionFromToolcachePath(toolPath);
|
||||
|
||||
if (installedVersion) {
|
||||
if (!toolPath || semver.gte(installedVersion, resolvedVersion)) {
|
||||
core.info(
|
||||
`Use system Maven version ${installedVersion} instead of the cached one: ${resolvedVersion}`
|
||||
);
|
||||
|
||||
return installedVersion;
|
||||
}
|
||||
} else if (!toolPath) {
|
||||
resolvedVersion = await findVersionForDownload(versionSpec);
|
||||
|
||||
toolPath = await downloadMaven(resolvedVersion);
|
||||
}
|
||||
|
||||
core.addPath(path.join(toolPath, 'bin'));
|
||||
return resolvedVersion;
|
||||
}
|
||||
|
23
src/main.ts
23
src/main.ts
@ -4,14 +4,19 @@ import * as semver from 'semver';
|
||||
import { getActiveMavenVersion } from './utils';
|
||||
import { setupMaven } from './installer';
|
||||
|
||||
export async function run() {
|
||||
try {
|
||||
const versionSpec = core.getInput('maven-version') || '3';
|
||||
function resolveVersionInput(): string {
|
||||
const versionSpec = core.getInput('maven-version') || '3';
|
||||
|
||||
if (!semver.validRange(versionSpec)) {
|
||||
core.setFailed(`Invalid SemVer notation '${versionSpec}' for a Maven version`);
|
||||
return;
|
||||
}
|
||||
if (!semver.validRange(versionSpec)) {
|
||||
throw new Error(`Invalid SemVer notation '${versionSpec}' for a Maven version`);
|
||||
}
|
||||
|
||||
return versionSpec;
|
||||
}
|
||||
|
||||
export async function run(): Promise<void> {
|
||||
try {
|
||||
const versionSpec = resolveVersionInput();
|
||||
|
||||
let installedVersion = await getActiveMavenVersion();
|
||||
if (installedVersion && !semver.satisfies(installedVersion, versionSpec)) {
|
||||
@ -20,7 +25,7 @@ export async function run() {
|
||||
|
||||
installedVersion = await setupMaven(versionSpec, installedVersion);
|
||||
core.setOutput('version', installedVersion);
|
||||
} catch (error) {
|
||||
core.setFailed(error.toString());
|
||||
} catch (err) {
|
||||
core.setFailed((err as Error).message);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { run } from './main';
|
||||
|
||||
// noinspection JSIgnoredPromiseFromCall
|
||||
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
||||
run();
|
||||
|
31
src/utils.ts
31
src/utils.ts
@ -2,7 +2,7 @@ import * as path from 'path';
|
||||
import * as core from '@actions/core';
|
||||
import * as exec from '@actions/exec';
|
||||
|
||||
export function getVersionFromToolcachePath(toolPath: string) {
|
||||
export function getVersionFromToolcachePath(toolPath: string): string {
|
||||
return !toolPath ? toolPath : path.basename(path.dirname(toolPath));
|
||||
}
|
||||
|
||||
@ -11,37 +11,16 @@ export function getVersionFromToolcachePath(toolPath: string) {
|
||||
*/
|
||||
export async function getActiveMavenVersion(): Promise<string | undefined> {
|
||||
try {
|
||||
const { output } = await getExecOutput('mvn', ['-v']);
|
||||
const { stdout } = await exec.getExecOutput('mvn', ['-v'], { silent: true });
|
||||
|
||||
const found = output.match(/^[^\d]*(\S+)/);
|
||||
const found = /^[^\d]*(\S+)/.exec(stdout);
|
||||
const installedVersion = !found ? '' : found[1];
|
||||
core.debug(`Retrieved activated Maven version: ${installedVersion}`);
|
||||
|
||||
return installedVersion;
|
||||
} catch (error) {
|
||||
core.info(`Failed to get activated Maven version. ${error}`);
|
||||
} catch (err) {
|
||||
core.info(`Failed to get activated Maven version. ${(err as Error).message}`);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Exec a command and get the standard output.
|
||||
*
|
||||
* @throws {Error} If the exit-code is non-zero.
|
||||
*/
|
||||
export async function getExecOutput(
|
||||
command: string,
|
||||
args?: string[]
|
||||
): Promise<{ exitCode: number; output: string }> {
|
||||
let output = '';
|
||||
|
||||
const exitCode = await exec.exec(command, args, {
|
||||
silent: true,
|
||||
listeners: {
|
||||
stdout: (data: Buffer) => (output += data.toString())
|
||||
}
|
||||
});
|
||||
|
||||
return { exitCode, output };
|
||||
}
|
||||
|
4
tsconfig.eslint.json
Normal file
4
tsconfig.eslint.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"exclude": ["node_modules", "lib"]
|
||||
}
|
Loading…
Reference in New Issue
Block a user