fix: packageManager reader (#35)

* fix: packageManager reader

* chore: resolve review

* chore: run build
This commit is contained in:
Jack Works authored and GitHub committed 2022-02-25 12:43:26 +08:00
1 parent 11ba3424e0
commit 35ab4267a1
3 files changed
+15 -6

No files matched your search

-1
View File
@@ -6,7 +6,6 @@ branding:
inputs:
version:
description: Version of PNPM to install
required: true
dest:
description: Where to store PNPM files
required: false
+1 -1
View File
@@ -1,4 +1,4 @@
(()=>{var __webpack_modules__={8243:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});const i=r(3031);const s=n(r(4694));const o=n(r(1142));const a=n(r(2759));const u=n(r(4207));const l=n(r(5659));async function main(){const e=(0,s.default)();const t=(0,i.getState)("is_post");if(t==="true")return(0,l.default)(e);(0,i.saveState)("is_post","true");await(0,o.default)(e);console.log("Installation Completed!");(0,a.default)(e);(0,u.default)(e)}main().catch((e=>{console.error(e);(0,i.setFailed)(e)}))},4694:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.getInputs=void 0;const i=r(3031);const s=n(r(4790));const o=r(5400);const a={required:true};const parseInputPath=e=>(0,s.default)((0,i.getInput)(e,a));const getInputs=()=>({version:(0,i.getInput)("version"),dest:parseInputPath("dest"),runInstall:(0,o.parseRunInstall)("run_install")});t.getInputs=getInputs;t["default"]=t.getInputs},5400:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.parseRunInstall=void 0;const i=r(3031);const s=n(r(8438));const o=r(3639);const a=n(r(7282));const u=n(r(5379));const l={required:true};function parseRunInstall(e){const t=(0,o.load)((0,i.getInput)(e,l));const r=new s.default({allErrors:true});const n=r.compile(u.default);if(!n(t)){for(const e of n.errors){(0,i.error)(`with.run_install${e.dataPath}: ${e.message}`)}return a.default.exit(1)}if(!t)return[];if(t===true)return[{recursive:true}];if(Array.isArray(t))return t;return[t]}t.parseRunInstall=parseRunInstall},1142:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.install=t.runSelfInstaller=void 0;const i=r(3031);const s=n(r(9536));t.runSelfInstaller=s.default;async function install(e){(0,i.startGroup)("Running self-installer...");const t=await(0,s.default)(e);(0,i.endGroup)();if(t){return(0,i.setFailed)(`Something went wrong, self-installer exits with code ${t}`)}}t.install=install;t["default"]=install},9536:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.runSelfInstaller=void 0;const i=r(3031);const s=n(r(2043));const o=r(2081);const a=r(5176);const u=n(r(1017));const l=r(7282);async function runSelfInstaller(e){const{version:t,dest:r}=e;const n=u.default.join(r,"package.json");const c=await readTarget(n,t);await(0,a.remove)(r);await(0,a.ensureFile)(n);await(0,a.writeFile)(n,JSON.stringify({private:true}));const f=(0,o.spawn)(l.execPath,["-","install",c,"--no-lockfile"],{cwd:r,stdio:["pipe","inherit","inherit"]});const d=await(0,s.default)("https://get.pnpm.io/v6.16.js");if(!d.body)throw new Error("Did not receive response body");d.body.pipe(f.stdin);const p=await new Promise(((e,t)=>{f.on("error",t);f.on("close",e)}));if(p===0){const e=u.default.join(r,"node_modules/.bin");(0,i.addPath)(e);(0,i.exportVariable)("PNPM_HOME",e)}return p}t.runSelfInstaller=runSelfInstaller;async function readTarget(e,t){if(t)return`pnpm@${t}`;const{packageManager:r}=JSON.parse(await(0,a.readFile)(e,"utf8"));if(typeof r!=="string"){throw new Error(`No pnpm version is specified.\nPlease specify it by one of the following ways:\n - in the GitHub Action config with the key "version"\n - in the package.json with the key "packageManager" (See https://nodejs.org/api/corepack.html)`)}if(!r.startsWith("pnpm@")){throw new Error("Invalid packageManager field in package.json")}return r}t["default"]=runSelfInstaller},2759:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.setOutputs=void 0;const n=r(3031);const i=r(6392);function setOutputs(e){const t=(0,i.getBinDest)(e);(0,n.addPath)(t);(0,n.setOutput)("dest",e.dest);(0,n.setOutput)("bin_dest",t)}t.setOutputs=setOutputs;t["default"]=setOutputs},4207:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.runPnpmInstall=void 0;const n=r(3031);const i=r(2081);const s=r(6392);function runPnpmInstall(e){const t=(0,s.patchPnpmEnv)(e);for(const r of e.runInstall){const e=["install"];if(r.recursive)e.unshift("recursive");if(r.args)e.push(...r.args);const s=["pnpm",...e].join(" ");(0,n.startGroup)(`Running ${s}...`);const{error:o,status:a}=(0,i.spawnSync)("pnpm",e,{stdio:"inherit",cwd:r.cwd,shell:true,env:t});(0,n.endGroup)();if(o){(0,n.setFailed)(o);continue}if(a){(0,n.setFailed)(`Command ${s} (cwd: ${r.cwd}) exits with status ${a}`);continue}}}t.runPnpmInstall=runPnpmInstall;t["default"]=runPnpmInstall},5659:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.pruneStore=void 0;const n=r(3031);const i=r(2081);const s=r(6392);fLine truncated
(()=>{var __webpack_modules__={8243:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});const i=r(3031);const s=n(r(4694));const o=n(r(1142));const a=n(r(2759));const u=n(r(4207));const l=n(r(5659));async function main(){const e=(0,s.default)();const t=(0,i.getState)("is_post");if(t==="true")return(0,l.default)(e);(0,i.saveState)("is_post","true");await(0,o.default)(e);console.log("Installation Completed!");(0,a.default)(e);(0,u.default)(e)}main().catch((e=>{console.error(e);(0,i.setFailed)(e)}))},4694:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.getInputs=void 0;const i=r(3031);const s=n(r(4790));const o=r(5400);const a={required:true};const parseInputPath=e=>(0,s.default)((0,i.getInput)(e,a));const getInputs=()=>({version:(0,i.getInput)("version"),dest:parseInputPath("dest"),runInstall:(0,o.parseRunInstall)("run_install")});t.getInputs=getInputs;t["default"]=t.getInputs},5400:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.parseRunInstall=void 0;const i=r(3031);const s=n(r(8438));const o=r(3639);const a=n(r(7282));const u=n(r(5379));const l={required:true};function parseRunInstall(e){const t=(0,o.load)((0,i.getInput)(e,l));const r=new s.default({allErrors:true});const n=r.compile(u.default);if(!n(t)){for(const e of n.errors){(0,i.error)(`with.run_install${e.dataPath}: ${e.message}`)}return a.default.exit(1)}if(!t)return[];if(t===true)return[{recursive:true}];if(Array.isArray(t))return t;return[t]}t.parseRunInstall=parseRunInstall},1142:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.install=t.runSelfInstaller=void 0;const i=r(3031);const s=n(r(9536));t.runSelfInstaller=s.default;async function install(e){(0,i.startGroup)("Running self-installer...");const t=await(0,s.default)(e);(0,i.endGroup)();if(t){return(0,i.setFailed)(`Something went wrong, self-installer exits with code ${t}`)}}t.install=install;t["default"]=install},9536:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.runSelfInstaller=void 0;const i=r(3031);const s=n(r(2043));const o=r(2081);const a=r(5176);const u=n(r(1017));const l=r(7282);async function runSelfInstaller(e){const{version:t,dest:r}=e;await(0,a.remove)(r);const n=u.default.join(r,"package.json");await(0,a.ensureFile)(n);await(0,a.writeFile)(n,JSON.stringify({private:true}));const c=await readTarget(t);const f=(0,o.spawn)(l.execPath,["-","install",c,"--no-lockfile"],{cwd:r,stdio:["pipe","inherit","inherit"]});const d=await(0,s.default)("https://get.pnpm.io/v6.16.js");if(!d.body)throw new Error("Did not receive response body");d.body.pipe(f.stdin);const p=await new Promise(((e,t)=>{f.on("error",t);f.on("close",e)}));if(p===0){const e=u.default.join(r,"node_modules/.bin");(0,i.addPath)(e);(0,i.exportVariable)("PNPM_HOME",e)}return p}t.runSelfInstaller=runSelfInstaller;async function readTarget(e){if(e)return`pnpm@${e}`;const{GITHUB_WORKSPACE:t}=process.env;if(!t){throw new Error(`No workspace is found.\nIf you're intended to let pnpm/action-setup read preferred pnpm version from the "packageManager" field in the package.json file,\nplease run the actions/checkout before pnpm/action-setup.\nOtherwise, please specify the pnpm version in the action configuration.`)}const{packageManager:r}=JSON.parse(await(0,a.readFile)(u.default.join(t,"package.json"),"utf8"));if(typeof r!=="string"){throw new Error(`No pnpm version is specified.\nPlease specify it by one of the following ways:\n - in the GitHub Action config with the key "version"\n - in the package.json with the key "packageManager" (See https://nodejs.org/api/corepack.html)`)}if(!r.startsWith("pnpm@")){throw new Error("Invalid packageManager field in package.json")}return r}t["default"]=runSelfInstaller},2759:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.setOutputs=void 0;const n=r(3031);const i=r(6392);function setOutputs(e){const t=(0,i.getBinDest)(e);(0,n.addPath)(t);(0,n.setOutput)("dest",e.dest);(0,n.setOutput)("bin_dest",t)}t.setOutputs=setOutputs;t["default"]=setOutputs},4207:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.runPnpmInstall=void 0;const n=r(3031);const i=r(2081);const s=r(6392);function runPnpmInstall(e){const t=(0,s.patchPnpmEnv)(e);for(const r of e.runInstall){const e=["install"];if(r.recursive)e.unshift("recursive");if(r.args)e.push(...r.args);const s=["pnpm",...e].join(" ");(0,n.startGroup)(`Running ${s}...`);const{error:o,status:a}=(0,i.spawnSync)("pnpm",e,{stdio:"inherit",Line truncated
/*!
* depd
* Copyright(c) 2014-2017 Douglas Christopher Wilson
+14 -4
View File
@@ -8,13 +8,15 @@ import { Inputs } from '../inputs'
export async function runSelfInstaller(inputs: Inputs): Promise<number> {
const { version, dest } = inputs
const pkgJson = path.join(dest, 'package.json')
const target = await readTarget(pkgJson, version)
// prepare self install
await remove(dest)
const pkgJson = path.join(dest, 'package.json')
await ensureFile(pkgJson)
await writeFile(pkgJson, JSON.stringify({ private: true }))
// prepare target pnpm
const target = await readTarget(version)
const cp = spawn(execPath, ['-', 'install', target, '--no-lockfile'], {
cwd: dest,
stdio: ['pipe', 'inherit', 'inherit'],
@@ -36,10 +38,18 @@ export async function runSelfInstaller(inputs: Inputs): Promise<number> {
return exitCode
}
async function readTarget(packageJsonPath: string, version?: string | undefined) {
async function readTarget(version?: string | undefined) {
if (version) return `pnpm@${version}`
const { packageManager } = JSON.parse(await readFile(packageJsonPath, 'utf8'))
const { GITHUB_WORKSPACE } = process.env
if (!GITHUB_WORKSPACE) {
throw new Error(`No workspace is found.
If you're intended to let pnpm/action-setup read preferred pnpm version from the "packageManager" field in the package.json file,
please run the actions/checkout before pnpm/action-setup.
Otherwise, please specify the pnpm version in the action configuration.`)
}
const { packageManager } = JSON.parse(await readFile(path.join(GITHUB_WORKSPACE, 'package.json'), 'utf8'))
if (typeof packageManager !== 'string') {
throw new Error(`No pnpm version is specified.
Please specify it by one of the following ways: