mirror of
https://github.com/actions/setup-python.git
synced 2025-06-28 05:33:47 +00:00
Add pip-version input
This commit is contained in:
parent
5db1cf9a59
commit
0ba3db92d7
3 changed files with 44 additions and 0 deletions
|
@ -29,6 +29,8 @@ inputs:
|
||||||
freethreaded:
|
freethreaded:
|
||||||
description: "When 'true', use the freethreaded version of Python."
|
description: "When 'true', use the freethreaded version of Python."
|
||||||
default: false
|
default: false
|
||||||
|
pip-version:
|
||||||
|
description: "Used to specify the version of pip to install with the Python. Supported format: major[.minor][.patch]."
|
||||||
outputs:
|
outputs:
|
||||||
python-version:
|
python-version:
|
||||||
description: "The installed Python or PyPy version. Useful when given a version range as input."
|
description: "The installed Python or PyPy version. Useful when given a version range as input."
|
||||||
|
|
17
dist/setup/index.js
vendored
17
dist/setup/index.js
vendored
|
@ -96068,6 +96068,7 @@ const semver = __importStar(__nccwpck_require__(2088));
|
||||||
const installer = __importStar(__nccwpck_require__(1919));
|
const installer = __importStar(__nccwpck_require__(1919));
|
||||||
const core = __importStar(__nccwpck_require__(7484));
|
const core = __importStar(__nccwpck_require__(7484));
|
||||||
const tc = __importStar(__nccwpck_require__(3472));
|
const tc = __importStar(__nccwpck_require__(3472));
|
||||||
|
const exec = __importStar(__nccwpck_require__(5236));
|
||||||
// Python has "scripts" or "bin" directories where command-line tools that come with packages are installed.
|
// Python has "scripts" or "bin" directories where command-line tools that come with packages are installed.
|
||||||
// This is where pip is, along with anything that pip installs.
|
// This is where pip is, along with anything that pip installs.
|
||||||
// There is a separate directory for `pip install --user`.
|
// There is a separate directory for `pip install --user`.
|
||||||
|
@ -96088,6 +96089,20 @@ function binDir(installDir) {
|
||||||
return path.join(installDir, 'bin');
|
return path.join(installDir, 'bin');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function installPip(pythonLocation) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const pipVersion = core.getInput('pip-version');
|
||||||
|
// Validate pip-version format: major[.minor][.patch]
|
||||||
|
const versionRegex = /^\d+(\.\d+)?(\.\d+)?$/;
|
||||||
|
if (pipVersion && !versionRegex.test(pipVersion)) {
|
||||||
|
throw new Error(`Invalid pip-version "${pipVersion}". Please specify a version in the format major[.minor][.patch].`);
|
||||||
|
}
|
||||||
|
if (pipVersion) {
|
||||||
|
core.info(`pip-version input is specified. Installing pip version ${pipVersion}`);
|
||||||
|
yield exec.exec(`${pythonLocation}/python -m pip install --upgrade pip==${pipVersion} --disable-pip-version-check --no-warn-script-location`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
function useCpythonVersion(version, architecture, updateEnvironment, checkLatest, allowPreReleases, freethreaded) {
|
function useCpythonVersion(version, architecture, updateEnvironment, checkLatest, allowPreReleases, freethreaded) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
var _a;
|
var _a;
|
||||||
|
@ -96183,6 +96198,8 @@ function useCpythonVersion(version, architecture, updateEnvironment, checkLatest
|
||||||
}
|
}
|
||||||
core.setOutput('python-version', pythonVersion);
|
core.setOutput('python-version', pythonVersion);
|
||||||
core.setOutput('python-path', pythonPath);
|
core.setOutput('python-path', pythonPath);
|
||||||
|
const binaryPath = utils_1.IS_WINDOWS ? installDir : _binDir;
|
||||||
|
yield installPip(binaryPath);
|
||||||
return { impl: 'CPython', version: pythonVersion };
|
return { impl: 'CPython', version: pythonVersion };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import * as installer from './install-python';
|
||||||
|
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as tc from '@actions/tool-cache';
|
import * as tc from '@actions/tool-cache';
|
||||||
|
import * as exec from '@actions/exec';
|
||||||
|
|
||||||
// Python has "scripts" or "bin" directories where command-line tools that come with packages are installed.
|
// Python has "scripts" or "bin" directories where command-line tools that come with packages are installed.
|
||||||
// This is where pip is, along with anything that pip installs.
|
// This is where pip is, along with anything that pip installs.
|
||||||
|
@ -30,6 +31,27 @@ function binDir(installDir: string): string {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function installPip(pythonLocation: string) {
|
||||||
|
const pipVersion = core.getInput('pip-version');
|
||||||
|
|
||||||
|
// Validate pip-version format: major[.minor][.patch]
|
||||||
|
const versionRegex = /^\d+(\.\d+)?(\.\d+)?$/;
|
||||||
|
if (pipVersion && !versionRegex.test(pipVersion)) {
|
||||||
|
throw new Error(
|
||||||
|
`Invalid pip-version "${pipVersion}". Please specify a version in the format major[.minor][.patch].`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pipVersion) {
|
||||||
|
core.info(
|
||||||
|
`pip-version input is specified. Installing pip version ${pipVersion}`
|
||||||
|
);
|
||||||
|
await exec.exec(
|
||||||
|
`${pythonLocation}/python -m pip install --upgrade pip==${pipVersion} --disable-pip-version-check --no-warn-script-location`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export async function useCpythonVersion(
|
export async function useCpythonVersion(
|
||||||
version: string,
|
version: string,
|
||||||
architecture: string,
|
architecture: string,
|
||||||
|
@ -179,6 +201,9 @@ export async function useCpythonVersion(
|
||||||
core.setOutput('python-version', pythonVersion);
|
core.setOutput('python-version', pythonVersion);
|
||||||
core.setOutput('python-path', pythonPath);
|
core.setOutput('python-path', pythonPath);
|
||||||
|
|
||||||
|
const binaryPath = IS_WINDOWS ? installDir : _binDir;
|
||||||
|
await installPip(binaryPath);
|
||||||
|
|
||||||
return {impl: 'CPython', version: pythonVersion};
|
return {impl: 'CPython', version: pythonVersion};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue