import{a as h,b as p,c as w}from"./chunk-74CEPOFO.js";import"./chunk-DXB73IDG.js";var m={name:"fold",summary:"wrap each input line to fit in specified width",usage:"fold [OPTION]... [FILE]...",description:"Wrap input lines in each FILE, writing to standard output. If no FILE is specified, standard input is read.",options:["-w WIDTH    Use WIDTH columns instead of 80","-s          Break at spaces","-b          Count bytes rather than columns"],examples:["fold -w 40 file.txt           # Wrap at 40 columns","fold -sw 40 file.txt          # Word wrap at 40 columns","echo 'long line' | fold -w 5  # Force wrap at 5"]};function N(s,l,n){return n?new TextEncoder().encode(s).length:s==="	"?8-l%8:s==="\b"?-1:1}function g(s,l){if(s.length===0)return s;let{width:n,breakAtSpaces:u,countBytes:i}=l,r=[],e="",t=0,o=-1,f=0;for(let a=0;a<s.length;a++){let d=s[a],c=N(d,t,i);t+c>n&&e.length>0?u&&o>=0?(r.push(e.slice(0,o+1)),e=e.slice(o+1)+d,t=t-f-1+c,o=-1,f=0):(r.push(e),e=d,t=c,o=-1,f=0):(e+=d,t+=c,(d===" "||d==="	")&&(o=e.length-1,f=t-c))}return e.length>0&&r.push(e),r.join(`
`)}function b(s,l){if(s==="")return"";let n=s.split(`
`),u=s.endsWith(`
`)&&n[n.length-1]==="";return u&&n.pop(),n.map(r=>g(r,l)).join(`
`)+(u?`
`:"")}var I={name:"fold",execute:async(s,l)=>{if(p(s))return h(m);let n={width:80,breakAtSpaces:!1,countBytes:!1},u=[],i=0;for(;i<s.length;){let e=s[i];if(e==="-w"&&i+1<s.length){let t=parseInt(s[i+1],10);if(Number.isNaN(t)||t<1)return{exitCode:1,stdout:"",stderr:`fold: invalid number of columns: '${s[i+1]}'
`};n.width=t,i+=2}else if(e.startsWith("-w")&&e.length>2){let t=parseInt(e.slice(2),10);if(Number.isNaN(t)||t<1)return{exitCode:1,stdout:"",stderr:`fold: invalid number of columns: '${e.slice(2)}'
`};n.width=t,i++}else if(e==="-s")n.breakAtSpaces=!0,i++;else if(e==="-b")n.countBytes=!0,i++;else if(e==="-bs"||e==="-sb")n.breakAtSpaces=!0,n.countBytes=!0,i++;else if(e.match(/^-[sb]+w\d+$/)){e.includes("s")&&(n.breakAtSpaces=!0),e.includes("b")&&(n.countBytes=!0);let t=e.replace(/^-[sb]+w/,""),o=parseInt(t,10);if(Number.isNaN(o)||o<1)return{exitCode:1,stdout:"",stderr:`fold: invalid number of columns: '${t}'
`};n.width=o,i++}else if(e.match(/^-[sb]+w$/)&&i+1<s.length){e.includes("s")&&(n.breakAtSpaces=!0),e.includes("b")&&(n.countBytes=!0);let t=parseInt(s[i+1],10);if(Number.isNaN(t)||t<1)return{exitCode:1,stdout:"",stderr:`fold: invalid number of columns: '${s[i+1]}'
`};n.width=t,i+=2}else if(e==="--"){u.push(...s.slice(i+1));break}else if(e.startsWith("-")&&e!=="-"){let t=e.slice(1),o=!1;for(let f of t)if(f==="s")n.breakAtSpaces=!0;else if(f==="b")n.countBytes=!0;else{o=!0;break}if(o)return w("fold",e);i++}else u.push(e),i++}let r="";if(u.length===0){let e=l.stdin??"";r=b(e,n)}else for(let e of u){let t=l.fs.resolvePath(l.cwd,e),o=await l.fs.readFile(t);if(o===null)return{exitCode:1,stdout:r,stderr:`fold: ${e}: No such file or directory
`};r+=b(o,n)}return{exitCode:0,stdout:r,stderr:""}}};export{I as fold};
