UNPKG

@stories-js/cli

Version:

Stories CLI to manage list of stories in UI

4 lines (3 loc) 4.48 kB
#!/usr/bin/env node var e=require("fs"),t=require("chokidar"),r=require("yargs"),n=require("yargs/helpers"),o=require("path"),i=require("fast-glob");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s,u=a(t),c=a(r),p=a(i),l=process.cwd(),f=["**/*.stories.tsx","**/*.stories.ts","**/*.stories.jsx","**/*.stories.js"],d=c.default(n.hideBin(process.argv)).command("scan <patterns...>","Search and save list of stories in file",function(e){return e.option("output",{describe:"The relative path to file to save output.",default:"./stories-list.js",type:"string"}).option("from",{describe:"The path to search from & generate imports",default:l,type:"string"}).option("dryRun",{describe:"Set this to avoid writing any files.",default:!1,type:"boolean"}).option("quiet",{describe:"Hide all logs",default:!1,type:"boolean"}).option("_",{describe:"Search patterns",default:f,type:"string"})}).example("$0 **/*.stories.tsx","Search by pattern").example("$0 --from ./src","Search in folder and all subfolders").example("$0 --output ./stories-list.js","Save output stories list in file").example("$0 --dryRun","Run but do not save output").example("$0 --quiet","Suppress logs messages").version("version","0.2.0").argv,h={dryRun:d.dryRun||!1,quiet:d.quiet||!1,from:d.from||l,output:d.output||"./stories-list.js",search:(s=d._,s.length>0?s:f)};function v(){return v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},v.apply(this,arguments)}var m=function(){return m=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},m.apply(this,arguments)};function g(e){return e.toLowerCase()}var y=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],P=/[^A-Z0-9]+/gi;function b(e,t,r){return t instanceof RegExp?e.replace(t,r):t.reduce(function(e,t){return e.replace(t,r)},e)}function j(e,t){var r=e.charAt(0),n=e.substr(1).toLowerCase();return t>0&&r>="0"&&r<="9"?"_"+r+n:""+r.toUpperCase()+n}function x(e,t){return 0===t?e.toLowerCase():j(e,t)}function R(e){var t=new Set,r=e.map(function(e,r){var n=o.parse(e),i=function(e,t){return void 0===t&&(t={}),function(e,t){return void 0===t&&(t={}),function(e,t){void 0===t&&(t={});for(var r=t.splitRegexp,n=t.stripRegexp,o=void 0===n?P:n,i=t.transform,a=void 0===i?g:i,s=t.delimiter,u=void 0===s?" ":s,c=b(b(e,void 0===r?y:r,"$1\0$2"),o,"\0"),p=0,l=c.length;"\0"===c.charAt(p);)p++;for(;"\0"===c.charAt(l-1);)l--;return c.slice(p,l).split("\0").map(a).join(u)}(e,m({delimiter:"",transform:j},t))}(e,m({transform:x},t))}(n.name);t.has(i)?t.add(i+"_"+r):t.add(i);var a=o.format(v({},n,{base:void 0,ext:void 0}));return a.startsWith(".")||(a="."+o.sep+a),{name:i,originalPath:e,importPath:a}});return r}function S(e){return e.split(o.sep).join(o.posix.sep)}var w=function(t){try{return A(t),Promise.resolve(function(e){var t=e.rootPath,r=e.patterns,n=e.outputPath,i=e.ignorePaths;try{var a=o.resolve(t);return Promise.resolve(p.default(r,{absolute:!0,caseSensitiveMatch:!1,ignore:i,cwd:a})).then(function(e){var r=e.map(S),i=o.resolve(t,n),s=o.dirname(i),u=r.map(function(e){return o.relative(s,e)});return{paths:r,searchFrom:a,outputFilePath:i,importPaths:u}})}catch(e){return Promise.reject(e)}}({rootPath:h.from,patterns:h.search,outputPath:h.output,ignorePaths:q})).then(function(t){var r=t.outputFilePath,n=t.importPaths;A("Saving to: "+r);var o,i=["/* NOTE: This is an autogenerated file; please do not edit. */\n",(o=R(n)).map(function(e){return"import * as "+e.name+" from '"+e.importPath+"'"}).join(";\n"),"","const modules = [",o.map(function(e){return" "+e.name+","}).join("\n"),"];\n","export default modules;"].join("\n");h.dryRun||(e.writeFileSync(r,i,"utf8"),A("Saved.")),A(""),(h.quiet||h.dryRun)&&console.log(i)})}catch(e){return Promise.reject(e)}},q=["**/node_modules/**"],A=h.dryRun?function(){}:console.log;exports.scan=function(){A("\nLooking stories in "+h.from),A("Search patterns are "+h.search+"\n"),h.dryRun&&A("Dry run."),u.default.watch(h.search,{cwd:h.from,usePolling:!0,interval:2e3,binaryInterval:2e3}).on("error",function(e){return A("Watcher error: "+e)}).on("add",function(e){return Promise.resolve(w("Added "+e))}).on("change",function(e){return Promise.resolve(w("Change "+e))}).on("unlink",function(e){return Promise.resolve(w("Removed "+e))})}; //# sourceMappingURL=cli.cjs.map