UNPKG

2.52 kBJavaScriptView Raw
1"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("async"),r=require("child_process"),s=require("fs-extra"),o=require("os"),n=require("path"),t=require("./reporting"),i=require(n.join("..","package.json"));exports.devDependencies=i.devDependencies,exports.diezVersion=i.version;const c=new Map;exports.execAsync=((e,s)=>new Promise((o,n)=>{r.exec(e,s,(e,r)=>{e?n(e):o(r.toString().trim())})})),exports.isMacOS=(()=>"darwin"===o.platform()),exports.isWindows=(()=>"win32"===o.platform());const a=(e,r,s=!1)=>{if(r.has(e))return;const o=(e=>{try{return require.resolve(n.join(e,"package.json"))}catch(e){return}})(e);if(!o)return;const t=n.dirname(o),i=require(o);if(r.set(s?".":e,{json:i,path:t}),i.dependencies)for(const e in i.dependencies)try{a(e,r)}catch(e){}if(s&&i.devDependencies)for(const e in i.devDependencies)try{a(e,r)}catch(e){}};exports.findPlugins=((r=global.process.cwd(),o)=>{if(c.size)return Promise.resolve(c);const i=new Map;return a(r,i,!0),o&&a(o,i),new Promise(r=>{e.each(Array.from(i),([e,{json:r,path:o}],i)=>{const a=r.diez||{},p=n.join(o,".diezrc");if(!s.existsSync(p))return i();try{const e=JSON.parse(s.readFileSync(p).toString());Object.assign(a,e)}catch(e){t.Log.warning(`Found invalid .diezrc at ${p}`)}return Object.keys(a).length&&c.set(e,a),i()},()=>{r(c)})})}),exports.cliRequire=((e,r)=>"."===e?require(n.join(global.process.cwd(),r)):require(n.join(e,r))),exports.canRunCommand=(async e=>{try{return!!await exports.execAsync(e)}catch(e){return!1}}),exports.locateBinaryMacOS=(async e=>{if(!exports.isMacOS())throw new Error("Platform is not macOS");const r=await exports.execAsync(`mdfind kMDItemCFBundleIdentifier=${e}`);if(r)return r.split("\n")[0]}),exports.exitTrap=(e=>{global.process.once("exit",e),global.process.once("SIGINT",e),global.process.once("SIGHUP",e),global.process.once("SIGQUIT",e),global.process.once("SIGTSTP",e)}),exports.isChildProcess=(e=>Boolean(e)&&void 0!==e.kill),exports.encodePackageName=(e=>e.replace("/","+")),exports.decodePackageName=(e=>e.replace("+","/")),exports.pager=(e=>new Promise((s,o)=>{const n=exports.isWindows()?"powershell":"sh",t=exports.isWindows()?`cat ${e.source} | Out-Host -Paging`:`cat ${e.source} | less`;p(!0);const i=r.spawn(n,["-c",t],{stdio:[null,1,2]});i.on("exit",(e,r)=>{p(!1),process.stdin.pause(),s({code:e,signal:r})}),i.stdin&&i.stdin.on("error",e=>{})}));const p=e=>{process.stdin.setRawMode&&process.stdin.setRawMode(e)};
2//# sourceMappingURL=/@diez/cli-core/lib/utils.js.map
\No newline at end of file