mirror of https://github.com/actions/toolkit
Export findVersions() (#14)
* Export findVersions() * Rename `findVersions()` to `findAllVersions()`pull/20/head
parent
71a9b2d3ed
commit
e3317c6632
|
@ -330,7 +330,7 @@ export async function cacheFile(
|
|||
}
|
||||
|
||||
/**
|
||||
* finds the path to a tool in the local installed tool cache
|
||||
* Finds the path to a tool version in the local installed tool cache
|
||||
*
|
||||
* @param toolName name of the tool
|
||||
* @param versionSpec version of the tool
|
||||
|
@ -353,7 +353,7 @@ export function find(
|
|||
|
||||
// attempt to resolve an explicit version
|
||||
if (!_isExplicitVersion(versionSpec)) {
|
||||
const localVersions: string[] = _findLocalToolVersions(toolName, arch)
|
||||
const localVersions: string[] = findAllVersions(toolName, arch)
|
||||
const match = _evaluateVersions(localVersions, versionSpec)
|
||||
versionSpec = match
|
||||
}
|
||||
|
@ -374,6 +374,33 @@ export function find(
|
|||
return toolPath
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the paths to all versions of a tool that are installed in the local tool cache
|
||||
*
|
||||
* @param toolName name of the tool
|
||||
* @param arch optional arch. defaults to arch of computer
|
||||
*/
|
||||
export function findAllVersions(toolName: string, arch?: string): string[] {
|
||||
const versions: string[] = []
|
||||
|
||||
arch = arch || os.arch()
|
||||
const toolPath = path.join(cacheRoot, toolName)
|
||||
|
||||
if (fs.existsSync(toolPath)) {
|
||||
const children: string[] = fs.readdirSync(toolPath)
|
||||
for (const child of children) {
|
||||
if (_isExplicitVersion(child)) {
|
||||
const fullPath = path.join(toolPath, child, arch || '')
|
||||
if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) {
|
||||
versions.push(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return versions
|
||||
}
|
||||
|
||||
async function _createExtractFolder(dest?: string): Promise<string> {
|
||||
if (!dest) {
|
||||
// create a temp dir
|
||||
|
@ -450,24 +477,3 @@ function _evaluateVersions(versions: string[], versionSpec: string): string {
|
|||
|
||||
return version
|
||||
}
|
||||
|
||||
function _findLocalToolVersions(toolName: string, arch?: string): string[] {
|
||||
const versions: string[] = []
|
||||
|
||||
arch = arch || os.arch()
|
||||
const toolPath = path.join(cacheRoot, toolName)
|
||||
|
||||
if (fs.existsSync(toolPath)) {
|
||||
const children: string[] = fs.readdirSync(toolPath)
|
||||
for (const child of children) {
|
||||
if (_isExplicitVersion(child)) {
|
||||
const fullPath = path.join(toolPath, child, arch || '')
|
||||
if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) {
|
||||
versions.push(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return versions
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue