mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-04 12:03:34 +00:00 
			
		
		
		
	change evaluateVersions
This commit is contained in:
		
							parent
							
								
									0d35e2c938
								
							
						
					
					
						commit
						9eba46a481
					
				
							
								
								
									
										71
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							@ -73229,7 +73229,8 @@ class BaseDistribution {
 | 
				
			|||||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
            let toolPath = this.findVersionInHoostedToolCacheDirectory();
 | 
					            let toolPath = this.findVersionInHoostedToolCacheDirectory();
 | 
				
			||||||
            if (!toolPath) {
 | 
					            if (!toolPath) {
 | 
				
			||||||
                const versions = yield this.getNodejsVersions();
 | 
					                const nodeVersions = yield this.getNodejsVersions();
 | 
				
			||||||
 | 
					                const versions = this.filterVersions(nodeVersions);
 | 
				
			||||||
                const evaluatedVersion = this.evaluateVersions(versions);
 | 
					                const evaluatedVersion = this.evaluateVersions(versions);
 | 
				
			||||||
                const toolName = this.getNodejsDistInfo(evaluatedVersion, this.osPlat);
 | 
					                const toolName = this.getNodejsDistInfo(evaluatedVersion, this.osPlat);
 | 
				
			||||||
                toolPath = yield this.downloadNodejs(toolName);
 | 
					                toolPath = yield this.downloadNodejs(toolName);
 | 
				
			||||||
@ -73474,17 +73475,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
					Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
				
			||||||
const core = __importStar(__nccwpck_require__(2186));
 | 
					const core = __importStar(__nccwpck_require__(2186));
 | 
				
			||||||
 | 
					const tc = __importStar(__nccwpck_require__(7784));
 | 
				
			||||||
const semver_1 = __importDefault(__nccwpck_require__(5911));
 | 
					const semver_1 = __importDefault(__nccwpck_require__(5911));
 | 
				
			||||||
const base_distribution_1 = __importDefault(__nccwpck_require__(8653));
 | 
					const base_distribution_1 = __importDefault(__nccwpck_require__(8653));
 | 
				
			||||||
class NightlyNodejs extends base_distribution_1.default {
 | 
					class NightlyNodejs extends base_distribution_1.default {
 | 
				
			||||||
    constructor(nodeInfo) {
 | 
					    constructor(nodeInfo) {
 | 
				
			||||||
        super(nodeInfo);
 | 
					        super(nodeInfo);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    evaluateVersions(nodeVersions) {
 | 
					    findVersionInHoostedToolCacheDirectory() {
 | 
				
			||||||
 | 
					        const localVersionPaths = tc.findAllVersions('node', this.nodeInfo.arch);
 | 
				
			||||||
 | 
					        const localVersion = this.evaluateVersions(localVersionPaths);
 | 
				
			||||||
 | 
					        const toolPath = tc.find('node', localVersion, this.nodeInfo.arch);
 | 
				
			||||||
 | 
					        return toolPath;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    evaluateVersions(versions) {
 | 
				
			||||||
        let version = '';
 | 
					        let version = '';
 | 
				
			||||||
        const versions = this.filterVersions(nodeVersions);
 | 
					 | 
				
			||||||
        core.debug(`evaluating ${versions.length} versions`);
 | 
					        core.debug(`evaluating ${versions.length} versions`);
 | 
				
			||||||
        const { includePrerelease, range } = this.createRangePreRelease(this.nodeInfo.versionSpec, '-nightly');
 | 
					        const { includePrerelease, range } = this.createRangePreRelease(this.nodeInfo.versionSpec, 'nightly');
 | 
				
			||||||
        for (let i = 0; i < versions.length; i++) {
 | 
					        for (let i = 0; i < versions.length; i++) {
 | 
				
			||||||
            const potential = versions[i];
 | 
					            const potential = versions[i];
 | 
				
			||||||
            const satisfied = semver_1.default.satisfies(potential.replace('nightly', 'nightly.'), range, {
 | 
					            const satisfied = semver_1.default.satisfies(potential.replace('nightly', 'nightly.'), range, {
 | 
				
			||||||
@ -73519,11 +73526,11 @@ class NightlyNodejs extends base_distribution_1.default {
 | 
				
			|||||||
        const [raw, prerelease] = this.splitVersionSpec(versionSpec);
 | 
					        const [raw, prerelease] = this.splitVersionSpec(versionSpec);
 | 
				
			||||||
        const isValidVersion = semver_1.default.valid(raw);
 | 
					        const isValidVersion = semver_1.default.valid(raw);
 | 
				
			||||||
        const rawVersion = (isValidVersion ? raw : semver_1.default.coerce(raw));
 | 
					        const rawVersion = (isValidVersion ? raw : semver_1.default.coerce(raw));
 | 
				
			||||||
        if (`-${prerelease}` !== distribution) {
 | 
					        if (prerelease !== distribution) {
 | 
				
			||||||
            range = `${rawVersion}${`-${prerelease}`.replace(distribution, `${distribution}.`)}`;
 | 
					            range = `${rawVersion}-${prerelease.replace(distribution, `${distribution}.`)}`;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            range = `${semver_1.default.validRange(`^${rawVersion}${distribution}`)}-0`;
 | 
					            range = `${semver_1.default.validRange(`^${rawVersion}-${distribution}`)}-0`;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return { range, includePrerelease: !isValidVersion };
 | 
					        return { range, includePrerelease: !isValidVersion };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -73571,41 +73578,6 @@ class OfficialBuilds extends base_distribution_1.default {
 | 
				
			|||||||
    constructor(nodeInfo) {
 | 
					    constructor(nodeInfo) {
 | 
				
			||||||
        super(nodeInfo);
 | 
					        super(nodeInfo);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    queryDistForMatch(versionSpec, arch = os_1.default.arch(), nodeVersions) {
 | 
					 | 
				
			||||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
					 | 
				
			||||||
            let osPlat = os_1.default.platform();
 | 
					 | 
				
			||||||
            let osArch = this.translateArchToDistUrl(arch);
 | 
					 | 
				
			||||||
            // node offers a json list of versions
 | 
					 | 
				
			||||||
            let dataFileName;
 | 
					 | 
				
			||||||
            switch (osPlat) {
 | 
					 | 
				
			||||||
                case 'linux':
 | 
					 | 
				
			||||||
                    dataFileName = `linux-${osArch}`;
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case 'darwin':
 | 
					 | 
				
			||||||
                    dataFileName = `osx-${osArch}-tar`;
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case 'win32':
 | 
					 | 
				
			||||||
                    dataFileName = `win-${osArch}-exe`;
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                default:
 | 
					 | 
				
			||||||
                    throw new Error(`Unexpected OS '${osPlat}'`);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (this.isLatestSyntax(versionSpec)) {
 | 
					 | 
				
			||||||
                core.info(`getting latest node version...`);
 | 
					 | 
				
			||||||
                return nodeVersions[0].version;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            const versions = [];
 | 
					 | 
				
			||||||
            nodeVersions.forEach((nodeVersion) => {
 | 
					 | 
				
			||||||
                // ensure this version supports your os and platform
 | 
					 | 
				
			||||||
                if (nodeVersion.files.indexOf(dataFileName) >= 0) {
 | 
					 | 
				
			||||||
                    versions.push(nodeVersion.version);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
            // get the latest version that matches the version spec
 | 
					 | 
				
			||||||
            const version = this.evaluateVersions(nodeVersions);
 | 
					 | 
				
			||||||
            return version;
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    getNodeJsInfo() {
 | 
					    getNodeJsInfo() {
 | 
				
			||||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
            let manifest = [];
 | 
					            let manifest = [];
 | 
				
			||||||
@ -73618,7 +73590,8 @@ class OfficialBuilds extends base_distribution_1.default {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
 | 
					            if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
 | 
				
			||||||
                nodeVersions = yield this.getNodejsVersions();
 | 
					                nodeVersions = yield this.getNodejsVersions();
 | 
				
			||||||
                this.nodeInfo.versionSpec = yield this.queryDistForMatch(this.nodeInfo.versionSpec, this.nodeInfo.arch, nodeVersions);
 | 
					                const versions = this.filterVersions(nodeVersions);
 | 
				
			||||||
 | 
					                this.nodeInfo.versionSpec = this.evaluateVersions(versions);
 | 
				
			||||||
                core.info(`getting latest node version...`);
 | 
					                core.info(`getting latest node version...`);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            let toolPath = this.findVersionInHoostedToolCacheDirectory();
 | 
					            let toolPath = this.findVersionInHoostedToolCacheDirectory();
 | 
				
			||||||
@ -73645,7 +73618,8 @@ class OfficialBuilds extends base_distribution_1.default {
 | 
				
			|||||||
                    core.debug(err.stack);
 | 
					                    core.debug(err.stack);
 | 
				
			||||||
                    core.info('Falling back to download directly from Node');
 | 
					                    core.info('Falling back to download directly from Node');
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                const versions = yield this.getNodejsVersions();
 | 
					                const nodeVersions = yield this.getNodejsVersions();
 | 
				
			||||||
 | 
					                const versions = this.filterVersions(nodeVersions);
 | 
				
			||||||
                const evaluatedVersion = this.evaluateVersions(versions);
 | 
					                const evaluatedVersion = this.evaluateVersions(versions);
 | 
				
			||||||
                const toolName = this.getNodejsDistInfo(evaluatedVersion, this.osPlat);
 | 
					                const toolName = this.getNodejsDistInfo(evaluatedVersion, this.osPlat);
 | 
				
			||||||
                toolPath = yield this.downloadNodejs(toolName);
 | 
					                toolPath = yield this.downloadNodejs(toolName);
 | 
				
			||||||
@ -73656,9 +73630,8 @@ class OfficialBuilds extends base_distribution_1.default {
 | 
				
			|||||||
            core.addPath(toolPath);
 | 
					            core.addPath(toolPath);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    evaluateVersions(nodeVersions) {
 | 
					    evaluateVersions(versions) {
 | 
				
			||||||
        let version = '';
 | 
					        let version = '';
 | 
				
			||||||
        const versions = this.filterVersions(nodeVersions);
 | 
					 | 
				
			||||||
        if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
 | 
					        if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
 | 
				
			||||||
            core.info(`getting latest node version...`);
 | 
					            core.info(`getting latest node version...`);
 | 
				
			||||||
            return versions[0];
 | 
					            return versions[0];
 | 
				
			||||||
@ -73790,9 +73763,8 @@ class RcBuild extends base_distribution_1.default {
 | 
				
			|||||||
            return response.result || [];
 | 
					            return response.result || [];
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    evaluateVersions(nodeVersions) {
 | 
					    evaluateVersions(versions) {
 | 
				
			||||||
        let version = '';
 | 
					        let version = '';
 | 
				
			||||||
        const versions = this.filterVersions(nodeVersions);
 | 
					 | 
				
			||||||
        core.debug(`evaluating ${versions.length} versions`);
 | 
					        core.debug(`evaluating ${versions.length} versions`);
 | 
				
			||||||
        for (let i = 0; i < versions.length; i++) {
 | 
					        for (let i = 0; i < versions.length; i++) {
 | 
				
			||||||
            const potential = versions[i];
 | 
					            const potential = versions[i];
 | 
				
			||||||
@ -73854,9 +73826,8 @@ class CanaryBuild extends base_distribution_1.default {
 | 
				
			|||||||
    getDistributionUrl() {
 | 
					    getDistributionUrl() {
 | 
				
			||||||
        return 'https://nodejs.org/download/v8-canary';
 | 
					        return 'https://nodejs.org/download/v8-canary';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    evaluateVersions(nodeVersions) {
 | 
					    evaluateVersions(versions) {
 | 
				
			||||||
        let version = '';
 | 
					        let version = '';
 | 
				
			||||||
        const versions = this.filterVersions(nodeVersions);
 | 
					 | 
				
			||||||
        core.debug(`evaluating ${versions.length} versions`);
 | 
					        core.debug(`evaluating ${versions.length} versions`);
 | 
				
			||||||
        const { includePrerelease, range } = this.createRangePreRelease(this.nodeInfo.versionSpec, 'v8-canary');
 | 
					        const { includePrerelease, range } = this.createRangePreRelease(this.nodeInfo.versionSpec, 'v8-canary');
 | 
				
			||||||
        for (let i = 0; i < versions.length; i++) {
 | 
					        for (let i = 0; i < versions.length; i++) {
 | 
				
			||||||
 | 
				
			|||||||
@ -25,12 +25,13 @@ export default abstract class BaseDistribution {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  protected abstract getDistributionUrl(): string;
 | 
					  protected abstract getDistributionUrl(): string;
 | 
				
			||||||
  protected abstract getNodejsVersions(): Promise<INodeVersion[]>;
 | 
					  protected abstract getNodejsVersions(): Promise<INodeVersion[]>;
 | 
				
			||||||
  protected abstract evaluateVersions(nodeVersions: INodeVersion[]): string;
 | 
					  protected abstract evaluateVersions(nodeVersions: string[]): string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public async getNodeJsInfo() {
 | 
					  public async getNodeJsInfo() {
 | 
				
			||||||
    let toolPath = this.findVersionInHoostedToolCacheDirectory();
 | 
					    let toolPath = this.findVersionInHoostedToolCacheDirectory();
 | 
				
			||||||
    if (!toolPath) {
 | 
					    if (!toolPath) {
 | 
				
			||||||
      const versions = await this.getNodejsVersions();
 | 
					      const nodeVersions = await this.getNodejsVersions();
 | 
				
			||||||
 | 
					      const versions = this.filterVersions(nodeVersions);
 | 
				
			||||||
      const evaluatedVersion = this.evaluateVersions(versions);
 | 
					      const evaluatedVersion = this.evaluateVersions(versions);
 | 
				
			||||||
      const toolName = this.getNodejsDistInfo(evaluatedVersion, this.osPlat);
 | 
					      const toolName = this.getNodejsDistInfo(evaluatedVersion, this.osPlat);
 | 
				
			||||||
      toolPath = await this.downloadNodejs(toolName);
 | 
					      toolPath = await this.downloadNodejs(toolName);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,5 @@
 | 
				
			|||||||
import * as core from '@actions/core';
 | 
					import * as core from '@actions/core';
 | 
				
			||||||
 | 
					import * as tc from '@actions/tool-cache';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import semver from 'semver';
 | 
					import semver from 'semver';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -10,15 +11,22 @@ export default class NightlyNodejs extends BaseDistribution {
 | 
				
			|||||||
    super(nodeInfo);
 | 
					    super(nodeInfo);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected evaluateVersions(nodeVersions: INodeVersion[]): string {
 | 
					  protected findVersionInHoostedToolCacheDirectory(): string {
 | 
				
			||||||
 | 
					    const localVersionPaths = tc.findAllVersions('node', this.nodeInfo.arch);
 | 
				
			||||||
 | 
					    const localVersion = this.evaluateVersions(localVersionPaths);
 | 
				
			||||||
 | 
					    const toolPath = tc.find('node', localVersion, this.nodeInfo.arch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return toolPath;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  protected evaluateVersions(versions: string[]): string {
 | 
				
			||||||
    let version = '';
 | 
					    let version = '';
 | 
				
			||||||
    const versions = this.filterVersions(nodeVersions);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    core.debug(`evaluating ${versions.length} versions`);
 | 
					    core.debug(`evaluating ${versions.length} versions`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const {includePrerelease, range} = this.createRangePreRelease(
 | 
					    const {includePrerelease, range} = this.createRangePreRelease(
 | 
				
			||||||
      this.nodeInfo.versionSpec,
 | 
					      this.nodeInfo.versionSpec,
 | 
				
			||||||
      '-nightly'
 | 
					      'nightly'
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (let i = 0; i < versions.length; i++) {
 | 
					    for (let i = 0; i < versions.length; i++) {
 | 
				
			||||||
@ -57,25 +65,28 @@ export default class NightlyNodejs extends BaseDistribution {
 | 
				
			|||||||
    return response.result || [];
 | 
					    return response.result || [];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  createRangePreRelease(versionSpec: string, distribution: string = '') {
 | 
					  protected createRangePreRelease(
 | 
				
			||||||
    let range: string | undefined;
 | 
					    versionSpec: string,
 | 
				
			||||||
 | 
					    distribution: string = ''
 | 
				
			||||||
 | 
					  ) {
 | 
				
			||||||
 | 
					    let range: string;
 | 
				
			||||||
    const [raw, prerelease] = this.splitVersionSpec(versionSpec);
 | 
					    const [raw, prerelease] = this.splitVersionSpec(versionSpec);
 | 
				
			||||||
    const isValidVersion = semver.valid(raw);
 | 
					    const isValidVersion = semver.valid(raw);
 | 
				
			||||||
    const rawVersion = (isValidVersion ? raw : semver.coerce(raw))!;
 | 
					    const rawVersion = (isValidVersion ? raw : semver.coerce(raw))!;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (`-${prerelease}` !== distribution) {
 | 
					    if (prerelease !== distribution) {
 | 
				
			||||||
      range = `${rawVersion}${`-${prerelease}`.replace(
 | 
					      range = `${rawVersion}-${prerelease.replace(
 | 
				
			||||||
        distribution,
 | 
					        distribution,
 | 
				
			||||||
        `${distribution}.`
 | 
					        `${distribution}.`
 | 
				
			||||||
      )}`;
 | 
					      )}`;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      range = `${semver.validRange(`^${rawVersion}${distribution}`)}-0`;
 | 
					      range = `${semver.validRange(`^${rawVersion}-${distribution}`)}-0`;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return {range, includePrerelease: !isValidVersion};
 | 
					    return {range, includePrerelease: !isValidVersion};
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  splitVersionSpec(versionSpec: string) {
 | 
					  protected splitVersionSpec(versionSpec: string) {
 | 
				
			||||||
    return versionSpec.split(/-(.*)/s);
 | 
					    return versionSpec.split(/-(.*)/s);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -17,48 +17,6 @@ export default class OfficialBuilds extends BaseDistribution {
 | 
				
			|||||||
    super(nodeInfo);
 | 
					    super(nodeInfo);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected async queryDistForMatch(
 | 
					 | 
				
			||||||
    versionSpec: string,
 | 
					 | 
				
			||||||
    arch: string = os.arch(),
 | 
					 | 
				
			||||||
    nodeVersions: INodeVersion[]
 | 
					 | 
				
			||||||
  ): Promise<string> {
 | 
					 | 
				
			||||||
    let osPlat: string = os.platform();
 | 
					 | 
				
			||||||
    let osArch: string = this.translateArchToDistUrl(arch);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // node offers a json list of versions
 | 
					 | 
				
			||||||
    let dataFileName: string;
 | 
					 | 
				
			||||||
    switch (osPlat) {
 | 
					 | 
				
			||||||
      case 'linux':
 | 
					 | 
				
			||||||
        dataFileName = `linux-${osArch}`;
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
      case 'darwin':
 | 
					 | 
				
			||||||
        dataFileName = `osx-${osArch}-tar`;
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
      case 'win32':
 | 
					 | 
				
			||||||
        dataFileName = `win-${osArch}-exe`;
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
      default:
 | 
					 | 
				
			||||||
        throw new Error(`Unexpected OS '${osPlat}'`);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (this.isLatestSyntax(versionSpec)) {
 | 
					 | 
				
			||||||
      core.info(`getting latest node version...`);
 | 
					 | 
				
			||||||
      return nodeVersions[0].version;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const versions: string[] = [];
 | 
					 | 
				
			||||||
    nodeVersions.forEach((nodeVersion: INodeVersion) => {
 | 
					 | 
				
			||||||
      // ensure this version supports your os and platform
 | 
					 | 
				
			||||||
      if (nodeVersion.files.indexOf(dataFileName) >= 0) {
 | 
					 | 
				
			||||||
        versions.push(nodeVersion.version);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // get the latest version that matches the version spec
 | 
					 | 
				
			||||||
    const version = this.evaluateVersions(nodeVersions);
 | 
					 | 
				
			||||||
    return version;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  public async getNodeJsInfo() {
 | 
					  public async getNodeJsInfo() {
 | 
				
			||||||
    let manifest: tc.IToolRelease[] = [];
 | 
					    let manifest: tc.IToolRelease[] = [];
 | 
				
			||||||
    let nodeVersions: INodeVersion[] = [];
 | 
					    let nodeVersions: INodeVersion[] = [];
 | 
				
			||||||
@ -77,11 +35,9 @@ export default class OfficialBuilds extends BaseDistribution {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
 | 
					    if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
 | 
				
			||||||
      nodeVersions = await this.getNodejsVersions();
 | 
					      nodeVersions = await this.getNodejsVersions();
 | 
				
			||||||
      this.nodeInfo.versionSpec = await this.queryDistForMatch(
 | 
					      const versions = this.filterVersions(nodeVersions);
 | 
				
			||||||
        this.nodeInfo.versionSpec,
 | 
					      this.nodeInfo.versionSpec = this.evaluateVersions(versions);
 | 
				
			||||||
        this.nodeInfo.arch,
 | 
					
 | 
				
			||||||
        nodeVersions
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      core.info(`getting latest node version...`);
 | 
					      core.info(`getting latest node version...`);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -126,7 +82,8 @@ export default class OfficialBuilds extends BaseDistribution {
 | 
				
			|||||||
        core.info('Falling back to download directly from Node');
 | 
					        core.info('Falling back to download directly from Node');
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const versions = await this.getNodejsVersions();
 | 
					      const nodeVersions = await this.getNodejsVersions();
 | 
				
			||||||
 | 
					      const versions = this.filterVersions(nodeVersions);
 | 
				
			||||||
      const evaluatedVersion = this.evaluateVersions(versions);
 | 
					      const evaluatedVersion = this.evaluateVersions(versions);
 | 
				
			||||||
      const toolName = this.getNodejsDistInfo(evaluatedVersion, this.osPlat);
 | 
					      const toolName = this.getNodejsDistInfo(evaluatedVersion, this.osPlat);
 | 
				
			||||||
      toolPath = await this.downloadNodejs(toolName);
 | 
					      toolPath = await this.downloadNodejs(toolName);
 | 
				
			||||||
@ -139,9 +96,8 @@ export default class OfficialBuilds extends BaseDistribution {
 | 
				
			|||||||
    core.addPath(toolPath);
 | 
					    core.addPath(toolPath);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected evaluateVersions(nodeVersions: INodeVersion[]): string {
 | 
					  protected evaluateVersions(versions: string[]): string {
 | 
				
			||||||
    let version = '';
 | 
					    let version = '';
 | 
				
			||||||
    const versions = this.filterVersions(nodeVersions);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
 | 
					    if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
 | 
				
			||||||
      core.info(`getting latest node version...`);
 | 
					      core.info(`getting latest node version...`);
 | 
				
			||||||
 | 
				
			|||||||
@ -18,9 +18,9 @@ export default class RcBuild extends BaseDistribution {
 | 
				
			|||||||
    return response.result || [];
 | 
					    return response.result || [];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected evaluateVersions(nodeVersions: INodeVersion[]): string {
 | 
					  protected evaluateVersions(versions: string[]): string {
 | 
				
			||||||
    let version = '';
 | 
					    let version = '';
 | 
				
			||||||
    const versions = this.filterVersions(nodeVersions);
 | 
					
 | 
				
			||||||
    core.debug(`evaluating ${versions.length} versions`);
 | 
					    core.debug(`evaluating ${versions.length} versions`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (let i = 0; i < versions.length; i++) {
 | 
					    for (let i = 0; i < versions.length; i++) {
 | 
				
			||||||
 | 
				
			|||||||
@ -14,9 +14,8 @@ export default class CanaryBuild extends BaseDistribution {
 | 
				
			|||||||
    return 'https://nodejs.org/download/v8-canary';
 | 
					    return 'https://nodejs.org/download/v8-canary';
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected evaluateVersions(nodeVersions: INodeVersion[]): string {
 | 
					  protected evaluateVersions(versions: string[]): string {
 | 
				
			||||||
    let version = '';
 | 
					    let version = '';
 | 
				
			||||||
    const versions = this.filterVersions(nodeVersions);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    core.debug(`evaluating ${versions.length} versions`);
 | 
					    core.debug(`evaluating ${versions.length} versions`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user