8 lines
2.8 KiB
JavaScript
8 lines
2.8 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
var O=Object.create;var w=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var j=(e,s,t,o)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of H(s))!L.call(e,r)&&r!==t&&w(e,r,{get:()=>s[r],enumerable:!(o=_(s,r))||o.enumerable});return e};var p=(e,s,t)=>(t=e!=null?O(I(e)):{},j(s||!e||!e.__esModule?w(t,"default",{value:e,enumerable:!0}):t,e));var P=p(require("net")),b=p(require("child_process")),y=p(require("fs")),A=p(require("path"));var i=p(require("path")),g=p(require("fs"));async function m(e,s=process.cwd(),t=process.env){if(process.platform!=="win32")return e;if(i.isAbsolute(e))return await d(e)||e;if(/[/\\]/.test(e)){let n=i.join(s,e);return await d(n)||n}let o,r;if(t){for(let n of Object.keys(t))if(n.toLowerCase()==="path"){let a=t[n];typeof a=="string"&&(o=a,r=a.split(i.delimiter).filter(Boolean),r.push(i.join(t.ProgramW6432||"C:\\Program Files","Docker\\Docker\\resources\\bin")));break}}if(r===void 0||r.length===0){let n=new Error(`No PATH to look up executable '${e}'.`);throw n.code="ENOENT",n}for(let n of r){let a;i.isAbsolute(n)?a=i.join(n,e):a=i.join(s,n,e);let f=await d(a);if(f)return f}let l=new Error(`Exectuable '${e}' not found on PATH '${o}'.`);throw l.code="ENOENT",l}var S=process.env.PATHEXT,x=S?S.toLowerCase().split(";"):[".com",".exe",".bat",".cmd"];async function d(e){if(x.indexOf(i.extname(e))!==-1)return await E(e)?e:void 0;for(let s of x){let t=e+s;if(await E(t))return t}}function E(e){return new Promise(s=>g.stat(e,(t,o)=>s(!t&&o.isFile())))}var v=process.env.VSCODE_SSH_ASKPASS_HANDLE;v||(console.error("VSCODE_SSH_ASKPASS_HANDLE not set."),process.exit(1));(async()=>{let e=process.argv.slice(2),s=process.env.VSCODE_SSH_ASKPASS_COUNTER;if(process.platform==="win32"){let o=process.env.WINDIR,r=o?A.join(o,"System32","wbem","en-US","csv.xsl"):void 0,l=r&&y.existsSync(r)?r:"csv",n=await m("wmic"),f=b.execSync(`"${n}" process where (commandline like "%ssh-askpass.bat%") get processid,parentprocessid /format:"${l}"`).toString().split(/\r?\n/).map(c=>c.trim()).filter(c=>!!c).map(c=>c.split(",")),N=f.shift(),u=f.map(c=>c.reduce((h,k,D)=>(h[N[D]]=k,h),{})).find(c=>c.ProcessId===String(process.ppid));u&&(s=u.ParentProcessId)}else s=e.shift();let t=P.connect(v,()=>{t.write(JSON.stringify({prompt:e.join(" "),counter:s})+`
|
|
`,o=>{o&&(console.error(o),process.exit(1))})});t.setEncoding("utf8"),t.on("data",o=>{process.stdout.write(o)}),t.on("error",o=>{console.error(o),process.exit(1)}),t.on("end",()=>{process.exit(0)})})().catch(console.error);
|
|
//# sourceMappingURL=sshAskpass.js.map
|