From 5e3159d960f15ec81b98b49195c00586a52ed3fe Mon Sep 17 00:00:00 2001 From: Jared Petersen Date: Mon, 11 May 2020 21:10:44 -0700 Subject: [PATCH] created separate util module --- __tests__/auth.test.ts | 7 ++-- __tests__/util.test.ts | 56 +++++++++++++++++++++++++++++++ dist/index.js | 76 +++++++++++++++++++++++++++++++----------- src/auth.ts | 3 +- src/installer.ts | 21 ++---------- src/util.ts | 24 +++++++++++++ 6 files changed, 145 insertions(+), 42 deletions(-) create mode 100644 __tests__/util.test.ts create mode 100644 src/util.ts diff --git a/__tests__/auth.test.ts b/__tests__/auth.test.ts index e7b4c032..58b1134b 100644 --- a/__tests__/auth.test.ts +++ b/__tests__/auth.test.ts @@ -17,18 +17,19 @@ jest.mock('@actions/exec', () => { }; }); +const tempDir = path.join(__dirname, 'runner', 'temp'); +process.env['RUNNER_TEMP'] = tempDir; + import * as auth from '../src/auth'; const m2Dir = path.join(__dirname, auth.M2_DIR); const settingsFile = path.join(m2Dir, auth.SETTINGS_FILE); -const tempDir = path.join(__dirname, 'runner', 'temp'); const privateKeyFile = path.join(tempDir, auth.PRIVATE_KEY_FILE); -process.env['RUNNER_TEMP'] = tempDir; - describe('auth tests', () => { beforeEach(async () => { await io.rmRF(m2Dir); + await io.mkdirP(tempDir); }, 300000); afterAll(async () => { diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts new file mode 100644 index 00000000..d7809b51 --- /dev/null +++ b/__tests__/util.test.ts @@ -0,0 +1,56 @@ +import path = require('path'); + +const env = process.env; + +describe('util tests', () => { + beforeEach(() => { + process.env = Object.assign({}, env); + Object.defineProperty(process, 'platform', {value: 'linux'}); + }); + + describe('getTempDir', () => { + it('gets temp dir using env', () => { + process.env['RUNNER_TEMP'] = 'defaulttmp' + const util = require('../src/util'); + + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(process.env['RUNNER_TEMP']); + }); + + it('gets temp dir for windows using userprofile', () => { + Object.defineProperty(process, 'platform', {value: 'win32'}); + process.env['USERPROFILE'] = 'winusertmp'; + const util = require('../src/util'); + + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(path.join(process.env['USERPROFILE'], 'actions', 'temp')); + }); + + it('gets temp dir for windows using c drive', () => { + Object.defineProperty(process, 'platform', {value: 'win32'}); + const util = require('../src/util'); + + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(path.join('C:\\', 'actions', 'temp')); + }); + + it('gets temp dir for mac', () => { + Object.defineProperty(process, 'platform', {value: 'darwin'}); + const util = require('../src/util'); + + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(path.join('/Users', 'actions', 'temp')); + }); + + it('gets temp dir for linux', () => { + const util = require('../src/util'); + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(path.join('/home', 'actions', 'temp')); + }); + }); +}); diff --git a/dist/index.js b/dist/index.js index b708bbe3..c879345f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2850,6 +2850,46 @@ function coerce (version, options) { } +/***/ }), + +/***/ 322: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = __importStar(__webpack_require__(622)); +function getTempDir() { + let tempDirectory = process.env['RUNNER_TEMP'] || ''; + if (!tempDirectory) { + let baseLocation; + const IS_WINDOWS = process.platform === 'win32'; + if (IS_WINDOWS) { + // On windows use the USERPROFILE env variable + baseLocation = process.env['USERPROFILE'] || 'C:\\'; + } + else { + if (process.platform === 'darwin') { + baseLocation = '/Users'; + } + else { + baseLocation = '/home'; + } + } + tempDirectory = path.join(baseLocation, 'actions', 'temp'); + } + return tempDirectory; +} +exports.getTempDir = getTempDir; + + /***/ }), /***/ 331: @@ -2880,9 +2920,11 @@ const path = __importStar(__webpack_require__(622)); const core = __importStar(__webpack_require__(470)); const io = __importStar(__webpack_require__(1)); const exec = __importStar(__webpack_require__(986)); +const util = __importStar(__webpack_require__(322)); exports.M2_DIR = '.m2'; -exports.TEMP_DIR = process.env['RUNNER_TEMP'] || ''; +exports.TEMP_DIR = util.getTempDir(); exports.SETTINGS_FILE = 'settings.xml'; +exports.KEYRING_FILE = 'temporary-keyring.gpg'; exports.PRIVATE_KEY_FILE = 'private-key.asc'; exports.DEFAULT_ID = 'github'; exports.DEFAULT_USERNAME = 'GITHUB_ACTOR'; @@ -2955,11 +2997,20 @@ function remove(path) { } function importGPG(gpgPrivateKey) { return __awaiter(this, void 0, void 0, function* () { + const temporaryKeyRingPath = path.join(exports.TEMP_DIR, exports.KEYRING_FILE); + const temporaryPrivateKeyPath = path.join(exports.TEMP_DIR, exports.PRIVATE_KEY_FILE); yield write(exports.TEMP_DIR, exports.PRIVATE_KEY_FILE, gpgPrivateKey); - yield exec.exec('gpg', ['--import', '--batch', exports.PRIVATE_KEY_FILE], { + yield exec.exec('gpg', [ + '--primary-keyring', + temporaryKeyRingPath, + '--import', + '--batch', + exports.PRIVATE_KEY_FILE + ], { cwd: exports.TEMP_DIR }); - yield remove(path.join(exports.TEMP_DIR, exports.PRIVATE_KEY_FILE)); + yield remove(temporaryKeyRingPath); + yield remove(temporaryPrivateKeyPath); }); } @@ -4672,7 +4723,6 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", { value: true }); -let tempDirectory = process.env['RUNNER_TEMP'] || ''; const core = __importStar(__webpack_require__(470)); const io = __importStar(__webpack_require__(1)); const exec = __importStar(__webpack_require__(986)); @@ -4681,23 +4731,9 @@ const tc = __importStar(__webpack_require__(533)); const fs = __importStar(__webpack_require__(747)); const path = __importStar(__webpack_require__(622)); const semver = __importStar(__webpack_require__(280)); +const util = __importStar(__webpack_require__(322)); +const tempDirectory = util.getTempDir(); const IS_WINDOWS = process.platform === 'win32'; -if (!tempDirectory) { - let baseLocation; - if (IS_WINDOWS) { - // On windows use the USERPROFILE env variable - baseLocation = process.env['USERPROFILE'] || 'C:\\'; - } - else { - if (process.platform === 'darwin') { - baseLocation = '/Users'; - } - else { - baseLocation = '/home'; - } - } - tempDirectory = path.join(baseLocation, 'actions', 'temp'); -} function getJava(version, arch, jdkFile, javaPackage) { return __awaiter(this, void 0, void 0, function* () { let toolPath = tc.find(javaPackage, version); diff --git a/src/auth.ts b/src/auth.ts index 6e6f2afa..e7978d55 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -4,9 +4,10 @@ import * as path from 'path'; import * as core from '@actions/core'; import * as io from '@actions/io'; import * as exec from '@actions/exec'; +import * as util from './util'; export const M2_DIR = '.m2'; -export const TEMP_DIR = process.env['RUNNER_TEMP'] || ''; +export const TEMP_DIR = util.getTempDir(); export const SETTINGS_FILE = 'settings.xml'; export const PRIVATE_KEY_FILE = 'private-key.asc'; diff --git a/src/installer.ts b/src/installer.ts index cce8fa3d..d7a44710 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -1,5 +1,3 @@ -let tempDirectory = process.env['RUNNER_TEMP'] || ''; - import * as core from '@actions/core'; import * as io from '@actions/io'; import * as exec from '@actions/exec'; @@ -8,23 +6,10 @@ import * as tc from '@actions/tool-cache'; import * as fs from 'fs'; import * as path from 'path'; import * as semver from 'semver'; +import * as util from './util'; -const IS_WINDOWS = process.platform === 'win32'; - -if (!tempDirectory) { - let baseLocation; - if (IS_WINDOWS) { - // On windows use the USERPROFILE env variable - baseLocation = process.env['USERPROFILE'] || 'C:\\'; - } else { - if (process.platform === 'darwin') { - baseLocation = '/Users'; - } else { - baseLocation = '/home'; - } - } - tempDirectory = path.join(baseLocation, 'actions', 'temp'); -} +const tempDirectory = util.getTempDir(); +const IS_WINDOWS = util.isWindows(); export async function getJava( version: string, diff --git a/src/util.ts b/src/util.ts new file mode 100644 index 00000000..a061593b --- /dev/null +++ b/src/util.ts @@ -0,0 +1,24 @@ +import * as path from 'path'; + +export function getTempDir() { + let tempDirectory = process.env.RUNNER_TEMP; + if (tempDirectory === undefined) { + let baseLocation; + if (isWindows()) { + // On windows use the USERPROFILE env variable + baseLocation = (process.env['USERPROFILE']) ? process.env['USERPROFILE'] : 'C:\\'; + } else { + if (process.platform === 'darwin') { + baseLocation = '/Users'; + } else { + baseLocation = '/home'; + } + } + tempDirectory = path.join(baseLocation, 'actions', 'temp'); + } + return tempDirectory; +} + +export function isWindows() { + return (process.platform === 'win32'); +} \ No newline at end of file