From 7f7c6b53b88f301d274540913f1f8f2676c6bd93 Mon Sep 17 00:00:00 2001 From: Luke Tomlinson Date: Thu, 6 May 2021 15:44:16 -0400 Subject: [PATCH 1/3] Export isExplicitVersion and evaluateVersions --- packages/tool-cache/src/tool-cache.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/tool-cache/src/tool-cache.ts b/packages/tool-cache/src/tool-cache.ts index c271d43050..e2b06e058a 100644 --- a/packages/tool-cache/src/tool-cache.ts +++ b/packages/tool-cache/src/tool-cache.ts @@ -472,9 +472,9 @@ export function find( arch = arch || os.arch() // attempt to resolve an explicit version - if (!_isExplicitVersion(versionSpec)) { + if (!isExplicitVersion(versionSpec)) { const localVersions: string[] = findAllVersions(toolName, arch) - const match = _evaluateVersions(localVersions, versionSpec) + const match = evaluateVersions(localVersions, versionSpec) versionSpec = match } @@ -514,7 +514,7 @@ export function findAllVersions(toolName: string, arch?: string): string[] { if (fs.existsSync(toolPath)) { const children: string[] = fs.readdirSync(toolPath) for (const child of children) { - if (_isExplicitVersion(child)) { + if (isExplicitVersion(child)) { const fullPath = path.join(toolPath, child, arch || '') if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { versions.push(child) @@ -652,7 +652,7 @@ function _completeToolPath(tool: string, version: string, arch?: string): void { core.debug('finished caching tool') } -function _isExplicitVersion(versionSpec: string): boolean { +export function isExplicitVersion(versionSpec: string): boolean { const c = semver.clean(versionSpec) || '' core.debug(`isExplicit: ${c}`) @@ -662,7 +662,7 @@ function _isExplicitVersion(versionSpec: string): boolean { return valid } -function _evaluateVersions(versions: string[], versionSpec: string): string { +export function evaluateVersions(versions: string[], versionSpec: string): string { let version = '' core.debug(`evaluating ${versions.length} versions`) versions = versions.sort((a, b) => { From 33c94421b677a9946f3eafa4bff2e936d62d2f4a Mon Sep 17 00:00:00 2001 From: Luke Tomlinson Date: Thu, 6 May 2021 15:55:00 -0400 Subject: [PATCH 2/3] Lint --- packages/tool-cache/src/tool-cache.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/tool-cache/src/tool-cache.ts b/packages/tool-cache/src/tool-cache.ts index e2b06e058a..40b2ab22d2 100644 --- a/packages/tool-cache/src/tool-cache.ts +++ b/packages/tool-cache/src/tool-cache.ts @@ -662,7 +662,10 @@ export function isExplicitVersion(versionSpec: string): boolean { return valid } -export function evaluateVersions(versions: string[], versionSpec: string): string { +export function evaluateVersions( + versions: string[], + versionSpec: string +): string { let version = '' core.debug(`evaluating ${versions.length} versions`) versions = versions.sort((a, b) => { From 5248891897e5d7a832930f152356e2bd3658ca83 Mon Sep 17 00:00:00 2001 From: Luke Tomlinson Date: Thu, 6 May 2021 16:04:07 -0400 Subject: [PATCH 3/3] Add docs --- packages/tool-cache/src/tool-cache.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/tool-cache/src/tool-cache.ts b/packages/tool-cache/src/tool-cache.ts index 40b2ab22d2..e9696f4eaf 100644 --- a/packages/tool-cache/src/tool-cache.ts +++ b/packages/tool-cache/src/tool-cache.ts @@ -652,6 +652,11 @@ function _completeToolPath(tool: string, version: string, arch?: string): void { core.debug('finished caching tool') } +/** + * Check if version string is explicit + * + * @param versionSpec version string to check + */ export function isExplicitVersion(versionSpec: string): boolean { const c = semver.clean(versionSpec) || '' core.debug(`isExplicit: ${c}`) @@ -662,6 +667,13 @@ export function isExplicitVersion(versionSpec: string): boolean { return valid } +/** + * Get the highest satisfiying semantic version in `versions` which satisfies `versionSpec` + * + * @param versions array of versions to evaluate + * @param versionSpec semantic version spec to satisfy + */ + export function evaluateVersions( versions: string[], versionSpec: string