mirror of
				https://gitea.com/actions/setup-python.git
				synced 2025-10-31 19:58:55 +08:00 
			
		
		
		
	Enhance reading from .python-version (#787)
* Enhance reading from .python-version * Fix typos * Fix lint * Add built files * Don't use EOL versions in `utils.test.ts` * Fix Prettier * Don't use unreleased versions in `utils.test.ts` * Update versions in `utils.test.ts` again
This commit is contained in:
		
							
								
								
									
										37
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -96929,7 +96929,7 @@ function cacheDependencies(cache, pythonVersion) { | ||||
| } | ||||
| function resolveVersionInputFromDefaultFile() { | ||||
|     const couples = [ | ||||
|         ['.python-version', utils_1.getVersionInputFromPlainFile] | ||||
|         ['.python-version', utils_1.getVersionsInputFromPlainFile] | ||||
|     ]; | ||||
|     for (const [versionFile, _fn] of couples) { | ||||
|         (0, utils_1.logWarning)(`Neither 'python-version' nor 'python-version-file' inputs were supplied. Attempting to find '${versionFile}' file.`); | ||||
| @@ -97066,7 +97066,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { | ||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.getDownloadFileName = exports.getNextPageUrl = exports.getBinaryDirectory = exports.getVersionInputFromFile = exports.getVersionInputFromToolVersions = exports.getVersionInputFromPlainFile = exports.getVersionInputFromTomlFile = exports.getOSInfo = exports.getLinuxInfo = exports.logWarning = exports.isCacheFeatureAvailable = exports.isGhes = exports.validatePythonVersionFormatForPyPy = exports.writeExactPyPyVersionFile = exports.readExactPyPyVersionFile = exports.getPyPyVersionFromPath = exports.isNightlyKeyword = exports.validateVersion = exports.createSymlinkInFolder = exports.WINDOWS_PLATFORMS = exports.WINDOWS_ARCHS = exports.IS_MAC = exports.IS_LINUX = exports.IS_WINDOWS = void 0; | ||||
| exports.getDownloadFileName = exports.getNextPageUrl = exports.getBinaryDirectory = exports.getVersionInputFromFile = exports.getVersionInputFromToolVersions = exports.getVersionsInputFromPlainFile = exports.getVersionInputFromTomlFile = exports.getOSInfo = exports.getLinuxInfo = exports.logWarning = exports.isCacheFeatureAvailable = exports.isGhes = exports.validatePythonVersionFormatForPyPy = exports.writeExactPyPyVersionFile = exports.readExactPyPyVersionFile = exports.getPyPyVersionFromPath = exports.isNightlyKeyword = exports.validateVersion = exports.createSymlinkInFolder = exports.WINDOWS_PLATFORMS = exports.WINDOWS_ARCHS = exports.IS_MAC = exports.IS_LINUX = exports.IS_WINDOWS = void 0; | ||||
| /* eslint no-unsafe-finally: "off" */ | ||||
| const cache = __importStar(__nccwpck_require__(5116)); | ||||
| const core = __importStar(__nccwpck_require__(7484)); | ||||
| @@ -97247,7 +97247,7 @@ function extractValue(obj, keys) { | ||||
|  * If none is present, returns an empty list. | ||||
|  */ | ||||
| function getVersionInputFromTomlFile(versionFile) { | ||||
|     core.debug(`Trying to resolve version form ${versionFile}`); | ||||
|     core.debug(`Trying to resolve version from ${versionFile}`); | ||||
|     let pyprojectFile = fs_1.default.readFileSync(versionFile, 'utf8'); | ||||
|     // Normalize the line endings in the pyprojectFile
 | ||||
|     pyprojectFile = pyprojectFile.replace(/\r\n/g, '\n'); | ||||
| @@ -97280,15 +97280,30 @@ function getVersionInputFromTomlFile(versionFile) { | ||||
| } | ||||
| exports.getVersionInputFromTomlFile = getVersionInputFromTomlFile; | ||||
| /** | ||||
|  * Python version extracted from a plain text file. | ||||
|  * Python versions extracted from a plain text file. | ||||
|  * - Resolves multiple versions from multiple lines. | ||||
|  * - Handles pyenv-virtualenv pointers (e.g. `3.10/envs/virtualenv`). | ||||
|  * - Ignores empty lines and lines starting with `#` | ||||
|  * - Trims whitespace. | ||||
|  */ | ||||
| function getVersionInputFromPlainFile(versionFile) { | ||||
|     core.debug(`Trying to resolve version form ${versionFile}`); | ||||
|     const version = fs_1.default.readFileSync(versionFile, 'utf8').trim(); | ||||
|     core.info(`Resolved ${versionFile} as ${version}`); | ||||
|     return [version]; | ||||
| function getVersionsInputFromPlainFile(versionFile) { | ||||
|     core.debug(`Trying to resolve versions from ${versionFile}`); | ||||
|     const content = fs_1.default.readFileSync(versionFile, 'utf8').trim(); | ||||
|     const lines = content.split(/\r\n|\r|\n/); | ||||
|     const versions = lines | ||||
|         .map(line => { | ||||
|         if (line.startsWith('#') || line.trim() === '') { | ||||
|             return undefined; | ||||
|         } | ||||
|         let version = line.trim(); | ||||
|         version = version.split('/')[0]; | ||||
|         return version; | ||||
|     }) | ||||
|         .filter(version => version !== undefined); | ||||
|     core.info(`Resolved ${versionFile} as ${versions.join(', ')}`); | ||||
|     return versions; | ||||
| } | ||||
| exports.getVersionInputFromPlainFile = getVersionInputFromPlainFile; | ||||
| exports.getVersionsInputFromPlainFile = getVersionsInputFromPlainFile; | ||||
| /** | ||||
|  * Python version extracted from a .tool-versions file. | ||||
|  */ | ||||
| @@ -97331,7 +97346,7 @@ function getVersionInputFromFile(versionFile) { | ||||
|         return getVersionInputFromToolVersions(versionFile); | ||||
|     } | ||||
|     else { | ||||
|         return getVersionInputFromPlainFile(versionFile); | ||||
|         return getVersionsInputFromPlainFile(versionFile); | ||||
|     } | ||||
| } | ||||
| exports.getVersionInputFromFile = getVersionInputFromFile; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kryštof Korb
					Kryštof Korb