diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 6dbd5a981..3bb2a9440 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -271,3 +271,29 @@ jobs: } $pythonVersion shell: pwsh + + setup-python-multiple-python-versions-from-file: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + steps: + - uses: actions/checkout@v3 + - name: Build multi-version file + run: printf '%s\n' 3.7 3.8 3.9 3.10 > .python-version + shell: bash + - name: Setup Python and check latest + uses: ./ + with: + python-version-file: '.python-version' + check-latest: true + - name: Validate version + run: | + $pythonVersion = (python --version) + if ("$pythonVersion" -NotMatch "3.10"){ + Write-Host "The current version is $pythonVersion; expected version is 3.10" + exit 1 + } + $pythonVersion + shell: pwsh diff --git a/dist/setup/index.js b/dist/setup/index.js index aaeeac4b6..fd00e44d7 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -67984,6 +67984,15 @@ function cacheDependencies(cache, pythonVersion) { yield cacheDistributor.restoreCache(); }); } +function readVersionFile(versionFile) { + const data = fs_1.default.readFileSync(versionFile, 'utf8'); + const versions = data + .split('\n') + .map(input => input.trim()) + .filter(x => x !== ''); + core.info(`Resolved ${versionFile} as ${versions.join(', ')}`); + return versions; +} function resolveVersionInput() { const versions = core.getMultilineInput('python-version'); let versionFile = core.getInput('python-version-file'); @@ -67997,16 +68006,12 @@ function resolveVersionInput() { if (!fs_1.default.existsSync(versionFile)) { throw new Error(`The specified python version file at: ${versionFile} doesn't exist.`); } - const version = fs_1.default.readFileSync(versionFile, 'utf8'); - core.info(`Resolved ${versionFile} as ${version}`); - return [version]; + return readVersionFile(versionFile); } utils_1.logWarning("Neither 'python-version' nor 'python-version-file' inputs were supplied. Attempting to find '.python-version' file."); versionFile = '.python-version'; if (fs_1.default.existsSync(versionFile)) { - const version = fs_1.default.readFileSync(versionFile, 'utf8'); - core.info(`Resolved ${versionFile} as ${version}`); - return [version]; + return readVersionFile(versionFile); } utils_1.logWarning(`${versionFile} doesn't exist.`); return versions; diff --git a/src/setup-python.ts b/src/setup-python.ts index 69ea9d368..99e22f99c 100644 --- a/src/setup-python.ts +++ b/src/setup-python.ts @@ -22,6 +22,16 @@ async function cacheDependencies(cache: string, pythonVersion: string) { await cacheDistributor.restoreCache(); } +function readVersionFile(versionFile: string) { + const data = fs.readFileSync(versionFile, 'utf8'); + const versions = data + .split('\n') + .map(input => input.trim()) + .filter(x => x !== ''); + core.info(`Resolved ${versionFile} as ${versions.join(', ')}`); + return versions; +} + function resolveVersionInput() { const versions = core.getMultilineInput('python-version'); let versionFile = core.getInput('python-version-file'); @@ -42,9 +52,7 @@ function resolveVersionInput() { `The specified python version file at: ${versionFile} doesn't exist.` ); } - const version = fs.readFileSync(versionFile, 'utf8'); - core.info(`Resolved ${versionFile} as ${version}`); - return [version]; + return readVersionFile(versionFile); } logWarning( @@ -52,9 +60,7 @@ function resolveVersionInput() { ); versionFile = '.python-version'; if (fs.existsSync(versionFile)) { - const version = fs.readFileSync(versionFile, 'utf8'); - core.info(`Resolved ${versionFile} as ${version}`); - return [version]; + return readVersionFile(versionFile); } logWarning(`${versionFile} doesn't exist.`);
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: