8 lines
1.6 KiB
JavaScript
8 lines
1.6 KiB
JavaScript
import{createRequire} from"node:module";const require=createRequire(import.meta.url);
|
|
var F={name:"seq",async execute(r){let d=`
|
|
`,f=!1,s=[],t=0;for(;t<r.length;){let e=r[t];if(e==="-s"&&t+1<r.length){d=r[t+1],t+=2;continue}if(e==="-w"){f=!0,t++;continue}if(e==="--"){t++;break}if(e.startsWith("-")&&e!=="-"){if(e.startsWith("-s")&&e.length>2){d=e.slice(2),t++;continue}if((e==="-ws"||e==="-sw")&&(f=!0,t+1<r.length)){d=r[t+1],t+=2;continue}}s.push(e),t++}for(;t<r.length;)s.push(r[t]),t++;if(s.length===0)return{stdout:"",stderr:`seq: missing operand
|
|
`,exitCode:1};let l=1,o=1,a;if(s.length===1?a=parseFloat(s[0]):s.length===2?(l=parseFloat(s[0]),a=parseFloat(s[1])):(l=parseFloat(s[0]),o=parseFloat(s[1]),a=parseFloat(s[2])),Number.isNaN(l)||Number.isNaN(o)||Number.isNaN(a))return{stdout:"",stderr:`seq: invalid floating point argument: '${s.find(n=>Number.isNaN(parseFloat(n)))}'
|
|
`,exitCode:1};if(o===0)return{stdout:"",stderr:`seq: invalid Zero increment value: '0'
|
|
`,exitCode:1};let i=[],h=e=>{let n=String(e),u=n.indexOf(".");return u===-1?0:n.length-u-1},c=Math.max(h(l),h(o),h(a)),p=1e5,g=0;if(o>0)for(let e=l;e<=a+1e-10&&!(g++>p);e+=o)i.push(c>0?e.toFixed(c):String(Math.round(e)));else for(let e=l;e>=a-1e-10&&!(g++>p);e+=o)i.push(c>0?e.toFixed(c):String(Math.round(e)));if(f&&i.length>0){let e=Math.max(...i.map(n=>n.replace("-","").length));for(let n=0;n<i.length;n++){let u=i[n].startsWith("-"),x=(u?i[n].slice(1):i[n]).padStart(e,"0");i[n]=u?`-${x}`:x}}let m=i.join(d);return{stdout:m?`${m}
|
|
`:"",stderr:"",exitCode:0}}},b={name:"seq",flags:[{flag:"-s",type:"value",valueHint:"string"},{flag:"-w",type:"boolean"}],needsArgs:!0};export{F as a,b};
|