mirror of
https://github.com/plankanban/planka.git
synced 2026-05-04 18:00:55 +03:00
29 lines
967 B
JavaScript
29 lines
967 B
JavaScript
|
|
const { spawnSync } = require('child_process');
|
||
|
|
const path = require('path');
|
||
|
|
|
||
|
|
const VENV_PATH = path.join(__dirname, '.venv');
|
||
|
|
const REQUIREMENTS_PATH = path.join(__dirname, 'requirements.txt');
|
||
|
|
|
||
|
|
const PYTHON_PATH =
|
||
|
|
process.platform === 'win32'
|
||
|
|
? path.join(VENV_PATH, 'Scripts', 'python.exe')
|
||
|
|
: path.join(VENV_PATH, 'bin', 'python');
|
||
|
|
|
||
|
|
const getSystemPythonCommand = () => {
|
||
|
|
let result = spawnSync('python3', ['--version'], { stdio: 'ignore' });
|
||
|
|
if (result.status === 0) return 'python3';
|
||
|
|
|
||
|
|
result = spawnSync('python', ['--version'], { stdio: 'ignore' });
|
||
|
|
if (result.status === 0) return 'python';
|
||
|
|
|
||
|
|
throw new Error('Python is not installed or not in PATH');
|
||
|
|
};
|
||
|
|
|
||
|
|
const run = (command, args) => {
|
||
|
|
const result = spawnSync(command, args, { stdio: 'inherit' });
|
||
|
|
if (result.status !== 0) process.exit(result.status);
|
||
|
|
};
|
||
|
|
|
||
|
|
run(getSystemPythonCommand(), ['-m', 'venv', VENV_PATH]);
|
||
|
|
run(PYTHON_PATH, ['-m', 'pip', 'install', '-r', REQUIREMENTS_PATH]);
|