-"use strict";var t,e=require("postcss"),n=require("node:path"),s=require("node:fs/promises");function parseArguments(e,n,s){const o=e.map(t=>t.trim()).filter(t=>!!t),i={stdin:!1,stdout:!1,output:void 0,outputDir:void 0,inputs:[],inlineMap:!0,externalMap:!1,replace:!1,pluginOptions:{},debug:!1};let r,a=!1;for(let e=0;e<o.length;e++){const n=o[e];switch(n){case"-o":case"--output":i.output=o[e+1],e++,a=!0;break;case"-m":case"--map":i.externalMap=!0,i.inlineMap=!1,a=!0;break;case"--no-map":i.externalMap=!1,i.inlineMap=!1,a=!0;break;case"-r":case"--replace":i.replace=!0,a=!0;break;case"--debug":i.debug=!0,a=!0;break;case"-d":case"--dir":i.outputDir=o[e+1],e++,a=!0;break;case"-p":case"--plugin-options":r=o[e+1],e++,a=!0;break;default:if(0===n.indexOf("-"))return console.warn(`[error] unknown argument : ${n}\n`),s(),t.InvalidArguments;if(!a){i.inputs.push(n);break}return s(),t.InvalidArguments}}if(i.replace&&(i.output=void 0,i.outputDir=void 0),i.outputDir&&(i.output=void 0),i.inputs.length>1&&i.output)return console.warn('[error] omit "--output" when processing multiple inputs\n'),s(),t.InvalidArguments;0===i.inputs.length&&(i.stdin=!0),i.output||i.outputDir||i.replace||(i.stdout=!0),i.stdout&&(i.externalMap=!1);let p={};if(r)try{p=JSON.parse(r)}catch{return console.warn("[error] plugin options must be valid JSON\n"),s(),t.InvalidArguments}for(const e in p){const o=p[e];if(!n.includes(e))return console.warn(`[error] unknown plugin option: ${e}\n`),s(),t.InvalidArguments;i.pluginOptions[e]=o}return i}async function getStdin(){return new Promise(t=>{let e="",n=!1;if(setTimeout(()=>{n=!0,t("")},1e4),process.stdin.isTTY){if(n)return;t(e)}else process.stdin.setEncoding("utf8"),process.stdin.on("readable",()=>{let t="";for(;t=process.stdin.read();)e+=t??""}),process.stdin.on("end",()=>{n||t(e)})})}async function stdinToStdout(t,n,s){let o="";try{const i=await getStdin();i||(s(),process.exit(1));const r=await e([t]).process(i,{from:"stdin",to:"stdout",map:!!n.inlineMap&&{inline:!0}});r.warnings().forEach(t=>{console.warn(t.toString())}),o=r.css}catch(t){t instanceof Error?console.error(n.debug?t:t.message):console.error(t),process.exit(1)}process.stdout.write(o+(n.inlineMap?"\n":"")),process.exit(0)}async function stdinToFs(t,o,i){let r=o.output;!r&&o.outputDir&&(r=n.join(o.outputDir,"output.css")),r||process.exit(0);try{const n=await getStdin();n||(i(),process.exit(1));const a=await e([t]).process(n,{from:"stdin",to:r,map:!(!o.inlineMap&&!o.externalMap)&&{inline:o.inlineMap}});a.warnings().forEach(t=>{console.warn(t.toString())}),o.externalMap&&a.map?await Promise.all([await s.writeFile(r,a.css+(o.inlineMap?"\n":"")),await s.writeFile(`${r}.map`,a.map.toString())]):await s.writeFile(r,a.css+(o.inlineMap?"\n":""))}catch(t){t instanceof Error?console.error(o.debug?t:t.message):console.error(t),process.exit(1)}console.log(`CSS was written to "${n.normalize(r)}"`),process.exit(0)}async function fsToStdout(t,n){let o=[];try{o=await Promise.all(n.inputs.map(async n=>{const o=await s.readFile(n),i=await e([t]).process(o,{from:n,to:"stdout",map:!1});return i.warnings().forEach(t=>{console.warn(t.toString())}),i.css}))}catch(t){t instanceof Error?console.error(n.debug?t:t.message):console.error(t),process.exit(1)}for(const t of o)process.stdout.write(t);process.exit(0)}async function fsToFs(t,o){try{await Promise.all(o.inputs.map(async i=>{let r=o.output;o.outputDir&&(r=n.join(o.outputDir,n.basename(i))),o.replace&&(r=i),r||process.exit(0);const a=await s.readFile(i),p=await e([t]).process(a,{from:i,to:r,map:!(!o.inlineMap&&!o.externalMap)&&{inline:o.inlineMap}});p.warnings().forEach(t=>{console.warn(t.toString())}),o.externalMap&&p.map?await Promise.all([await s.writeFile(r,p.css+(o.inlineMap?"\n":"")),await s.writeFile(`${r}.map`,p.map.toString())]):await s.writeFile(r,p.css+(o.inlineMap?"\n":"")),console.log(`CSS was written to "${n.normalize(r)}"`)}))}catch(t){t instanceof Error?console.error(o.debug?t:t.message):console.error(t),process.exit(1)}process.exit(0)}!function(t){t.InvalidArguments="INVALID_ARGUMENTS"}(t||(t={})),exports.cli=async function cli(e,n,s,o=!0){const i=parseArguments(process.argv.slice(o?2:3),n,s);i===t.InvalidArguments&&process.exit(1);const r=e(i.pluginOptions);i.stdin&&i.stdout?await stdinToStdout(r,i,s):i.stdin?await stdinToFs(r,i,s):i.stdout?await fsToStdout(r,i):await fsToFs(r,i)},exports.helpTextLogger=function helpTextLogger(t,e,n,s=null){let o=[];if(s){const t=Math.max(...Object.keys(s).map(t=>t.length)),e=new Array(t).fill(" ").join("");e.length&&(o=["\nPlugin Options:",...Object.keys(s).map(t=>` ${(t+e).slice(0,e.length)} ${typeof s[t]}`)],o.push(`\n ${JSON.stringify(s,null,2).split("\n").join("\n ")}`))}const i=[`${e}\n`,` ${n}\n`,"Usage:",` ${t} [input.css] [OPTIONS] [-o|--output output.css]`,` ${t} <input.css>... [OPTIONS] --dir <output-directory>`,` ${t} <input.css>... [OPTIONS] --replace`,"\nOptions:"," -o, --output Output file"," -d, --dir Output directory"," -r, --replace Replace (overwrite) the input file"," -m, --map Create an external sourcemap"," --no-map Disable the default inline sourcemaps"," -p, --plugin-options Stringified JSON object with plugin options"];return o.length>0&&i.push(...o),()=>{console.warn(i.join("\n"))}},exports.parseArguments=parseArguments;
0 commit comments