@@ -3392,13 +3392,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
33923392 return result;
33933393};
33943394Object.defineProperty(exports, "__esModule", { value: true });
3395+ exports.run = exports.latest_version = void 0;
33953396const httpm = __importStar(__webpack_require__(539));
33963397const cache = __importStar(__webpack_require__(692));
33973398const core = __importStar(__webpack_require__(470));
33983399const exec = __importStar(__webpack_require__(986));
33993400const io = __importStar(__webpack_require__(1));
34003401const path = __importStar(__webpack_require__(622));
34013402const fs = __importStar(__webpack_require__(747));
3403+ const baseUrl = 'https://download.tarantool.org/tarantool/release/' +
3404+ core.getInput('tarantool-version', { required: true });
34023405async function capture(cmd, options) {
34033406 let output = '';
34043407 await exec.exec(cmd, [], {
@@ -3411,6 +3414,21 @@ async function capture(cmd, options) {
34113414 });
34123415 return output.trim();
34133416}
3417+ let _lsb_release;
3418+ async function lsb_release() {
3419+ if (!_lsb_release) {
3420+ _lsb_release = capture('lsb_release -c -s', { silent: true });
3421+ }
3422+ return _lsb_release;
3423+ }
3424+ let _httpc;
3425+ async function http_get(url) {
3426+ if (!_httpc) {
3427+ _httpc = new httpm.HttpClient('httpc');
3428+ }
3429+ core.info('curl ' + url);
3430+ return _httpc.get(url);
3431+ }
34143432async function dpkg_list() {
34153433 const cmd = 'sudo dpkg-query -W -f "${binary:Package}\\n"';
34163434 const output = await capture(cmd, { silent: true });
@@ -3437,41 +3455,43 @@ function semver_max(a, b) {
34373455 return pa[i] >= pb[i] ? a : b;
34383456 }
34393457}
3458+ async function latest_version() {
3459+ const repo = baseUrl + '/ubuntu/dists/' + (await lsb_release());
3460+ return http_get(`${repo}/main/binary-amd64/Packages`)
3461+ .then(response => {
3462+ if (response.message.statusCode !== 200) {
3463+ throw new Error(`server replied ${response.message.statusCode}`);
3464+ }
3465+ return response.readBody();
3466+ })
3467+ .then(output => {
3468+ let ret = '';
3469+ output
3470+ .split('\n\n')
3471+ .filter(paragraph => paragraph.startsWith('Package: tarantool\n'))
3472+ .forEach(paragraph => {
3473+ const match = paragraph.match(/^Version: (.+)$/m);
3474+ const version = match ? match[1] : ret;
3475+ ret = semver_max(ret, version);
3476+ });
3477+ return ret;
3478+ });
3479+ }
3480+ exports.latest_version = latest_version;
34403481async function run_linux() {
34413482 try {
3442- const httpc = new httpm.HttpClient('httpc');
3443- const lsb_release = await capture('lsb_release -c -s', { silent: true });
3483+ const distro = await lsb_release();
34443484 const cache_dir = 'cache-tarantool';
3445- let cache_key = core.getInput('cache-key');
3446- const baseUrl = 'https://download.tarantool.org/tarantool/release/' +
3447- core.getInput('tarantool-version', { required: true });
34483485 core.startGroup('Checking latest tarantool version');
3449- const latest_version = await httpc
3450- .get(baseUrl + `/ubuntu/dists/${lsb_release}/main/binary-amd64/Packages`)
3451- .then(response => {
3452- if (response.message.statusCode !== 200) {
3453- throw new Error(`server replied ${response.message.statusCode}`);
3454- }
3455- return response.readBody();
3456- })
3457- .then(output => {
3458- let ret = '';
3459- output
3460- .split('\n\n')
3461- .filter(paragraph => paragraph.startsWith('Package: tarantool\n'))
3462- .forEach(paragraph => {
3463- const match = paragraph.match(/^Version: (.+)$/m);
3464- const version = match ? match[1] : ret;
3465- core.info(`Seen ${version}`);
3466- ret = semver_max(ret, version);
3467- });
3468- return ret;
3469- });
3470- core.info(`${latest_version}`);
3486+ const version = await latest_version();
3487+ core.info(`${version}`);
34713488 core.endGroup();
3472- if (!cache_key ) {
3473- cache_key = `tarantool-setup-${lsb_release}-${latest_version}` ;
3489+ if (core.getInput('cache-key') ) {
3490+ core.warning("Setup-tarantool input 'cache-key' is deprecated") ;
34743491 }
3492+ let cache_key = `tarantool-setup-${distro}-${version}`;
3493+ // This for testing only
3494+ cache_key += process.env['TARANTOOL_CACHE_KEY_SUFFIX'] || '';
34753495 if (await cache.restoreCache([cache_dir], cache_key)) {
34763496 core.info(`Cache restored from key: ${cache_key}`);
34773497 await exec.exec(`sudo rsync -aK "${cache_dir}/" /`);
@@ -3482,9 +3502,7 @@ async function run_linux() {
34823502 core.info(`Cache not found for input key: ${cache_key}`);
34833503 }
34843504 await core.group('Adding gpg key', async () => {
3485- const url = baseUrl + '/gpgkey';
3486- core.info('curl ' + url);
3487- const response = await httpc.get(url);
3505+ const response = await http_get(baseUrl + '/gpgkey');
34883506 if (response.message.statusCode !== 200) {
34893507 throw new Error(`server replied ${response.message.statusCode}`);
34903508 }
@@ -3493,7 +3511,7 @@ async function run_linux() {
34933511 });
34943512 await core.group('Setting up repository', async () => {
34953513 await exec.exec('sudo tee /etc/apt/sources.list.d/tarantool.list', [], {
3496- input: Buffer.from(`deb ${baseUrl}/ubuntu/ ${lsb_release } main\n`)
3514+ input: Buffer.from(`deb ${baseUrl}/ubuntu/ ${distro } main\n`)
34973515 });
34983516 });
34993517 await core.group('Running apt-get update', async () => {
@@ -3540,8 +3558,7 @@ async function run() {
35403558 }
35413559 await exec.exec('tarantool --version');
35423560}
3543- run();
3544- exports.default = run;
3561+ exports.run = run;
35453562
35463563
35473564/***/ }),
0 commit comments