import * as core from '@actions/core'; import * as installer from './installer'; import * as auth from './authutil'; import * as path from 'path'; import {restoreCache} from './cache-restore'; import {URL} from 'url'; import os = require('os'); export async function run() { try { // // Version is optional. If supplied, install / use from the tool cache // If not supplied then task is still used to setup proxy, auth, etc... // let version = core.getInput('node-version'); if (!version) { version = core.getInput('version'); } let arch = core.getInput('architecture'); const cache = core.getInput('cache'); // if architecture supplied but node-version is not // if we don't throw a warning, the already installed x64 node will be used which is not probably what user meant. if (arch && !version) { core.warning( '`architecture` is provided but `node-version` is missing. In this configuration, the version/architecture of Node will not be changed. To fix this, provide `architecture` in combination with `node-version`' ); } if (!arch) { arch = os.arch(); } if (version) { let token = core.getInput('token'); let auth = !token || isGhes() ? undefined : `token ${token}`; let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE'; const checkLatest = (core.getInput('check-latest') || 'false').toUpperCase() === 'TRUE'; await installer.getNode(version, stable, checkLatest, auth, arch); } const registryUrl: string = core.getInput('registry-url'); const alwaysAuth: string = core.getInput('always-auth'); if (registryUrl) { auth.configAuthentication(registryUrl, alwaysAuth); } if (cache) { if (isGhes()) { throw new Error('Caching is not supported on GHES'); } await restoreCache(cache); } const matchersPath = path.join(__dirname, '../..', '.github'); core.info(`##[add-matcher]${path.join(matchersPath, 'tsc.json')}`); core.info( `##[add-matcher]${path.join(matchersPath, 'eslint-stylish.json')}` ); core.info( `##[add-matcher]${path.join(matchersPath, 'eslint-compact.json')}` ); } catch (error) { core.setFailed(error.message); } } function isGhes(): boolean { const ghUrl = new URL( process.env['GITHUB_SERVER_URL'] || 'https://github.com' ); return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; }