diff --git a/pyscript.core/package-lock.json b/pyscript.core/package-lock.json index f50a610a..1eae2889 100644 --- a/pyscript.core/package-lock.json +++ b/pyscript.core/package-lock.json @@ -33,6 +33,7 @@ "@xterm/addon-web-links": "^0.11.0", "bun": "^1.1.27", "chokidar": "^4.0.0", + "codedent": "^0.1.2", "codemirror": "^6.0.1", "eslint": "^9.10.0", "flatted": "^3.3.1", diff --git a/pyscript.core/package.json b/pyscript.core/package.json index bf255e62..2d9c7e12 100644 --- a/pyscript.core/package.json +++ b/pyscript.core/package.json @@ -79,6 +79,7 @@ "@xterm/addon-web-links": "^0.11.0", "bun": "^1.1.27", "chokidar": "^4.0.0", + "codedent": "^0.1.2", "codemirror": "^6.0.1", "eslint": "^9.10.0", "flatted": "^3.3.1", diff --git a/pyscript.core/rollup/stdlib.cjs b/pyscript.core/rollup/stdlib.cjs index 995a08b7..9009cbdc 100644 --- a/pyscript.core/rollup/stdlib.cjs +++ b/pyscript.core/rollup/stdlib.cjs @@ -9,20 +9,43 @@ const { spawnSync } = require("node:child_process"); const { join } = require("node:path"); +const dedent = require("codedent"); + const crawl = (path, json) => { for (const file of readdirSync(path)) { const full = join(path, file); if (/\.py$/.test(file)) { if (process.env.NO_MIN) json[file] = readFileSync(full).toString(); else { - const { - output: [error, result], - } = spawnSync("pyminify", [ - "--remove-literal-statements", - full, - ]); - if (error) process.exit(1); - json[file] = result.toString(); + try { + const { + output: [error, result], + } = spawnSync("pyminify", [ + "--remove-literal-statements", + full, + ]); + if (error) { + console.error(error); + process.exit(1); + } + json[file] = result.toString(); + } catch (error) { + console.error(error); + console.log( + dedent(` + \x1b[1m⚠️ is your env activated?\x1b[0m + \x1b[2mYou need a Python env to run \x1b[0mpyminify\x1b[2m.\x1b[0m + \x1b[2mTo do so, you can try the following:\x1b[0m + python -m venv env + source env/bin/activate + pip install --upgrade pip + pip install --ignore-requires-python python-minifier + pip install setuptools + \x1b[2mand you can then try \x1b[0mnpm run build\x1b[2m again.\x1b[0m + `), + ); + process.exit(1); + } } } else if (statSync(full).isDirectory() && !file.endsWith("_")) crawl(full, (json[file] = {}));