From 409b7dfb5b1e01a9b9e3a93bba2e50b37ab00013 Mon Sep 17 00:00:00 2001
From: Danny McCormick <damccorm@microsoft.com>
Date: Mon, 5 Aug 2019 11:44:04 -0400
Subject: [PATCH] Update

---
 lib/authutil.js | 45 ++++++++++++++++++++++++++-------------------
 src/authutil.ts | 42 ++++++++++++++++--------------------------
 2 files changed, 42 insertions(+), 45 deletions(-)

diff --git a/lib/authutil.js b/lib/authutil.js
index 3ce05bbf..bd7e222c 100644
--- a/lib/authutil.js
+++ b/lib/authutil.js
@@ -1,4 +1,12 @@
 "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 = {};
@@ -7,27 +15,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
     return result;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-const fs = __importStar(require("fs"));
-const os = __importStar(require("os"));
 const path = __importStar(require("path"));
+const exec = __importStar(require("@actions/exec"));
 function configAuth(registryUrl) {
-    let npmrc = path.resolve(process.cwd(), '.npmrc');
-    let yarnrc = path.resolve(process.cwd(), '.yarnrc');
-    writeRegistryToFile(registryUrl, npmrc, 'NPM_TOKEN');
-    writeRegistryToFile(registryUrl, yarnrc, 'YARN_TOKEN');
+    return __awaiter(this, void 0, void 0, function* () {
+        let npmrc = path.resolve(process.cwd(), '.npmrc');
+        let yarnrc = path.resolve(process.cwd(), '.yarnrc');
+        writeRegistryToFile(registryUrl, 'npm', 'NPM_TOKEN');
+        writeRegistryToFile(registryUrl, 'yarn', 'YARN_TOKEN');
+    });
 }
 exports.configAuth = configAuth;
-function writeRegistryToFile(registryUrl, fileLocation, authTokenName) {
-    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=${' + authTokenName + '}';
-    fs.writeFileSync(fileLocation, newContents);
+function writeRegistryToFile(registryUrl, packageManager, authTokenName) {
+    return __awaiter(this, void 0, void 0, function* () {
+        yield exec.exec(`${packageManager} config set registry=${registryUrl}`);
+        yield exec.exec(`${packageManager} config set always-auth=true`);
+        yield exec.exec(packageManager +
+            ' config set ' +
+            registryUrl.replace(/(^\w+:|^)/, '') +
+            ':_authToken ${' +
+            authTokenName +
+            '}');
+    });
 }
diff --git a/src/authutil.ts b/src/authutil.ts
index baa21c9d..2a6d52c8 100644
--- a/src/authutil.ts
+++ b/src/authutil.ts
@@ -1,39 +1,29 @@
 import * as fs from 'fs';
 import * as os from 'os';
 import * as path from 'path';
+import * as exec from '@actions/exec';
 
-export function configAuth(registryUrl: string) {
+export async function configAuth(registryUrl: string) {
   let npmrc: string = path.resolve(process.cwd(), '.npmrc');
   let yarnrc: string = path.resolve(process.cwd(), '.yarnrc');
 
-  writeRegistryToFile(registryUrl, npmrc, 'NPM_TOKEN');
-  writeRegistryToFile(registryUrl, yarnrc, 'YARN_TOKEN');
+  writeRegistryToFile(registryUrl, 'npm', 'NPM_TOKEN');
+  writeRegistryToFile(registryUrl, 'yarn', 'YARN_TOKEN');
 }
 
-function writeRegistryToFile(
+async function writeRegistryToFile(
   registryUrl: string,
-  fileLocation: string,
+  packageManager: string,
   authTokenName: string
 ) {
-  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);
+  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 +
+      '}'
+  );
 }