Skip to content

Commit

Permalink
Support reading python version from mise config
Browse files Browse the repository at this point in the history
  • Loading branch information
dbowring committed Mar 26, 2024
1 parent 9a7ac94 commit 3a78503
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 14 deletions.
12 changes: 12 additions & 0 deletions __tests__/utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,18 @@ describe('Version from file test', () => {
expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]);
}
);
it.each([getVersionInputFromTomlFile, getVersionInputFromFile])(
'Version from mise .mise.toml test',
async _fn => {
await io.mkdirP(tempDir);
const pythonVersionFileName = '.mise.toml';
const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName);
const pythonVersion = '3.7.0';
const pythonVersionFileContent = `[tools]\npython = "${pythonVersion}"`;
fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent);
expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]);
}
);
it.each([getVersionInputFromTomlFile, getVersionInputFromFile])(
'Version undefined',
async _fn => {
Expand Down
20 changes: 13 additions & 7 deletions dist/setup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -91859,19 +91859,25 @@ function getVersionInputFromTomlFile(versionFile) {
core.debug(`Trying to resolve version form ${versionFile}`);
const pyprojectFile = fs_1.default.readFileSync(versionFile, 'utf8');
const pyprojectConfig = toml.parse(pyprojectFile);
let keys = [];
let keyPaths = [];
if ('project' in pyprojectConfig) {
// standard project metadata (PEP 621)
keys = ['project', 'requires-python'];
keyPaths = [['project', 'requires-python']];
}
else {
// python poetry
keys = ['tool', 'poetry', 'dependencies', 'python'];
keyPaths = [
// python poetry
['tool', 'poetry', 'dependencies', 'python'],
// mise
['tools', 'python']
];
}
const versions = [];
const version = extractValue(pyprojectConfig, keys);
if (version !== undefined) {
versions.push(version);
for (const keys of keyPaths) {
const value = extractValue(pyprojectConfig, keys);
if (value !== undefined) {
versions.push(value);
}
}
core.info(`Extracted ${versions} from ${versionFile}`);
const rawVersions = Array.from(versions, version => version.split(',').join(' '));
Expand Down
23 changes: 16 additions & 7 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -226,19 +226,28 @@ export function getVersionInputFromTomlFile(versionFile: string): string[] {

const pyprojectFile = fs.readFileSync(versionFile, 'utf8');
const pyprojectConfig = toml.parse(pyprojectFile);
let keys = [];

let keyPaths = [];

if ('project' in pyprojectConfig) {
// standard project metadata (PEP 621)
keys = ['project', 'requires-python'];
keyPaths = [['project', 'requires-python']];
} else {
// python poetry
keys = ['tool', 'poetry', 'dependencies', 'python'];
keyPaths = [
// python poetry
['tool', 'poetry', 'dependencies', 'python'],
// mise
['tools', 'python']
];
}

const versions = [];
const version = extractValue(pyprojectConfig, keys);
if (version !== undefined) {
versions.push(version);

for (const keys of keyPaths) {
const value = extractValue(pyprojectConfig, keys);
if (value !== undefined) {
versions.push(value);
}
}

core.info(`Extracted ${versions} from ${versionFile}`);
Expand Down

0 comments on commit 3a78503

Please sign in to comment.