mirror of
				https://kkgithub.com/actions/setup-python.git
				synced 2025-11-04 12:44:05 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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 {isGhes} from './utils';
 | 
						|
 | 
						|
function isPyPyVersion(versionSpec: string) {
 | 
						|
  return versionSpec.startsWith('pypy-');
 | 
						|
}
 | 
						|
 | 
						|
async function cacheDependencies(cache: string, pythonVersion: string) {
 | 
						|
  if (isGhes()) {
 | 
						|
    throw new Error('Caching is not supported on GHES');
 | 
						|
  }
 | 
						|
  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'] !== undefined) {
 | 
						|
    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.findPythonVersion(version, arch);
 | 
						|
        pythonVersion = installed.version;
 | 
						|
        core.info(`Successfully setup ${installed.impl} (${pythonVersion})`);
 | 
						|
      }
 | 
						|
 | 
						|
      const cache = core.getInput('cache');
 | 
						|
      if (cache) {
 | 
						|
        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();
 |