Merge pull request #2570 from github/henrymercer/more-robust-tag-name
Improve robustness of extracting the bundle tag name
This commit is contained in:
commit
6a38de6872
6 changed files with 48 additions and 7 deletions
14
lib/setup-codeql.js
generated
14
lib/setup-codeql.js
generated
|
|
@ -28,6 +28,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.downloadCodeQL = exports.CODEQL_DEFAULT_ACTION_REPOSITORY = exports.ToolsSource = void 0;
|
||||
exports.getCodeQLActionRepository = getCodeQLActionRepository;
|
||||
exports.tryGetTagNameFromUrl = tryGetTagNameFromUrl;
|
||||
exports.tryGetBundleVersionFromUrl = tryGetBundleVersionFromUrl;
|
||||
exports.convertToSemVer = convertToSemVer;
|
||||
exports.getCodeQLSource = getCodeQLSource;
|
||||
|
|
@ -140,11 +141,20 @@ function tryGetBundleVersionFromTagName(tagName, logger) {
|
|||
return match[1];
|
||||
}
|
||||
function tryGetTagNameFromUrl(url, logger) {
|
||||
const match = url.match(/\/(codeql-bundle-.*)\//);
|
||||
if (match === null || match.length < 2) {
|
||||
const matches = [...url.matchAll(/\/(codeql-bundle-[^/]*)\//g)];
|
||||
if (!matches.length) {
|
||||
logger.debug(`Could not determine tag name for URL ${url}.`);
|
||||
return undefined;
|
||||
}
|
||||
// Example: https://github.com/org/codeql-bundle-testing/releases/download/codeql-bundle-v2.19.0/codeql-bundle-linux64.tar.zst
|
||||
// We require a trailing forward slash to be part of the match, so the last match gives us the tag
|
||||
// name. An alternative approach would be to also match against `/releases/`, but this approach
|
||||
// assumes less about the structure of the URL.
|
||||
const match = matches[matches.length - 1];
|
||||
if (match === null || match.length !== 2) {
|
||||
logger.debug(`Could not determine tag name for URL ${url}. Matched ${JSON.stringify(match)}.`);
|
||||
return undefined;
|
||||
}
|
||||
return match[1];
|
||||
}
|
||||
function tryGetBundleVersionFromUrl(url, logger) {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
3
lib/setup-codeql.test.js
generated
3
lib/setup-codeql.test.js
generated
|
|
@ -168,4 +168,7 @@ ava_1.default.beforeEach(() => {
|
|||
msg.message.includes(expected_message)));
|
||||
});
|
||||
});
|
||||
(0, ava_1.default)('tryGetTagNameFromUrl extracts the right tag name for a repo name containing "codeql-bundle"', (t) => {
|
||||
t.is(setupCodeql.tryGetTagNameFromUrl("https://github.com/org/codeql-bundle-testing/releases/download/codeql-bundle-v2.19.0/codeql-bundle-linux64.tar.zst", (0, logging_1.getRunnerLogger)(true)), "codeql-bundle-v2.19.0");
|
||||
});
|
||||
//# sourceMappingURL=setup-codeql.test.js.map
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -249,3 +249,13 @@ test("setupCodeQLBundle logs the CodeQL CLI version being used when asked to dow
|
|||
);
|
||||
});
|
||||
});
|
||||
|
||||
test('tryGetTagNameFromUrl extracts the right tag name for a repo name containing "codeql-bundle"', (t) => {
|
||||
t.is(
|
||||
setupCodeql.tryGetTagNameFromUrl(
|
||||
"https://github.com/org/codeql-bundle-testing/releases/download/codeql-bundle-v2.19.0/codeql-bundle-linux64.tar.zst",
|
||||
getRunnerLogger(true),
|
||||
),
|
||||
"codeql-bundle-v2.19.0",
|
||||
);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -138,12 +138,30 @@ function tryGetBundleVersionFromTagName(
|
|||
return match[1];
|
||||
}
|
||||
|
||||
function tryGetTagNameFromUrl(url: string, logger: Logger): string | undefined {
|
||||
const match = url.match(/\/(codeql-bundle-.*)\//);
|
||||
if (match === null || match.length < 2) {
|
||||
export function tryGetTagNameFromUrl(
|
||||
url: string,
|
||||
logger: Logger,
|
||||
): string | undefined {
|
||||
const matches = [...url.matchAll(/\/(codeql-bundle-[^/]*)\//g)];
|
||||
if (!matches.length) {
|
||||
logger.debug(`Could not determine tag name for URL ${url}.`);
|
||||
return undefined;
|
||||
}
|
||||
// Example: https://github.com/org/codeql-bundle-testing/releases/download/codeql-bundle-v2.19.0/codeql-bundle-linux64.tar.zst
|
||||
// We require a trailing forward slash to be part of the match, so the last match gives us the tag
|
||||
// name. An alternative approach would be to also match against `/releases/`, but this approach
|
||||
// assumes less about the structure of the URL.
|
||||
const match = matches[matches.length - 1];
|
||||
|
||||
if (match === null || match.length !== 2) {
|
||||
logger.debug(
|
||||
`Could not determine tag name for URL ${url}. Matched ${JSON.stringify(
|
||||
match,
|
||||
)}.`,
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return match[1];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue