UNPKG

admina

Version:

Detect root/admin/sudo and execute commands as it if available

3 lines (2 loc) 1.81 kB
function e(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}function t(){return null!==b.sync("sudo",{nothrow:!0})}function n(){return process.getuid?.()===0||!!process.env.CI}function r(){return n()&&t()}function o(e){return r()?`sudo ${e}`:e}function c(e,t=[],n=R){return r()?l(a(e,t),n):y(e,t,n)}function s(e,t=[],n=R){return r()?S(a(e,t),n):h(e,t,n)}function a(e,t){return`sudo ${i([e,...t]).join(" ")}`}function i(e){return e.map(e=>d(e)?e:`'${e}'`)}function d(e){if(e.length<2)return!1;let t=e[0],n=e[e.length-1];return"'"===t&&"'"===n||'"'===t&&'"'===n}async function u(){try{return await h("fltmc"),!0}catch{return!1}}async function f(){if("win32"!==process.platform)return!1;try{return await h("fsutil",["dirty","query",process.env.systemdrive??""]),!0}catch(e){if("ENOENT"===e.code)return u();return!1}}function p(){return"win32"===process.platform?A():n()}async function $(e){if(("linux"===process.platform||"darwin"===process.platform)&&r()&&void 0!==process.env.SUDO_USER){let t=w.statSync(e).isDirectory();await s("chown",[...t?["-R"]:[],process.env.SUDO_USER,e],R)}}var x,m={};import b from"which";import{execaCommandSync as l,execaSync as y,execaCommand as S,execa as h}from"execa";import w from"fs";e(m,"hasSudo",()=>t),e(m,"isRoot",()=>n),e(m,"isSudo",()=>r),e(m,"prependSudo",()=>o),e(m,"defaultExecOptions",()=>R),e(m,"execRootSync",()=>c),e(m,"execRoot",()=>s);let R={stdio:"inherit",shell:!0};e(x={},"isAdminWindows",()=>A),e(x,"isAdminPosix",()=>g),e(x,"isAdmin",()=>p);let A=f,g=n;e({},"grantUserWriteAccess",()=>$);export{t as hasSudo,n as isRoot,r as isSudo,o as prependSudo,R as defaultExecOptions,c as execRootSync,s as execRoot,A as isAdminWindows,g as isAdminPosix,p as isAdmin,$ as grantUserWriteAccess}; //# sourceMappingURL=index.node.mjs.map