import{n as e,r as t,t as n}from"./chunk-74CEPOFO-V0JXh91S.mjs";var r={name:`chmod`,summary:`change file mode bits`,usage:`chmod [OPTIONS] MODE FILE...`,options:[`-R      change files recursively`,`-v      output a diagnostic for every file processed`,`    --help display this help and exit`]},i={name:`chmod`,async execute(i,s){if(n(i))return t(r);if(i.length<2)return{stdout:``,stderr:`chmod: missing operand
`,exitCode:1};let c=!1,l=!1,u=0;for(;u<i.length&&i[u].startsWith(`-`);){let t=i[u];if(t===`-R`||t===`--recursive`)c=!0,u++;else if(t===`-v`||t===`--verbose`)l=!0,u++;else if(t===`--`){u++;break}else{if(/^[+-]?[rwxugo]+/.test(t)||/^\d+$/.test(t))break;if(/^-[Rv]+$/.test(t)){t.includes(`R`)&&(c=!0),t.includes(`v`)&&(l=!0),u++;continue}return e(`chmod`,t)}}if(i.length-u<2)return{stdout:``,stderr:`chmod: missing operand
`,exitCode:1};let d=i[u],f=i.slice(u+1),p=/^[0-7]+$/.test(d),m;if(p)m=parseInt(d,8);else try{o(d,420)}catch{return{stdout:``,stderr:`chmod: invalid mode: '${d}'
`,exitCode:1}}let h=``,g=``,_=!1;for(let e of f){let t=s.fs.resolvePath(s.cwd,e);try{let n;if(n=p&&m!==void 0?m:o(d,(await s.fs.stat(t)).mode),await s.fs.chmod(t,n),l&&(h+=`mode of '${e}' changed to ${n.toString(8).padStart(4,`0`)}
`),c&&(await s.fs.stat(t)).isDirectory){let e=await a(s,t,p?m:void 0,p?void 0:d,l);h+=e}}catch{g+=`chmod: cannot access '${e}': No such file or directory
`,_=!0}}return{stdout:h,stderr:g,exitCode:_?1:0}}};async function a(e,t,n,r,i){let s=``,c=await e.fs.readdir(t);for(let l of c){let c=t===`/`?`/${l}`:`${t}/${l}`,u;u=n===void 0?r===void 0?420:o(r,(await e.fs.stat(c)).mode):n,await e.fs.chmod(c,u),i&&(s+=`mode of '${c}' changed to ${u.toString(8).padStart(4,`0`)}
`),(await e.fs.stat(c)).isDirectory&&(s+=await a(e,c,n,r,i))}return s}function o(e,t=420){if(/^[0-7]+$/.test(e))return parseInt(e,8);let n=t&4095,r=e.split(`,`);for(let t of r){let r=t.match(/^([ugoa]*)([+\-=])([rwxXst]*)$/);if(!r)throw Error(`Invalid mode: ${e}`);let i=r[1]||`a`,a=r[2],o=r[3];(i===`a`||i===``)&&(i=`ugo`);let s=0;o.includes(`r`)&&(s|=4),o.includes(`w`)&&(s|=2),(o.includes(`x`)||o.includes(`X`))&&(s|=1);let c=0;o.includes(`s`)&&(i.includes(`u`)&&(c|=2048),i.includes(`g`)&&(c|=1024)),o.includes(`t`)&&(c|=512);for(let e of i){let t=0;e===`u`?t=6:e===`g`?t=3:e===`o`&&(t=0);let r=s<<t;a===`+`?n|=r:a===`-`?n&=~r:a===`=`&&(n&=~(7<<t),n|=r)}a===`+`?n|=c:a===`-`?n&=~c:a===`=`&&(o.includes(`s`)&&(i.includes(`u`)&&(n&=-2049,n|=c&2048),i.includes(`g`)&&(n&=-1025,n|=c&1024)),o.includes(`t`)&&(n&=-513,n|=c&512))}return n}var s={name:`chmod`,flags:[{flag:`-R`,type:`boolean`},{flag:`-v`,type:`boolean`}],needsArgs:!0,minArgs:2};export{s as n,i as t};
//# sourceMappingURL=chunk-4GTNDTRF-DLnFbNSw.mjs.map