diff --git a/lib/authutil.js b/lib/authutil.js index 96839fc5..1000a91f 100644 --- a/lib/authutil.js +++ b/lib/authutil.js @@ -1,12 +1,4 @@ "use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; @@ -15,28 +7,38 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", { value: true }); -const core = __importStar(require("@actions/core")); +const fs = __importStar(require("fs")); +const os = __importStar(require("os")); const path = __importStar(require("path")); -const exec = __importStar(require("@actions/exec")); +const core = __importStar(require("@actions/core")); function configAuth(registryUrl) { - return __awaiter(this, void 0, void 0, function* () { - let npmrc = path.resolve(process.cwd(), '.npmrc'); - let yarnrc = path.resolve(process.cwd(), '.yarnrc'); - yield writeRegistryToFile(registryUrl, 'npm', 'NPM_TOKEN'); - // writeRegistryToFile(registryUrl, 'yarn', 'YARN_TOKEN'); - }); + let npmrc = path.resolve(process.cwd(), '.npmrc'); + let yarnrc = path.resolve(process.cwd(), '.yarnrc'); + writeRegistryToFile(registryUrl, npmrc, 'NPM_TOKEN'); + writeRegistryToFile(registryUrl, yarnrc, 'YARN_TOKEN'); } exports.configAuth = configAuth; -function writeRegistryToFile(registryUrl, packageManager, authTokenName) { - return __awaiter(this, void 0, void 0, function* () { - core.debug(`Setting up ${packageManager} auth`); - yield exec.exec(`${packageManager} config set registry=${registryUrl}`); - yield exec.exec(`${packageManager} config set always-auth=true`); - yield exec.exec(packageManager + - ' config set ' + +function writeRegistryToFile(registryUrl, fileLocation, authTokenName) { + core.debug(`Setting auth in ${fileLocation}`); + let newContents = ''; + if (fs.existsSync(fileLocation)) { + const curContents = fs.readFileSync(fileLocation, 'utf8'); + curContents.split(os.EOL).forEach((line) => { + // Add current contents unless they are setting the registry + if (!line.startsWith('registry')) { + newContents += line + os.EOL; + } + }); + } + newContents += + 'registry=' + + registryUrl + + os.EOL + + 'always-auth=true' + + os.EOL + registryUrl.replace(/(^\w+:|^)/, '') + - ':_authToken ${' + + ':_authToken=${' + authTokenName + - '}'); - }); + '}'; + fs.writeFileSync(fileLocation, newContents); } diff --git a/lib/setup-node.js b/lib/setup-node.js index 2ecfd685..26d716a4 100644 --- a/lib/setup-node.js +++ b/lib/setup-node.js @@ -33,7 +33,7 @@ function run() { } const registryUrl = core.getInput('registry-url'); if (registryUrl) { - yield auth.configAuth(registryUrl); + auth.configAuth(registryUrl); } // TODO: setup proxy from runner proxy config const matchersPath = path.join(__dirname, '..', '.github'); diff --git a/src/authutil.ts b/src/authutil.ts index 5e3ee6fa..503a3e14 100644 --- a/src/authutil.ts +++ b/src/authutil.ts @@ -1,29 +1,41 @@ -import * as core from '@actions/core'; +import * as fs from 'fs'; +import * as os from 'os'; import * as path from 'path'; -import * as exec from '@actions/exec'; +import * as core from '@actions/core'; -export async function configAuth(registryUrl: string) { +export function configAuth(registryUrl: string) { let npmrc: string = path.resolve(process.cwd(), '.npmrc'); let yarnrc: string = path.resolve(process.cwd(), '.yarnrc'); - await writeRegistryToFile(registryUrl, 'npm', 'NPM_TOKEN'); - // writeRegistryToFile(registryUrl, 'yarn', 'YARN_TOKEN'); + writeRegistryToFile(registryUrl, npmrc, 'NPM_TOKEN'); + writeRegistryToFile(registryUrl, yarnrc, 'YARN_TOKEN'); } -async function writeRegistryToFile( +function writeRegistryToFile( registryUrl: string, - packageManager: string, + fileLocation: string, authTokenName: string ) { - core.debug(`Setting up ${packageManager} auth`); - await exec.exec(`${packageManager} config set registry=${registryUrl}`); - await exec.exec(`${packageManager} config set always-auth=true`); - await exec.exec( - packageManager + - ' config set ' + - registryUrl.replace(/(^\w+:|^)/, '') + - ':_authToken ${' + - authTokenName + - '}' - ); + core.debug(`Setting auth in ${fileLocation}`); + let newContents = ''; + if (fs.existsSync(fileLocation)) { + const curContents = fs.readFileSync(fileLocation, 'utf8'); + curContents.split(os.EOL).forEach((line: string) => { + // Add current contents unless they are setting the registry + if (!line.startsWith('registry')) { + newContents += line + os.EOL; + } + }); + } + newContents += + 'registry=' + + registryUrl + + os.EOL + + 'always-auth=true' + + os.EOL + + registryUrl.replace(/(^\w+:|^)/, '') + + ':_authToken=${' + + authTokenName + + '}'; + fs.writeFileSync(fileLocation, newContents); } diff --git a/src/setup-node.ts b/src/setup-node.ts index c15c8cff..c0387861 100644 --- a/src/setup-node.ts +++ b/src/setup-node.ts @@ -17,7 +17,7 @@ async function run() { const registryUrl = core.getInput('registry-url'); if (registryUrl) { - await auth.configAuth(registryUrl); + auth.configAuth(registryUrl); } // TODO: setup proxy from runner proxy config