Skip to content

Commit

Permalink
Multiple Python versions from version-file in one environment
Browse files Browse the repository at this point in the history
This makes the change from actions#567 also available for users of
.python-version.
  • Loading branch information
viccie30 committed Apr 11, 2023
1 parent 7a4f344 commit d59aa9e
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 12 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/test-python.yml
Expand Up @@ -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
17 changes: 11 additions & 6 deletions dist/setup/index.js
Expand Up @@ -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');
Expand All @@ -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;
Expand Down
18 changes: 12 additions & 6 deletions src/setup-python.ts
Expand Up @@ -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');
Expand All @@ -42,19 +52,15 @@ 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(
"Neither 'python-version' nor 'python-version-file' inputs were supplied. Attempting to find '.python-version' file."
);
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.`);
Expand Down

0 comments on commit d59aa9e

Please sign in to comment.