Permalink
Cannot retrieve contributors at this time
64 lines (59 sloc)
2.21 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
setup-python/src/setup-python.ts
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import * as core from '@actions/core'; | |
import * as finder from './find-python'; | |
import * as finderPyPy from './find-pypy'; | |
import * as path from 'path'; | |
import * as os from 'os'; | |
import {getCacheDistributor} from './cache-distributions/cache-factory'; | |
import {isCacheFeatureAvailable} from './utils'; | |
function isPyPyVersion(versionSpec: string) { | |
return versionSpec.startsWith('pypy-'); | |
} | |
async function cacheDependencies(cache: string, pythonVersion: string) { | |
const cacheDependencyPath = | |
core.getInput('cache-dependency-path') || undefined; | |
const cacheDistributor = getCacheDistributor( | |
cache, | |
pythonVersion, | |
cacheDependencyPath | |
); | |
await cacheDistributor.restoreCache(); | |
} | |
async function run() { | |
if (process.env.AGENT_TOOLSDIRECTORY?.trim()) { | |
core.debug( | |
`Python is expected to be installed into AGENT_TOOLSDIRECTORY=${process.env['AGENT_TOOLSDIRECTORY']}` | |
); | |
process.env['RUNNER_TOOL_CACHE'] = process.env['AGENT_TOOLSDIRECTORY']; | |
} else { | |
core.debug( | |
`Python is expected to be installed into RUNNER_TOOL_CACHE==${process.env['RUNNER_TOOL_CACHE']}` | |
); | |
} | |
try { | |
const version = core.getInput('python-version'); | |
if (version) { | |
let pythonVersion: string; | |
const arch: string = core.getInput('architecture') || os.arch(); | |
if (isPyPyVersion(version)) { | |
const installed = await finderPyPy.findPyPyVersion(version, arch); | |
pythonVersion = `${installed.resolvedPyPyVersion}-${installed.resolvedPythonVersion}`; | |
core.info( | |
`Successfully setup PyPy ${installed.resolvedPyPyVersion} with Python (${installed.resolvedPythonVersion})` | |
); | |
} else { | |
const installed = await finder.useCpythonVersion(version, arch); | |
pythonVersion = installed.version; | |
core.info(`Successfully setup ${installed.impl} (${pythonVersion})`); | |
} | |
const cache = core.getInput('cache'); | |
if (cache && isCacheFeatureAvailable()) { | |
await cacheDependencies(cache, pythonVersion); | |
} | |
} | |
const matchersPath = path.join(__dirname, '../..', '.github'); | |
core.info(`##[add-matcher]${path.join(matchersPath, 'python.json')}`); | |
} catch (err) { | |
core.setFailed((err as Error).message); | |
} | |
} | |
run(); |