fixing comments

This commit is contained in:
Dmitry Shibanov 2022-12-15 14:34:43 +01:00
parent 17904c7b69
commit 0130854fbc
4 changed files with 91 additions and 43 deletions

View file

@ -196,7 +196,8 @@ jobs:
} }
$pythonVersion $pythonVersion
shell: pwsh shell: pwsh
setup-python-multiple-versions:
setup-python-multiple-python-versions:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
@ -207,13 +208,17 @@ jobs:
- name: Setup Python and check latest - name: Setup Python and check latest
uses: ./ uses: ./
with: with:
python-version: ${{ matrix.python-version }} python-version: |
3.7
3.8
3.9
3.10
check-latest: true check-latest: true
- name: Validate version - name: Validate version
run: | run: |
$pythonVersion = (python --version) $pythonVersion = (python --version)
if ("$pythonVersion" -NotMatch "${{ matrix.python-version }}"){ if ("$pythonVersion" -NotMatch "3.10"){
Write-Host "The current version is $pythonVersion; expected version is ${{ matrix.python-version }}" Write-Host "The current version is $pythonVersion; expected version is 3.10"
exit 1 exit 1
} }
$pythonVersion $pythonVersion

29
dist/setup/index.js vendored
View file

@ -66867,31 +66867,31 @@ function cacheDependencies(cache, pythonVersion) {
}); });
} }
function resolveVersionInput() { function resolveVersionInput() {
let version = core.getMultilineInput('python-version'); let versions = core.getMultilineInput('python-version');
let versionFile = core.getInput('python-version-file'); let versionFile = core.getInput('python-version-file');
if (version.length && versionFile) { if (versions.length && versionFile) {
core.warning('Both python-version and python-version-file inputs are specified, only python-version will be used.'); core.warning('Both python-version and python-version-file inputs are specified, only python-version will be used.');
} }
if (version.length) { if (versions.length) {
return version; return versions;
} }
if (versionFile) { if (versionFile) {
if (!fs_1.default.existsSync(versionFile)) { if (!fs_1.default.existsSync(versionFile)) {
throw new Error(`The specified python version file at: ${versionFile} doesn't exist.`); throw new Error(`The specified python version file at: ${versionFile} doesn't exist.`);
} }
version = fs_1.default.readFileSync(versionFile, 'utf8'); const version = fs_1.default.readFileSync(versionFile, 'utf8');
core.info(`Resolved ${versionFile} as ${version}`); core.info(`Resolved ${versionFile} as ${version}`);
return version; return [version];
} }
utils_1.logWarning("Neither 'python-version' nor 'python-version-file' inputs were supplied. Attempting to find '.python-version' file."); utils_1.logWarning("Neither 'python-version' nor 'python-version-file' inputs were supplied. Attempting to find '.python-version' file.");
versionFile = '.python-version'; versionFile = '.python-version';
if (fs_1.default.existsSync(versionFile)) { if (fs_1.default.existsSync(versionFile)) {
version = fs_1.default.readFileSync(versionFile, 'utf8'); const version = fs_1.default.readFileSync(versionFile, 'utf8');
core.info(`Resolved ${versionFile} as ${version}`); core.info(`Resolved ${versionFile} as ${version}`);
return version; return [version];
} }
utils_1.logWarning(`${versionFile} doesn't exist.`); utils_1.logWarning(`${versionFile} doesn't exist.`);
return version; return versions;
} }
function run() { function run() {
var _a; var _a;
@ -66904,20 +66904,13 @@ function run() {
} }
core.debug(`Python is expected to be installed into ${process.env['RUNNER_TOOL_CACHE']}`); core.debug(`Python is expected to be installed into ${process.env['RUNNER_TOOL_CACHE']}`);
try { try {
let versions; const versions = resolveVersionInput();
const resolvedVersionInput = resolveVersionInput();
const checkLatest = core.getBooleanInput('check-latest'); const checkLatest = core.getBooleanInput('check-latest');
if (Array.isArray(resolvedVersionInput)) {
versions = resolvedVersionInput;
}
else {
versions = [resolvedVersionInput];
}
if (versions.length) { if (versions.length) {
let pythonVersion = ''; let pythonVersion = '';
for (const version of versions) {
const arch = core.getInput('architecture') || os.arch(); const arch = core.getInput('architecture') || os.arch();
const updateEnvironment = core.getBooleanInput('update-environment'); const updateEnvironment = core.getBooleanInput('update-environment');
for (const version of versions) {
if (isPyPyVersion(version)) { if (isPyPyVersion(version)) {
const installed = yield finderPyPy.findPyPyVersion(version, arch, updateEnvironment, checkLatest); const installed = yield finderPyPy.findPyPyVersion(version, arch, updateEnvironment, checkLatest);
pythonVersion = `${installed.resolvedPyPyVersion}-${installed.resolvedPythonVersion}`; pythonVersion = `${installed.resolvedPyPyVersion}-${installed.resolvedPythonVersion}`;

View file

@ -2,6 +2,7 @@
- [Using the python-version input](advanced-usage.md#using-the-python-version-input) - [Using the python-version input](advanced-usage.md#using-the-python-version-input)
- [Specifying a Python version](advanced-usage.md#specifying-a-python-version) - [Specifying a Python version](advanced-usage.md#specifying-a-python-version)
- [Specifying a PyPy version](advanced-usage.md#specifying-a-pypy-version) - [Specifying a PyPy version](advanced-usage.md#specifying-a-pypy-version)
- [Specifying multiple Python and PyPy versions](advanced-usage.md#specifying-multiple-python/pypy-version)
- [Matrix Testing](advanced-usage.md#matrix-testing) - [Matrix Testing](advanced-usage.md#matrix-testing)
- [Using the python-version-file input](advanced-usage.md#using-the-python-version-file-input) - [Using the python-version-file input](advanced-usage.md#using-the-python-version-file-input)
- [Check latest version](advanced-usage.md#check-latest-version) - [Check latest version](advanced-usage.md#check-latest-version)
@ -132,6 +133,62 @@ jobs:
``` ```
More details on PyPy syntax can be found in the [Available versions of PyPy](#pypy) section. More details on PyPy syntax can be found in the [Available versions of PyPy](#pypy) section.
### Specifying multiple Python/PyPy version
The python-version input can get multiple python/pypy versions. The last specified version will be used as a default one.
Download and set up multiple Python versions:
```yaml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: |
3.8
3.9
3.10
- run: python my_script.py
```
Download and set up multiple PyPy versions:
```yaml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: |
pypy-3.7-v7.3.x
pypy3.9-nightly
pypy3.8
- run: python my_script.py
```
Download and set up multiple Python/PyPy versions:
```yaml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: |
3.8
3.9
pypy3.9-nightly
pypy3.8
3.10
- run: python my_script.py
```
### Matrix Testing ### Matrix Testing
Using `setup-python` it's possible to use [matrix syntax](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix) to install several versions of Python or PyPy: Using `setup-python` it's possible to use [matrix syntax](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix) to install several versions of Python or PyPy:

View file

@ -22,18 +22,18 @@ async function cacheDependencies(cache: string, pythonVersion: string) {
await cacheDistributor.restoreCache(); await cacheDistributor.restoreCache();
} }
function resolveVersionInput(): string | string[] { function resolveVersionInput() {
let version: string | string[] = core.getMultilineInput('python-version'); let versions = core.getMultilineInput('python-version');
let versionFile = core.getInput('python-version-file'); let versionFile = core.getInput('python-version-file');
if (version.length && versionFile) { if (versions.length && versionFile) {
core.warning( core.warning(
'Both python-version and python-version-file inputs are specified, only python-version will be used.' 'Both python-version and python-version-file inputs are specified, only python-version will be used.'
); );
} }
if (version.length) { if (versions.length) {
return version; return versions;
} }
if (versionFile) { if (versionFile) {
@ -42,9 +42,9 @@ function resolveVersionInput(): string | string[] {
`The specified python version file at: ${versionFile} doesn't exist.` `The specified python version file at: ${versionFile} doesn't exist.`
); );
} }
version = fs.readFileSync(versionFile, 'utf8'); const version = fs.readFileSync(versionFile, 'utf8');
core.info(`Resolved ${versionFile} as ${version}`); core.info(`Resolved ${versionFile} as ${version}`);
return version; return [version];
} }
logWarning( logWarning(
@ -52,14 +52,14 @@ function resolveVersionInput(): string | string[] {
); );
versionFile = '.python-version'; versionFile = '.python-version';
if (fs.existsSync(versionFile)) { if (fs.existsSync(versionFile)) {
version = fs.readFileSync(versionFile, 'utf8'); const version = fs.readFileSync(versionFile, 'utf8');
core.info(`Resolved ${versionFile} as ${version}`); core.info(`Resolved ${versionFile} as ${version}`);
return version; return [version];
} }
logWarning(`${versionFile} doesn't exist.`); logWarning(`${versionFile} doesn't exist.`);
return version; return versions;
} }
async function run() { async function run() {
@ -75,21 +75,14 @@ async function run() {
`Python is expected to be installed into ${process.env['RUNNER_TOOL_CACHE']}` `Python is expected to be installed into ${process.env['RUNNER_TOOL_CACHE']}`
); );
try { try {
let versions: string[]; const versions = resolveVersionInput();
const resolvedVersionInput = resolveVersionInput();
const checkLatest = core.getBooleanInput('check-latest'); const checkLatest = core.getBooleanInput('check-latest');
if (Array.isArray(resolvedVersionInput)) {
versions = resolvedVersionInput as string[];
} else {
versions = [resolvedVersionInput as string];
}
if (versions.length) { if (versions.length) {
let pythonVersion = ''; let pythonVersion = '';
for (const version of versions) {
const arch: string = core.getInput('architecture') || os.arch(); const arch: string = core.getInput('architecture') || os.arch();
const updateEnvironment = core.getBooleanInput('update-environment'); const updateEnvironment = core.getBooleanInput('update-environment');
for (const version of versions) {
if (isPyPyVersion(version)) { if (isPyPyVersion(version)) {
const installed = await finderPyPy.findPyPyVersion( const installed = await finderPyPy.findPyPyVersion(
version, version,