9 lines
2.1 KiB
JavaScript
9 lines
2.1 KiB
JavaScript
import{createRequire} from"node:module";const require=createRequire(import.meta.url);
|
|
import{a as m}from"./chunk-QIQMJJZ4.js";import{a as $}from"./chunk-W5DWRFSU.js";import{a as y,b as h}from"./chunk-QAYAQNCG.js";var D={name:"cp",summary:"copy files and directories",usage:"cp [OPTION]... SOURCE... DEST",options:["-r, -R, --recursive copy directories recursively","-n, --no-clobber do not overwrite an existing file","-p, --preserve preserve file attributes","-v, --verbose explain what is being done"," --help display this help and exit"]},E={recursive:{short:"r",long:"recursive",type:"boolean"},recursiveUpper:{short:"R",type:"boolean"},noClobber:{short:"n",long:"no-clobber",type:"boolean"},preserve:{short:"p",long:"preserve",type:"boolean"},verbose:{short:"v",long:"verbose",type:"boolean"}},A={name:"cp",async execute(f,e){if(h(f))return y(D);let t=m("cp",f,E);if(!t.ok)return t.error;let u=t.result.flags.recursive||t.result.flags.recursiveUpper,w=t.result.flags.noClobber,C=t.result.flags.preserve,P=t.result.flags.verbose,c=t.result.positional;if(c.length<2)return{stdout:"",stderr:`cp: missing destination file operand
|
|
`,exitCode:1};let g=c.pop()??"",d=c,o=e.fs.resolvePath(e.cwd,g),b="",n="",l=0,p=!1;try{p=(await e.fs.stat(o)).isDirectory}catch{}if(d.length>1&&!p)return{stdout:"",stderr:`cp: target '${g}' is not a directory
|
|
`,exitCode:1};for(let r of d)try{let a=e.fs.resolvePath(e.cwd,r),s=await e.fs.stat(a),i=o;if(p){let v=r.split("/").pop()||r;i=o==="/"?`/${v}`:`${o}/${v}`}if(s.isDirectory&&!u){n+=`cp: -r not specified; omitting directory '${r}'
|
|
`,l=1;continue}if(w)try{await e.fs.stat(i);continue}catch{}await e.fs.cp(a,i,{recursive:u}),P&&(b+=`'${r}' -> '${i}'
|
|
`)}catch(a){let s=$(a);s.includes("ENOENT")||s.includes("no such file")?n+=`cp: cannot stat '${r}': No such file or directory
|
|
`:n+=`cp: cannot copy '${r}': ${s}
|
|
`,l=1}return{stdout:b,stderr:n,exitCode:l}}},F={name:"cp",flags:[{flag:"-r",type:"boolean"},{flag:"-R",type:"boolean"},{flag:"-n",type:"boolean"},{flag:"-p",type:"boolean"},{flag:"-v",type:"boolean"}],needsArgs:!0,minArgs:2};export{A as a,F as b};
|