diff --git a/lib/runner.js b/lib/runner.js index fb39192ab..8b0492a4f 100644 --- a/lib/runner.js +++ b/lib/runner.js @@ -6,9 +6,13 @@ var __importStar = (this && this.__importStar) || function (mod) { result["default"] = mod; return result; }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const fs = __importStar(require("fs")); +const md5_1 = __importDefault(require("md5")); const os = __importStar(require("os")); const path = __importStar(require("path")); const analyze_1 = require("./analyze"); @@ -40,14 +44,16 @@ function parseGithubUrl(inputUrl) { } } function getTempDir(userInput) { - const tempDir = path.join(userInput || os.tmpdir(), 'codeql-runner-temp'); + const cwd = process.cwd(); + const cwdHash = md5_1.default(cwd); + const tempDir = path.join(userInput || process.cwd(), 'codeql-runner', cwdHash); if (!fs.existsSync(tempDir)) { fs.mkdirSync(tempDir, { recursive: true }); } return tempDir; } -function getToolsDir(userInput, tmpDir) { - const toolsDir = path.join(userInput || path.dirname(tmpDir), 'codeql-runner-tools'); +function getToolsDir(userInput) { + const toolsDir = userInput || path.join(os.homedir(), 'codeql-runner-tools'); if (!fs.existsSync(toolsDir)) { fs.mkdirSync(toolsDir, { recursive: true }); } @@ -64,13 +70,13 @@ program .option('--queries ', 'Comma-separated list of additional queries to run. By default, this overrides the same setting in a configuration file.') .option('--config-file ', 'Path to config file') .option('--codeql-path ', 'Path to a copy of the CodeQL CLI executable to use. Otherwise downloads a copy.') - .option('--temp-dir ', 'Directory to use for temporary files. Defaults to OS temp dir.') - .option('--tools-dir ', 'Directory to use for CodeQL tools and other files to store between runs. Defaults to same as temp dir.') + .option('--temp-dir ', 'Directory to use for temporary files. By default will use current working directory.') + .option('--tools-dir ', 'Directory to use for CodeQL tools and other files to store between runs. By default will use home directory.') .option('--checkout-path ', 'Checkout path (default: current working directory)') .action(async (cmd) => { try { const tempDir = getTempDir(cmd.tempDir); - const toolsDir = getToolsDir(cmd.toolsDir, tempDir); + const toolsDir = getToolsDir(cmd.toolsDir); // Wipe the temp dir fs.rmdirSync(tempDir, { recursive: true }); fs.mkdirSync(tempDir, { recursive: true }); @@ -124,7 +130,7 @@ program .command('autobuild') .description('Attempts to automatically build code') .requiredOption('--language ', 'The language to build') - .option('--temp-dir ', 'Directory to use for temporary files. Defaults to OS temp dir.') + .option('--temp-dir ', 'Directory to use for temporary files. By default will use current working directory.') .action(async (cmd) => { try { const language = languages_1.parseLanguage(cmd.language); @@ -150,7 +156,7 @@ program .option('--checkout-path ', 'Checkout path (default: current working directory)') .option('--no-upload', 'Do not upload results after analysis', false) .option('--output-dir ', 'Directory to output SARIF files to. By default will use temp directory.') - .option('--temp-dir ', 'Directory to use for temporary files. Defaults to OS temp dir.') + .option('--temp-dir ', 'Directory to use for temporary files. By default will use current working directory.') .action(async (cmd) => { try { const tempDir = getTempDir(cmd.tempDir); diff --git a/lib/runner.js.map b/lib/runner.js.map index 8a1a705fb..e162f0dee 100644 --- a/lib/runner.js.map +++ b/lib/runner.js.map @@ -1 +1 @@ -{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/runner.ts b/src/runner.ts index f4bc232af..6b658a600 100644 --- a/src/runner.ts +++ b/src/runner.ts @@ -1,5 +1,6 @@ import { Command } from 'commander'; import * as fs from 'fs'; +import md5 from 'md5'; import * as os from 'os'; import * as path from 'path'; @@ -38,15 +39,17 @@ function parseGithubUrl(inputUrl: string): string { } function getTempDir(userInput: string | undefined): string { - const tempDir = path.join(userInput || os.tmpdir(), 'codeql-runner-temp'); + const cwd = process.cwd(); + const cwdHash = md5(cwd); + const tempDir = path.join(userInput || process.cwd(), 'codeql-runner', cwdHash); if (!fs.existsSync(tempDir)) { fs.mkdirSync(tempDir, { recursive: true }); } return tempDir; } -function getToolsDir(userInput: string | undefined, tmpDir: string): string { - const toolsDir = path.join(userInput || path.dirname(tmpDir), 'codeql-runner-tools'); +function getToolsDir(userInput: string | undefined): string { + const toolsDir = userInput || path.join(os.homedir(), 'codeql-runner-tools'); if (!fs.existsSync(toolsDir)) { fs.mkdirSync(toolsDir, { recursive: true }); } @@ -78,13 +81,13 @@ program .option('--queries ', 'Comma-separated list of additional queries to run. By default, this overrides the same setting in a configuration file.') .option('--config-file ', 'Path to config file') .option('--codeql-path ', 'Path to a copy of the CodeQL CLI executable to use. Otherwise downloads a copy.') - .option('--temp-dir ', 'Directory to use for temporary files. Defaults to OS temp dir.') - .option('--tools-dir ', 'Directory to use for CodeQL tools and other files to store between runs. Defaults to same as temp dir.') + .option('--temp-dir ', 'Directory to use for temporary files. By default will use current working directory.') + .option('--tools-dir ', 'Directory to use for CodeQL tools and other files to store between runs. By default will use home directory.') .option('--checkout-path ', 'Checkout path (default: current working directory)') .action(async (cmd: InitArgs) => { try { const tempDir = getTempDir(cmd.tempDir); - const toolsDir = getToolsDir(cmd.toolsDir, tempDir); + const toolsDir = getToolsDir(cmd.toolsDir); // Wipe the temp dir fs.rmdirSync(tempDir, { recursive: true }); @@ -168,7 +171,7 @@ program .command('autobuild') .description('Attempts to automatically build code') .requiredOption('--language ', 'The language to build') - .option('--temp-dir ', 'Directory to use for temporary files. Defaults to OS temp dir.') + .option('--temp-dir ', 'Directory to use for temporary files. By default will use current working directory.') .action(async (cmd: AutobuildArgs) => { try { const language = parseLanguage(cmd.language); @@ -209,7 +212,7 @@ program .option('--checkout-path ', 'Checkout path (default: current working directory)') .option('--no-upload', 'Do not upload results after analysis', false) .option('--output-dir ', 'Directory to output SARIF files to. By default will use temp directory.') - .option('--temp-dir ', 'Directory to use for temporary files. Defaults to OS temp dir.') + .option('--temp-dir ', 'Directory to use for temporary files. By default will use current working directory.') .action(async (cmd: AnalyzeArgs) => { try { const tempDir = getTempDir(cmd.tempDir);