From 8f9fe012e3bebf45d4f8a479cd25ae74fd5f8d2d Mon Sep 17 00:00:00 2001
From: Uladzimir Havenchyk <havenchyk@gmail.com>
Date: Mon, 1 Aug 2022 11:57:36 +0300
Subject: [PATCH] Cleanup code

---
 dist/setup/index.js | 45 +++++++++++++++-----------------
 src/main.ts         | 62 ++++++++++++++++++---------------------------
 2 files changed, 45 insertions(+), 62 deletions(-)

diff --git a/dist/setup/index.js b/dist/setup/index.js
index 4548c94e..9fed4f3a 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -71898,35 +71898,30 @@ function resolveVersionInput() {
 function printEnvDetailsAndSetOutput() {
     return __awaiter(this, void 0, void 0, function* () {
         core.startGroup('Environment details');
-        // Output version of node is being used
+        const promises = ['node', 'npm', 'yarn'].map((tool) => __awaiter(this, void 0, void 0, function* () {
+            const output = yield getToolVersion(tool, ['--version']);
+            core.setOutput(`${tool}-version`, output);
+        }));
+        yield Promise.all(promises);
+        core.endGroup();
+    });
+}
+function getToolVersion(tool, options) {
+    return __awaiter(this, void 0, void 0, function* () {
         try {
-            const { stdout: installedNodeVersion } = yield exec.getExecOutput('node', ['--version'], { ignoreReturnCode: true, silent: true });
-            core.setOutput('node-version', installedNodeVersion.trim());
+            const { stdout, stderr, exitCode } = yield exec.getExecOutput(tool, options, {
+                ignoreReturnCode: true,
+                silent: true
+            });
+            if (exitCode > 0) {
+                core.warning(`[warning]${stderr}`);
+                return '';
+            }
+            return stdout;
         }
         catch (err) {
-            core.setOutput('node-version', '');
+            return '';
         }
-        try {
-            const { stdout: installedNpmVersion } = yield exec.getExecOutput('npm', ['--version'], {
-                ignoreReturnCode: true,
-                silent: true
-            });
-            core.setOutput('npm-version', installedNpmVersion.trim());
-        }
-        catch (_a) {
-            core.setOutput('npm-version', '');
-        }
-        try {
-            const { stdout: installedYarnVersion } = yield exec.getExecOutput('yarn', ['--version'], {
-                ignoreReturnCode: true,
-                silent: true
-            });
-            core.setOutput('yarn-version', installedYarnVersion.trim());
-        }
-        catch (_b) {
-            core.setOutput('yarn-version', '');
-        }
-        core.endGroup();
     });
 }
 
diff --git a/src/main.ts b/src/main.ts
index 2de9fa9c..8bb0257a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -101,44 +101,32 @@ function resolveVersionInput(): string {
 
 async function printEnvDetailsAndSetOutput() {
   core.startGroup('Environment details');
-  // Output version of node is being used
-  try {
-    const {stdout: installedNodeVersion} = await exec.getExecOutput(
-      'node',
-      ['--version'],
-      {ignoreReturnCode: true, silent: true}
-    );
-    core.setOutput('node-version', installedNodeVersion.trim());
-  } catch (err) {
-    core.setOutput('node-version', '');
-  }
-  try {
-    const {stdout: installedNpmVersion} = await exec.getExecOutput(
-      'npm',
-      ['--version'],
-      {
-        ignoreReturnCode: true,
-        silent: true
-      }
-    );
-    core.setOutput('npm-version', installedNpmVersion.trim());
-  } catch {
-    core.setOutput('npm-version', '');
-  }
 
-  try {
-    const {stdout: installedYarnVersion} = await exec.getExecOutput(
-      'yarn',
-      ['--version'],
-      {
-        ignoreReturnCode: true,
-        silent: true
-      }
-    );
-    core.setOutput('yarn-version', installedYarnVersion.trim());
-  } catch {
-    core.setOutput('yarn-version', '');
-  }
+  const promises = ['node', 'npm', 'yarn'].map(async tool => {
+    const output = await getToolVersion(tool, ['--version']);
+
+    core.setOutput(`${tool}-version`, output);
+  });
+
+  await Promise.all(promises);
 
   core.endGroup();
 }
+
+async function getToolVersion(tool: string, options: string[]) {
+  try {
+    const {stdout, stderr, exitCode} = await exec.getExecOutput(tool, options, {
+      ignoreReturnCode: true,
+      silent: true
+    });
+
+    if (exitCode > 0) {
+      core.warning(`[warning]${stderr}`);
+      return '';
+    }
+
+    return stdout;
+  } catch (err) {
+    return '';
+  }
+}