Permalink
Cannot retrieve contributors at this time
128 lines (128 sloc)
5.38 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/@actions/tool-cache/lib/manifest.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"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) { | |
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | |
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | |
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | |
step((generator = generator.apply(thisArg, _arguments || [])).next()); | |
}); | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports._readLinuxVersionFile = exports._getOsVersion = exports._findMatch = void 0; | |
const semver = __importStar(require("semver")); | |
const core_1 = require("@actions/core"); | |
// needs to be require for core node modules to be mocked | |
/* eslint @typescript-eslint/no-require-imports: 0 */ | |
const os = require("os"); | |
const cp = require("child_process"); | |
const fs = require("fs"); | |
function _findMatch(versionSpec, stable, candidates, archFilter) { | |
return __awaiter(this, void 0, void 0, function* () { | |
const platFilter = os.platform(); | |
let result; | |
let match; | |
let file; | |
for (const candidate of candidates) { | |
const version = candidate.version; | |
core_1.debug(`check ${version} satisfies ${versionSpec}`); | |
if (semver.satisfies(version, versionSpec) && | |
(!stable || candidate.stable === stable)) { | |
file = candidate.files.find(item => { | |
core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`); | |
let chk = item.arch === archFilter && item.platform === platFilter; | |
if (chk && item.platform_version) { | |
const osVersion = module.exports._getOsVersion(); | |
if (osVersion === item.platform_version) { | |
chk = true; | |
} | |
else { | |
chk = semver.satisfies(osVersion, item.platform_version); | |
} | |
} | |
return chk; | |
}); | |
if (file) { | |
core_1.debug(`matched ${candidate.version}`); | |
match = candidate; | |
break; | |
} | |
} | |
} | |
if (match && file) { | |
// clone since we're mutating the file list to be only the file that matches | |
result = Object.assign({}, match); | |
result.files = [file]; | |
} | |
return result; | |
}); | |
} | |
exports._findMatch = _findMatch; | |
function _getOsVersion() { | |
// TODO: add windows and other linux, arm variants | |
// right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python) | |
const plat = os.platform(); | |
let version = ''; | |
if (plat === 'darwin') { | |
version = cp.execSync('sw_vers -productVersion').toString(); | |
} | |
else if (plat === 'linux') { | |
// lsb_release process not in some containers, readfile | |
// Run cat /etc/lsb-release | |
// DISTRIB_ID=Ubuntu | |
// DISTRIB_RELEASE=18.04 | |
// DISTRIB_CODENAME=bionic | |
// DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS" | |
const lsbContents = module.exports._readLinuxVersionFile(); | |
if (lsbContents) { | |
const lines = lsbContents.split('\n'); | |
for (const line of lines) { | |
const parts = line.split('='); | |
if (parts.length === 2 && | |
(parts[0].trim() === 'VERSION_ID' || | |
parts[0].trim() === 'DISTRIB_RELEASE')) { | |
version = parts[1] | |
.trim() | |
.replace(/^"/, '') | |
.replace(/"$/, ''); | |
break; | |
} | |
} | |
} | |
} | |
return version; | |
} | |
exports._getOsVersion = _getOsVersion; | |
function _readLinuxVersionFile() { | |
const lsbReleaseFile = '/etc/lsb-release'; | |
const osReleaseFile = '/etc/os-release'; | |
let contents = ''; | |
if (fs.existsSync(lsbReleaseFile)) { | |
contents = fs.readFileSync(lsbReleaseFile).toString(); | |
} | |
else if (fs.existsSync(osReleaseFile)) { | |
contents = fs.readFileSync(osReleaseFile).toString(); | |
} | |
return contents; | |
} | |
exports._readLinuxVersionFile = _readLinuxVersionFile; | |
//# sourceMappingURL=manifest.js.map |