Run the pack download command

This commit is contained in:
Andrew Eisenberg 2021-06-04 13:44:24 -07:00
parent 06687e95c8
commit d87945e9fd
9 changed files with 73 additions and 7 deletions

8
lib/analyze.js generated
View file

@ -96,6 +96,13 @@ async function runQueries(sarifFolder, memoryFlag, addSnippetsFlag, threadsFlag,
throw new Error(`Unable to analyse ${language} as no queries were selected for this language`); throw new Error(`Unable to analyse ${language} as no queries were selected for this language`);
} }
try { try {
if (hasPackWithCustomQueries) {
const codeql = codeql_1.getCodeQL(config.codeQLCmd);
const results = await codeql.packDownload(packsWithVersion);
logger.info(`Downloaded packs: ${results.packs
.map((r) => `${r.name}@${r.version || "latest"}`)
.join(", ")}`);
}
let analysisSummaryBuiltIn = ""; let analysisSummaryBuiltIn = "";
const customAnalysisSummaries = []; const customAnalysisSummaries = [];
if (queries["builtin"].length > 0) { if (queries["builtin"].length > 0) {
@ -150,6 +157,7 @@ async function runQueries(sarifFolder, memoryFlag, addSnippetsFlag, threadsFlag,
} }
catch (e) { catch (e) {
logger.info(e); logger.info(e);
logger.info(e.stack);
statusReport.analyze_failure_language = language; statusReport.analyze_failure_language = language;
throw new CodeQLAnalysisError(statusReport, `Error running analysis for ${language}: ${e}`); throw new CodeQLAnalysisError(statusReport, `Error running analysis for ${language}: ${e}`);
} }

File diff suppressed because one or more lines are too long

4
lib/codeql.js generated
View file

@ -493,7 +493,7 @@ function getCodeQLForCmd(cmd) {
await new toolrunner.ToolRunner(cmd, args, { await new toolrunner.ToolRunner(cmd, args, {
listeners: { listeners: {
stdout: (data) => { stdout: (data) => {
output += data.toString("utf8"); output += data.toString();
}, },
}, },
}).exec(); }).exec();
@ -513,7 +513,7 @@ function getCodeQLForCmd(cmd) {
const args = [ const args = [
"pack", "pack",
"download", "download",
"-v", "--format=json",
...getExtraOptionsFromEnv(["pack", "download"]), ...getExtraOptionsFromEnv(["pack", "download"]),
...packs.map(packWithVersionToString), ...packs.map(packWithVersionToString),
]; ];

File diff suppressed because one or more lines are too long

20
lib/init-action.js generated
View file

@ -7,7 +7,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
return result; return result;
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const fs = __importStar(require("fs"));
const os = __importStar(require("os"));
const path = __importStar(require("path"));
const core = __importStar(require("@actions/core")); const core = __importStar(require("@actions/core"));
const yaml = __importStar(require("js-yaml"));
const actions_util_1 = require("./actions-util"); const actions_util_1 = require("./actions-util");
const init_1 = require("./init"); const init_1 = require("./init");
const languages_1 = require("./languages"); const languages_1 = require("./languages");
@ -82,6 +86,22 @@ async function run() {
logger.warning(`${err.message} You can call this action with 'setup-python-dependencies: false' to disable this process`); logger.warning(`${err.message} You can call this action with 'setup-python-dependencies: false' to disable this process`);
} }
} }
////////////////////////////////
// TODO This should not happen in the action, we should be able to
// generate the default qlconfig from the CLI
// DO NOT COMMIT THIS
const defaultQlConfig = {
registryKind: "docker",
registries: [
{
url: "https://ghcr.io/v2/",
packages: "*",
},
],
};
fs.mkdirSync(path.join(os.homedir(), ".codeql"));
fs.writeFileSync(path.join(os.homedir(), ".codeql", "qlconfig.yml"), yaml.safeDump(defaultQlConfig), "utf8");
////////////////////////////////
} }
catch (e) { catch (e) {
core.setFailed(e.message); core.setFailed(e.message);

File diff suppressed because one or more lines are too long

View file

@ -178,6 +178,16 @@ export async function runQueries(
} }
try { try {
if (hasPackWithCustomQueries) {
const codeql = getCodeQL(config.codeQLCmd);
const results = await codeql.packDownload(packsWithVersion);
logger.info(
`Downloaded packs: ${results.packs
.map((r) => `${r.name}@${r.version || "latest"}`)
.join(", ")}`
);
}
let analysisSummaryBuiltIn = ""; let analysisSummaryBuiltIn = "";
const customAnalysisSummaries: string[] = []; const customAnalysisSummaries: string[] = [];
if (queries["builtin"].length > 0) { if (queries["builtin"].length > 0) {
@ -256,6 +266,7 @@ export async function runQueries(
logger.endGroup(); logger.endGroup();
} catch (e) { } catch (e) {
logger.info(e); logger.info(e);
logger.info(e.stack);
statusReport.analyze_failure_language = language; statusReport.analyze_failure_language = language;
throw new CodeQLAnalysisError( throw new CodeQLAnalysisError(
statusReport, statusReport,

View file

@ -760,7 +760,7 @@ function getCodeQLForCmd(cmd: string): CodeQL {
await new toolrunner.ToolRunner(cmd, args, { await new toolrunner.ToolRunner(cmd, args, {
listeners: { listeners: {
stdout: (data: Buffer) => { stdout: (data: Buffer) => {
output += data.toString("utf8"); output += data.toString();
}, },
}, },
}).exec(); }).exec();
@ -781,7 +781,7 @@ function getCodeQLForCmd(cmd: string): CodeQL {
const args = [ const args = [
"pack", "pack",
"download", "download",
"-v", "--format=json",
...getExtraOptionsFromEnv(["pack", "download"]), ...getExtraOptionsFromEnv(["pack", "download"]),
...packs.map(packWithVersionToString), ...packs.map(packWithVersionToString),
]; ];

View file

@ -1,4 +1,9 @@
import * as fs from "fs";
import * as os from "os";
import * as path from "path";
import * as core from "@actions/core"; import * as core from "@actions/core";
import * as yaml from "js-yaml";
import { import {
createStatusReportBase, createStatusReportBase,
@ -177,6 +182,28 @@ async function run() {
); );
} }
} }
////////////////////////////////
// TODO This should not happen in the action, we should be able to
// generate the default qlconfig from the CLI
// DO NOT COMMIT THIS
const defaultQlConfig = {
registryKind: "docker",
registries: [
{
url: "https://ghcr.io/v2/",
packages: "*",
},
],
};
fs.mkdirSync(path.join(os.homedir(), ".codeql"));
fs.writeFileSync(
path.join(os.homedir(), ".codeql", "qlconfig.yml"),
yaml.safeDump(defaultQlConfig),
"utf8"
);
////////////////////////////////
} catch (e) { } catch (e) {
core.setFailed(e.message); core.setFailed(e.message);
console.log(e); console.log(e);