{"_id":"sade","_rev":"2206914","name":"sade","description":"Smooth (CLI) operator 🎶","dist-tags":{"latest":"1.8.1"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"time":{"modified":"2022-01-06T17:26:18.000Z","created":"2017-05-03T08:00:09.136Z","1.8.1":"2022-01-06T17:09:33.711Z","1.8.0":"2021-12-31T18:22:31.074Z","1.7.4":"2020-09-28T18:41:46.133Z","1.7.3":"2020-02-16T08:03:21.204Z","1.7.2":"2020-02-13T04:41:32.355Z","1.7.1":"2020-02-13T02:18:13.761Z","1.7.0":"2019-12-09T23:41:47.424Z","1.6.1":"2019-07-29T18:18:47.792Z","1.6.0":"2019-06-23T01:03:04.773Z","1.5.1":"2019-06-16T06:43:05.910Z","1.5.0":"2019-06-08T16:56:08.087Z","1.4.3":"2019-06-08T16:40:53.067Z","1.4.2":"2018-12-21T09:45:00.963Z","1.4.1":"2018-05-13T16:53:01.238Z","1.4.0":"2018-03-02T06:59:31.741Z","1.3.2":"2018-02-07T23:40:50.423Z","1.3.1":"2018-01-13T21:56:13.863Z","1.3.0":"2017-12-25T21:31:42.220Z","1.2.0":"2017-12-24T01:11:17.853Z","1.1.1":"2017-12-20T08:28:32.171Z","1.1.0":"2017-12-20T08:12:52.234Z","1.0.0":"2017-12-17T23:16:44.074Z","0.0.0":"2017-05-03T08:00:09.136Z"},"users":{"raisiqueira":true,"libuk":true},"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"https://lukeed.com"},"repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"versions":{"1.8.1":{"name":"sade","version":"1.8.1","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"module":"lib/index.mjs","main":"lib/index.js","types":"index.d.ts","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"https://lukeed.com"},"scripts":{"build":"rollup -c","test":"tape -r esm test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">=6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"esm":"3.2.25","rollup":"1.32.1","tap-spec":"4.1.2","tape":"4.14.0","terser":"4.8.0"},"gitHead":"1cdf3e464ca899dcd6e758a50eb82cf7cf484771","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.8.1","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"shasum":"0a78e81d658d394887be57d2a409bf703a3b2701","size":10449,"noattachment":false,"key":"/sade/-/sade-1.8.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.8.1.tgz"},"_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"directories":{},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.8.1_1641488973578_0.8064121640761344"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-01-06T17:22:19.639Z","publish_time":1641488973711,"_cnpm_publish_time":1641488973711},"1.8.0":{"name":"sade","version":"1.8.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"module":"lib/index.mjs","main":"lib/index.js","types":"index.d.ts","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"https://lukeed.com"},"scripts":{"build":"rollup -c","test":"tape -r esm test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">=6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"esm":"3.2.25","rollup":"1.32.1","tap-spec":"4.1.2","tape":"4.14.0","terser":"4.8.0"},"gitHead":"a03a5b99b0b67f8308a91043b1c7dcbcad68152e","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.8.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"shasum":"c9905381e236953a635450803633902095e8ec36","size":10501,"noattachment":false,"key":"/sade/-/sade-1.8.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.8.0.tgz"},"_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"directories":{},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.8.0_1640974950933_0.5995690553432278"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-31T18:32:37.705Z","publish_time":1640974951074,"_cnpm_publish_time":1640974951074},"1.7.4":{"name":"sade","version":"1.7.4","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"https://lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"89f7377442a38fa90e51abf4f953e14af0f2f2cf","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.7.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"shasum":"ea681e0c65d248d2095c90578c03ca0bb1b54691","size":10873,"noattachment":false,"key":"/sade/-/sade-1.7.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.7.4.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.7.4_1601318505894_0.5796883147301215"},"_hasShrinkwrap":false,"publish_time":1601318506133,"_cnpm_publish_time":1601318506133},"1.7.3":{"name":"sade","version":"1.7.3","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"3c82ab843ca9b3fd7b8ab50bff876d6de9056f86","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.7.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"a217ccc4fb4abb2d271648bf48f6628b2636fa1b","size":10766,"noattachment":false,"key":"/sade/-/sade-1.7.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.7.3.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.7.3_1581840200616_0.08030349765373934"},"_hasShrinkwrap":false,"publish_time":1581840201204,"_cnpm_publish_time":1581840201204},"1.7.2":{"name":"sade","version":"1.7.2","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"ff2ed465172908cf57ad1d8277bdd730a6e13327","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.7.2","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"c70c72dc636c0cadd45db7855175fb1a7161270f","size":10760,"noattachment":false,"key":"/sade/-/sade-1.7.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.7.2.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.7.2_1581568892183_0.4740481825933509"},"_hasShrinkwrap":false,"publish_time":1581568892355,"_cnpm_publish_time":1581568892355},"1.7.1":{"name":"sade","version":"1.7.1","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"a5a332ddf930fa5033f878ab1386b89b55f0fb60","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.7.1","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"af5fd02d7ecbae0974fecad79fbf6255545a83d0","size":10745,"noattachment":false,"key":"/sade/-/sade-1.7.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.7.1.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.7.1_1581560293630_0.7876170732284575"},"_hasShrinkwrap":false,"publish_time":1581560293761,"_cnpm_publish_time":1581560293761},"1.7.0":{"name":"sade","version":"1.7.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"97bd77890594ab574be7f4873caf790e89454385","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.7.0","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"5f16f718c80c6ba61d9031da1e22c07e1479b5d2","size":10707,"noattachment":false,"key":"/sade/-/sade-1.7.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.7.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.7.0_1575934907277_0.056404755665704576"},"_hasShrinkwrap":false,"publish_time":1575934907424,"_cnpm_publish_time":1575934907424},"1.6.1":{"name":"sade","version":"1.6.1","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"52909ec1ecfe75446c6cc231ea6aba99c1d14477","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.6.1","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"aba16655e998b2b68beb9f13938af010f42eddd2","size":9489,"noattachment":false,"key":"/sade/-/sade-1.6.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.6.1.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.6.1_1564424327667_0.36030104356264103"},"_hasShrinkwrap":false,"publish_time":1564424327792,"_cnpm_publish_time":1564424327792},"1.6.0":{"name":"sade","version":"1.6.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"a7c483bf0f1c806a941a1a5b6ab9efb7ff800460","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.6.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"b865b18113a73291f2a480f2e911ad5e975923e6","size":9479,"noattachment":false,"key":"/sade/-/sade-1.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.6.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.6.0_1561251784536_0.6556674410240682"},"_hasShrinkwrap":false,"publish_time":1561251784773,"_cnpm_publish_time":1561251784773},"1.5.1":{"name":"sade","version":"1.5.1","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"1058f3b5302a8a3ae4f814faec95a7ef0bef3035","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.5.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"4ecff39e0fe80d2dac77dca2608715df8cb70f98","size":8303,"noattachment":false,"key":"/sade/-/sade-1.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.5.1.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.5.1_1560667385801_0.5894402479667928"},"_hasShrinkwrap":false,"publish_time":1560667385910,"_cnpm_publish_time":1560667385910},"1.5.0":{"name":"sade","version":"1.5.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"c7c97b3386a401a4eb6cbc47a5b5337a48f4f151","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.5.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"5289b73be9af3810f1de94f85923e3ff637f29e6","size":8303,"noattachment":false,"key":"/sade/-/sade-1.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.5.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.5.0_1560012967981_0.8403344348885331"},"_hasShrinkwrap":false,"publish_time":1560012968087,"_cnpm_publish_time":1560012968087},"1.4.3":{"name":"sade","version":"1.4.3","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"206188a83897b9d2f330526a3f8515cc32b99d45","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.4.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"8593d4b6c7e500cd8f7bd77944de119fb5ded2e3","size":8075,"noattachment":false,"key":"/sade/-/sade-1.4.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.4.3.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.4.3_1560012052936_0.10215175919177044"},"_hasShrinkwrap":false,"publish_time":1560012053067,"_cnpm_publish_time":1560012053067},"1.4.2":{"name":"sade","version":"1.4.2","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"63636556388981a0608731261eb91e6f20477af8","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.4.2","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"b1946ef9ec62450b74e17d9fec30156c94f193a6","size":8069,"noattachment":false,"key":"/sade/-/sade-1.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.4.2.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.4.2_1545385500827_0.523584997564216"},"_hasShrinkwrap":false,"publish_time":1545385500963,"_cnpm_publish_time":1545385500963},"1.4.1":{"name":"sade","version":"1.4.1","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"987ffa974626e281de7ff0b9eaa63acadb2a134e","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.4.1","_npmVersion":"5.5.1","_nodeVersion":"8.9.0","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"80c6dfd3c03db1fbcd6bc10c0eb52f71e7cadc01","size":8121,"noattachment":false,"key":"/sade/-/sade-1.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.4.1.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.4.1_1526230381143_0.8932834721166274"},"_hasShrinkwrap":false,"publish_time":1526230381238,"_cnpm_publish_time":1526230381238},"1.4.0":{"name":"sade","version":"1.4.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"ae3267fb3dbbd345aa4117796f4af27df541221d","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.4.0","_shasum":"51874eb18600aa54ee39c8f566c2f4c999a7cd47","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"51874eb18600aa54ee39c8f566c2f4c999a7cd47","size":8169,"noattachment":false,"key":"/sade/-/sade-1.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.4.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.4.0_1519973971608_0.0460306947491016"},"_hasShrinkwrap":false,"publish_time":1519973971741,"_cnpm_publish_time":1519973971741},"1.3.2":{"name":"sade","version":"1.3.2","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"f0675580878809a743f62c88b3554919458a354c","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.3.2","_shasum":"8eb8edf859709822f12176217de2bf5f85325c06","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"8eb8edf859709822f12176217de2bf5f85325c06","size":7891,"noattachment":false,"key":"/sade/-/sade-1.3.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.3.2.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade_1.3.2_1518046850375_0.3610719244292693"},"_hasShrinkwrap":false,"publish_time":1518046850423,"_cnpm_publish_time":1518046850423},"1.3.1":{"name":"sade","version":"1.3.1","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"68b2162f63bdd1a681f5976dbf73955500033aa5","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.3.1","_shasum":"3c1e39b6dea2eb54de048319168ccdfeb01373f7","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"3c1e39b6dea2eb54de048319168ccdfeb01373f7","size":7720,"noattachment":false,"key":"/sade/-/sade-1.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.3.1.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade-1.3.1.tgz_1515880573765_0.5714687404688448"},"directories":{},"publish_time":1515880573863,"_hasShrinkwrap":false,"_cnpm_publish_time":1515880573863},"1.3.0":{"name":"sade","version":"1.3.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"d28057fb046cf2faffa91a8509c6bc97dbf1549c","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.3.0","_shasum":"e5e3c51f7499471919bc34a9cc5ba203e7c80531","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"e5e3c51f7499471919bc34a9cc5ba203e7c80531","size":7714,"noattachment":false,"key":"/sade/-/sade-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.3.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade-1.3.0.tgz_1514237502069_0.22517353855073452"},"directories":{},"publish_time":1514237502220,"_hasShrinkwrap":false,"_cnpm_publish_time":1514237502220},"1.2.0":{"name":"sade","version":"1.2.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"36caa74f7b0360810265886939accd1f9f226a3c","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.2.0","_shasum":"6712d874a2a305ebe6c741541328e47f8a0d87ef","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"6712d874a2a305ebe6c741541328e47f8a0d87ef","size":7102,"noattachment":false,"key":"/sade/-/sade-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.2.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade-1.2.0.tgz_1514077877770_0.3635411881841719"},"directories":{},"publish_time":1514077877853,"_hasShrinkwrap":false,"_cnpm_publish_time":1514077877853},"1.1.1":{"name":"sade","version":"1.1.1","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"7823ac5ec23138a675f653bade7969ccf2eeec1e","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.1.1","_shasum":"aa4085249107805a46e9a032acda27d145bc8645","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"aa4085249107805a46e9a032acda27d145bc8645","size":6527,"noattachment":false,"key":"/sade/-/sade-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.1.1.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade-1.1.1.tgz_1513758512052_0.7042209121864289"},"directories":{},"publish_time":1513758512171,"_hasShrinkwrap":false,"_cnpm_publish_time":1513758512171},"1.1.0":{"name":"sade","version":"1.1.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"da432d433ceb30264ffbcac40ea923e9333860b5","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.1.0","_shasum":"a0c638970ba3ed72a718b8c526aa4cb9ae9d49c9","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"a0c638970ba3ed72a718b8c526aa4cb9ae9d49c9","size":6344,"noattachment":false,"key":"/sade/-/sade-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.1.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade-1.1.0.tgz_1513757572144_0.9339809680823237"},"directories":{},"publish_time":1513757572234,"_hasShrinkwrap":false,"_cnpm_publish_time":1513757572234},"1.0.0":{"name":"sade","version":"1.0.0","description":"Smooth (CLI) operator 🎶","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"main":"lib/index.js","license":"MIT","files":["lib"],"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"scripts":{"test":"tape test/*.js | tap-spec"},"dependencies":{"mri":"^1.1.0","pad-right":"^0.2.2"},"engines":{"node":">= 6"},"keywords":["cli","cli-app","commander","arguments","parser","yargs","argv"],"devDependencies":{"tap-spec":"^4.1.1","tape":"^4.8.0"},"gitHead":"84b4743e2ca092d669912ed9bd28e70d6cacadaf","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@1.0.0","_shasum":"e7c130fd3d3fb767b0a48e7e9d63035fa938062c","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"e7c130fd3d3fb767b0a48e7e9d63035fa938062c","size":6206,"noattachment":false,"key":"/sade/-/sade-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-1.0.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sade-1.0.0.tgz_1513552603967_0.76875492464751"},"directories":{},"publish_time":1513552604074,"_hasShrinkwrap":false,"_cnpm_publish_time":1513552604074},"0.0.0":{"name":"sade","version":"0.0.0","description":"Smooth CLI operator","license":"MIT","repository":{"type":"git","url":"git+https://github.com/lukeed/sade.git"},"author":{"name":"Luke Edwards","email":"luke.edwards05@gmail.com","url":"lukeed.com"},"dependencies":{"mri":"^0.1.0"},"gitHead":"b532b8aa1e8d33c34102f4804fd0a94e7bb4a8a1","bugs":{"url":"https://github.com/lukeed/sade/issues"},"homepage":"https://github.com/lukeed/sade#readme","_id":"sade@0.0.0","scripts":{},"_shasum":"700bef5d9d3210e9bd691c80718aa353b746c8a6","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"lukeed","email":"luke@lukeed.com"},"dist":{"shasum":"700bef5d9d3210e9bd691c80718aa353b746c8a6","size":282,"noattachment":false,"key":"/sade/-/sade-0.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sade/download/sade-0.0.0.tgz"},"maintainers":[{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/sade-0.0.0.tgz_1493798408909_0.23643975867889822"},"directories":{},"publish_time":1493798409136,"_hasShrinkwrap":false,"_cnpm_publish_time":1493798409136}},"readme":"# sade [![Build Status](https://travis-ci.org/lukeed/sade.svg?branch=master)](https://travis-ci.org/lukeed/sade)\n\n> Smooth (CLI) Operator ????\n\nSade is a small but powerful tool for building command-line interface (CLI) applications for Node.js that are fast, responsive, and helpful!\n\nIt enables default commands, git-like subcommands, option flags with aliases, default option values with type-casting, required-vs-optional argument handling, command validation, and automated help text generation!\n\nYour app's UX will be as smooth as butter... just like [Sade's voice](https://www.youtube.com/watch?v=4TYv2PhG89A). ????\n\n\n## Install\n\n```\n$ npm install --save sade\n```\n\n\n## Usage\n\n***Input:***\n\n```js\n#!/usr/bin/env node\n\nconst sade = require('sade');\n\nconst prog = sade('my-cli');\n\nprog\n  .version('1.0.5')\n  .option('--global, -g', 'An example global flag')\n  .option('-c, --config', 'Provide path to custom config', 'foo.config.js');\n\nprog\n  .command('build <src> <dest>')\n  .describe('Build the source directory. Expects an `index.js` entry file.')\n  .option('-o, --output', 'Change the name of the output file', 'bundle.js')\n  .example('build src build --global --config my-conf.js')\n  .example('build app public -o main.js')\n  .action((src, dest, opts) => {\n    console.log(`> building from ${src} to ${dest}`);\n    console.log('> these are extra opts', opts);\n  });\n\nprog.parse(process.argv);\n```\n\n***Output:***\n\n```a\n$ my-cli --help\n\n  Usage\n    $ my-cli <command> [options]\n\n  Available Commands\n    build    Build the source directory.\n\n  For more info, run any command with the `--help` flag\n    $ my-cli build --help\n\n  Options\n    -v, --version    Displays current version\n    -g, --global     An example global flag\n    -c, --config     Provide path to custom config  (default foo.config.js)\n    -h, --help       Displays this message\n\n\n$ my-cli build --help\n\n  Description\n    Build the source directory.\n    Expects an `index.js` entry file.\n\n  Usage\n    $ my-cli build <src> [options]\n\n  Options\n    -o, --output    Change the name of the output file  (default bundle.js)\n    -g, --global    An example global flag\n    -c, --config    Provide path to custom config  (default foo.config.js)\n    -h, --help      Displays this message\n\n  Examples\n    $ my-cli build src build --global --config my-conf.js\n    $ my-cli build app public -o main.js\n```\n\n## Tips\n\n- **Define your global/program-wide version, options, description, and/or examples first.**<br>\n  _Once you define a Command, you can't access the global-scope again._\n\n- **Define all commands & options in the order that you want them to appear.**<br>\n  _Sade will not mutate or sort your CLI for you. Global options print before local options._\n\n- **Required arguments without values will error & exit**<br>\n  _An `Insufficient arguments!` error will be displayed along with a help prompt._\n\n- **Don't worry about manually displaying help~!**<br>\n  _Your help text is displayed automatically... including command-specific help text!_\n\n- **Automatic default/basic patterns**<br>\n  _Usage text will always append `[options]` & `--help` and `--version` are done for you._\n\n- **Only define what you want to display!**<br>\n  _Help text sections (example, options, etc) will only display if you provide values._\n\n\n## Subcommands\n\nSubcommands are defined & parsed like any other command! When defining their [`usage`](#usage-1), everything up until the first argument (`[foo]` or `<foo>`) is interpreted as the command string.\n\nThey should be defined in the order that you want them to appear in your general `--help` output.\n\nLastly, it is _not_ necessary to define the subcommand's \"base\" as an additional command. However, if you choose to do so, it's recommended that you define it first for better visibility.\n\n```js\nconst prog = sade('git');\n\n// Not necessary for subcommands to work, but it's here anyway!\nprog\n  .command('remote')\n  .describe('Manage set of tracked repositories')\n  .action(opts => {\n    console.log('~> Print current remotes...');\n  });\n\nprog\n  .command('remote add <name> <url>', 'Demo...')\n  .action((name, url, opts) => {\n    console.log(`~> Adding a new remote (${name}) to ${url}`);\n  });\n\nprog\n  .command('remote rename <old> <new>', 'Demo...')\n  .action((old, nxt, opts) => {\n    console.log(`~> Renaming from ${old} to ${nxt}~!`);\n  });\n```\n\n\n## Single Command Mode\n\nIn certain circumstances, you may only need `sade` for a single-command CLI application.\n\n> **Note:** Until `v1.6.0`, this made for an awkward pairing.\n\nTo enable this, you may make use of the [`isSingle`](#issingle) argument. Doing so allows you to pass the program's entire [`usage` text](#usage-1) into the `name` argument.\n\nWith \"Single Command Mode\" enabled, your entire binary operates as one command. This means that any [`prog.command`](#progcommandusage-desc-opts) calls are disallowed & will instead throw an Error. Of course, you may still define a program version, a description, an example or two, and declare options. You are customizing the program's attributes as a whole.<sup>*</sup>\n\n> <sup>*</sup> This is true for multi-command applications, too, up until your first `prog.command()` call!\n\n***Example***\n\nLet's reconstruct [`sirv-cli`](https://github.com/lukeed/sirv), which is a single-command application that (optionally) accepts a directory from which to serve files. It also offers a slew of option flags:\n\n```js\nsade('sirv [dir]', true)\n  .version('1.0.0')\n  .describe('Run a static file server')\n  .example('public -qeim 31536000')\n  .example('--port 8080 --etag')\n  .example('my-app --dev')\n  .option('-D, --dev', 'Enable \"dev\" mode')\n  .option('-e, --etag', 'Enable \"Etag\" header')\n  // There are a lot...\n  .option('-H, --host', 'Hostname to bind', 'localhost')\n  .option('-p, --port', 'Port to bind', 5000)\n  .action((dir, opts) => {\n    // Program handler\n  })\n  .parse(process.argv);\n```\n\nWhen `sirv --help` is run, the generated help text is trimmed, fully aware that there's only one command in this program:\n\n```\n  Description\n    Run a static file server\n\n  Usage\n    $ sirv [dir] [options]\n\n  Options\n    -D, --dev        Enable \"dev\" mode\n    -e, --etag       Enable \"Etag\" header\n    -H, --host       Hostname to bind  (default localhost)\n    -p, --port       Port to bind  (default 5000)\n    -v, --version    Displays current version\n    -h, --help       Displays this message\n\n  Examples\n    $ sirv public -qeim 31536000\n    $ sirv --port 8080 --etag\n    $ sirv my-app --dev\n```\n\n## Command Aliases\n\nCommand aliases are alternative names (aliases) for a command. They are often used as shortcuts or as typo relief!\n\nThe aliased names do not appear in the general help text.<br>\nInstead, they only appear within the Command-specific help text under an \"Aliases\" section.\n\n***Limitations***\n\n* You cannot assign aliases while in [Single Command Mode](#single-command-mode)\n* You cannot call [`prog.alias()`](#progaliasnames) before defining any Commands (via `prog.commmand()`)\n* You, the developer, must keep track of which aliases have already been used and/or exist as Command names\n\n***Example***\n\nLet's reconstruct the `npm install` command as a Sade program:\n\n```js\nsade('npm')\n  // ...\n  .command('install [package]', 'Install a package', {\n    alias: ['i', 'add', 'isntall']\n  })\n  .option('-P, --save-prod', 'Package will appear in your dependencies.')\n  .option('-D, --save-dev', 'Package will appear in your devDependencies.')\n  .option('-O, --save-optional', 'Package will appear in your optionalDependencies')\n  .option('-E, --save-exact', 'Save exact versions instead of using a semver range operator')\n  // ...\n```\n\nWhen we run `npm --help` we'll see this general help text:\n\n```\n  Usage\n    $ npm <command> [options]\n\n  Available Commands\n    install    Install a package\n\n  For more info, run any command with the `--help` flag\n    $ npm install --help\n\n  Options\n    -v, --version    Displays current version\n    -h, --help       Displays this message\n```\n\nWhen we run `npm install --help` &mdash; ***or*** the help flag with any of `install`'s aliases &mdash; we'll see this command-specific help text:\n\n```\n  Description\n    Install a package\n\n  Usage\n    $ npm install [package] [options]\n\n  Aliases\n    $ npm i\n    $ npm add\n    $ npm isntall\n\n  Options\n    -P, --save-prod        Package will appear in your dependencies.\n    -D, --save-dev         Package will appear in your devDependencies.\n    -O, --save-optional    Package will appear in your optionalDependencies\n    -E, --save-exact       Save exact versions instead of using a semver range operator\n    -h, --help             Displays this message\n```\n\n\n\n## API\n\n### sade(name, isSingle)\nReturns: `Program`\n\nReturns your chainable Sade instance, aka your `Program`.\n\n#### name\nType: `String`<br>\nRequired: `true`\n\nThe name of your `Program` / binary application.\n\n#### isSingle\nType: `Boolean`<br>\nDefault: `name.includes(' ');`\n\nIf your `Program` is meant to have ***only one command***.<br>\nWhen `true`, this simplifies your generated `--help` output such that:\n\n* the \"root-level help\" is your _only_ help text\n* the \"root-level help\" does not display an `Available Commands` section\n* the \"root-level help\" does not inject `$ name <command>` into the `Usage` section\n* the \"root-level help\" does not display `For more info, run any command with the `--help` flag` text\n\nYou may customize the `Usage` of your command by modifying the `name` argument directly.<br>\nPlease read [Single Command Mode](#single-command-mode) for an example and more information.\n\n> **Important:** Whenever `name` includes a custom usage, then `isSingle` is automatically assumed and enforced!\n\n### prog.command(usage, desc, opts)\n\nCreate a new Command for your Program. This changes the current state of your Program.\n\nAll configuration methods (`prog.describe`, `prog.action`, etc) will apply to this Command until another Command has been created!\n\n#### usage\n\nType: `String`\n\nThe usage pattern for your current Command. This will be included in the general or command-specific `--help` output.\n\n_Required_ arguments are wrapped with `<` and `>` characters; for example, `<foo>` and `<bar>`.\n\n_Optional_ arguments are wrapped with `[` and `]` characters; for example, `[foo]` and `[bar]`.\n\nAll arguments are ***positionally important***, which means they are passed to your current Command's [`handler`](#handler) function in the order that they were defined.\n\nWhen optional arguments are defined but don't receive a value, their positionally-equivalent function parameter will be `undefined`.\n\n> **Important:** You **must** define & expect required arguments _before_ optional arguments!\n\n```js\nsade('foo')\n\n  .command('greet <adjective> <noun>')\n  .action((adjective, noun, opts) => {\n    console.log(`Hello, ${adjective} ${noun}!`);\n  })\n\n  .command('drive <vehicle> [color] [speed]')\n  .action((vehicle, color, speed, opts) => {\n    let arr = ['Driving my'];\n    arr.push(color ? `${color} ${vehicle}` : vehicle);\n    speed && arr.push(`at ${speed}`);\n    opts.yolo && arr.push('...YOLO!!');\n    let str = arr.join(' ');\n    console.log(str);\n  });\n```\n\n```sh\n$ foo greet beautiful person\n# //=> Hello, beautiful person!\n\n$ foo drive car\n# //=> Driving my car\n\n$ foo drive car red\n# //=> Driving my red card\n\n$ foo drive car blue 100mph --yolo\n# //=> Driving my blue car at 100mph ...YOLO!!\n```\n\n\n#### desc\n\nType: `String`<br>\nDefault: `''`\n\nThe Command's description. The value is passed directly to [`prog.describe`](#progdescribetext).\n\n#### opts\n\nType: `Object`<br>\nDefault: `{}`\n\n##### opts.alias\nType: `String|Array`\n\nOptionally define one or more aliases for the current Command.<br>\nWhen declared, the `opts.alias` value is passed _directly_ to the [`prog.alias`](#progaliasnames) method.\n\n```js\n// Program A is equivalent to Program B\n// ---\n\nconst A = sade('bin')\n  .command('build', 'My build command', { alias: 'b' })\n  .command('watch', 'My watch command', { alias: ['w', 'dev'] });\n\nconst B = sade('bin')\n  .command('build', 'My build command').alias('b')\n  .command('watch', 'My watch command').alias('w', 'dev');\n```\n\n\n##### opts.default\n\nType: `Boolean`\n\nManually set/force the current Command to be the Program's default command. This ensures that the current Command will run if no command was specified.\n\n> **Important:** If you run your Program without a Command _and_ without specifying a default command, your Program will exit with a `No command specified` error.\n\n```js\nconst prog = sade('greet');\n\nprog.command('hello');\n//=> only runs if :: `$ greet hello`\n\n// $ greet\n//=> error: No command specified.\n\nprog.command('howdy', '', { default:true });\n//=> runs as `$ greet` OR `$ greet howdy`\n\n// $ greet\n//=> runs 'howdy' handler\n\n// $ greet foobar\n//=> error: Invalid command\n```\n\n\n### prog.describe(text)\n\nAdd a description to the current Command.\n\n#### text\n\nType: `String|Array`\n\nThe description text for the current Command. This will be included in the general or command-specific `--help` output.\n\nInternally, your description will be separated into an `Array` of sentences.\n\nFor general `--help` output, ***only*** the first sentence will be displayed. However, **all sentences** will be printed for command-specific `--help` text.\n\n> **Note:** Pass an `Array` if you don't want internal assumptions. However, the first item is _always_ displayed in general help, so it's recommended to keep it short.\n\n\n### prog.alias(...names)\n\nDefine one or more aliases for the current Command.\n\n> **Important:** An error will be thrown if:<br>1) the program is in [Single Command Mode](#single-command-mode); or<br>2) `prog.alias` is called before any `prog.command`.\n\n#### names\n\nType: `String`\n\nThe list of alternative names (aliases) for the current Command.<br>\nFor example, you may want to define shortcuts and/or common typos for the Command's full name.\n\n> **Important:** Sade _does not_ check if the incoming `names` are already in use by other Commands or their aliases.<br>During conflicts, the Command with the same `name` is given priority, otherwise the first Command (according to Program order) with `name` as an alias is chosen.\n\nThe `prog.alias()` is append-only, so calling it multiple times within a Command context will _keep_ all aliases, including those initially passed via [`opts.alias`](#optsdefault).\n\n```js\nsade('bin')\n  .command('hello <name>', 'Greet someone by their name', {\n    alias: ['hey', 'yo']\n  })\n  .alias('hi', 'howdy')\n  .alias('hola', 'oi');\n//=> hello aliases: hey, yo, hi, howdy, hola, oi\n```\n\n\n### prog.action(handler)\n\nAttach a callback to the current Command.\n\n#### handler\n\nType: `Function`\n\nThe function to run when the current Command is executed.\n\nIts parameters are based (positionally) on your Command's [`usage`](#usage-1) definition.\n\nAll options, flags, and extra/unknown values are included as the last parameter.\n\n> **Note:** Optional arguments are also passed as parameters & may be `undefined`!\n\n```js\nsade('foo')\n  .command('cp <src> <dest>')\n  .option('-f, --force', 'Overwrite without confirmation')\n  .option('-c, --clone-dir', 'Copy files to additional directory')\n  .option('-v, --verbose', 'Enable verbose output')\n  .action((src, dest, opts) => {\n    console.log(`Copying files from ${src} --> ${dest}`);\n    opts.c && console.log(`ALSO copying files from ${src} --> ${opts['clone-dir']}`);\n    console.log('My options:', opts);\n  })\n\n// $ foo cp original my-copy -v\n//=> Copying files from original --> my-copy\n//=> My options: { _:[], v:true, verbose:true }\n\n// $ foo cp original my-copy --clone-dir my-backup\n//=> Copying files from original --> my-copy\n//=> ALSO copying files from original --> my-backup\n//=> My options: { _:[], c:'my-backup', 'clone-dir':'my-backup' }\n```\n\n\n### prog.example(str)\n\nAdd an example for the current Command.\n\n#### str\n\nType: `String`\n\nThe example string to add. This will be included in the general or command-specific `--help` output.\n\n> **Note:** Your example's `str` will be prefixed with your Program's [`name`](#sadename).\n\n\n### prog.option(flags, desc, value)\n\nAdd an Option to the current Command.\n\n#### flags\n\nType: `String`\n\nThe Option's flags, which may optionally include an alias.\n\nYou may use a comma (`,`) or a space (` `) to separate the flags.\n\n> **Note:** The short & long flags can be declared in any order. However, the alias will always be displayed first.\n\n> **Important:** If using hyphenated flag names, they will be accessible **as declared** within your [`action()`](#progactionhandler) handler!\n\n```js\nprog.option('--global'); // no alias\nprog.option('-g, --global'); // alias first, comma\nprog.option('--global -g'); // alias last, space\n// etc...\n```\n\n#### desc\n\nType: `String`\n\nThe description for the Option.\n\n#### value\n\nType: `String`\n\nThe **default** value for the Option.\n\nFlags and aliases, if parsed, are `true` by default. See [`mri`](https://github.com/lukeed/mri#minimist) for more info.\n\n> **Note:** You probably only want to define a default `value` if you're expecting a `String` or `Number` value type.\n\nIf you _do_ pass a `String` or `Number` value type, your flag value will be casted to the same type. See [`mri#options.default`](https://github.com/lukeed/mri#optionsdefault) for info~!\n\n\n### prog.version(str)\n\nThe `--version` and `-v` flags will automatically output the Program version.\n\n#### str\n\nType: `String`<br>\nDefault: `0.0.0`\n\nThe new version number for your Program.\n\n> **Note:** Your Program `version` is `0.0.0` until you change it.\n\n### prog.parse(arr, opts)\n\nParse a set of CLI arguments.\n\n#### arr\n\nType: `Array`\n\nYour Program's `process.argv` input.\n\n> **Important:** Do not `.slice(2)`! Doing so will break parsing~!\n\n#### opts\n\nType: `Object`<br>\nDefault: `{}`\n\nAdditional `process.argv` parsing config. See [`mri`'s options](https://github.com/lukeed/mri#mriargs-options) for details.\n\n> **Important:** These values _override_ any internal values!\n\n```js\nprog\n  .command('hello')\n  .option('-f, --force', 'My flag');\n//=> currently has alias pair: f <--> force\n\nprog.parse(process.argv, {\n  alias: {\n    f: ['foo', 'fizz']\n  },\n  default: {\n    abc: 123\n  }\n});\n//=> ADDS alias pair: f <--> foo\n//=> REMOVES alias pair: f <--> force\n//=> ADDS alias pair: f <--> fizz\n//=> ADDS default: abc -> 123 (number)\n```\n\n#### opts.unknown\n\nType: `Function`<br>\nDefault: `undefined`\n\nCallback to run when an unspecified option flag has been found. This is [passed directly to `mri`](https://github.com/lukeed/mri#optionsunknown).\n\nYour handler will receive the unknown flag (string) as its only argument.<br>\nYou may return a string, which will be used as a custom error message. Otherwise, a default message is displayed.\n\n```js\nsade('sirv')\n  .command('start [dir]')\n  .parse(process.argv, {\n    unknown: arg => `Custom error message: ${arg}`\n  });\n\n/*\n$ sirv start --foobar\n\n  ERROR\n    Custom error message: --foobar\n\n  Run `$ sirv --help` for more info.\n*/\n```\n\n#### opts.lazy\n\nType: `Boolean`<br>\nDefault: `false`\n\nIf true, Sade will not immediately execute the `action` handler. Instead, `parse()` will return an object of `{ name, args, handler }` shape, wherein the `name` is the command name, `args` is all arguments that _would be_ passed to the action handler, and `handler` is the function itself.\n\nFrom this, you may choose when to run the `handler` function. You also have the option to further modify the `args` for any reason, if needed.\n\n```js\nlet { name, args, handler } = prog.parse(process.argv, { lazy:true });\nconsole.log('> Received command: ', name);\n\n// later on...\nhandler.apply(null, args);\n```\n\n### prog.help(cmd)\n\nManually display the help text for a given command. If no command name is provided, the general/global help is printed.\n\nYour general and command-specific help text is automatically attached to the `--help` and `-h` flags.\n\n> **Note:** You don't have to call this directly! It's automatically run when you `bin --help`\n\n#### cmd\nType: `String`<br>\nDefault: `null`\n\nThe name of the command for which to display help. Otherwise displays the general help.\n\n\n## License\n\nMIT © [Luke Edwards](https://lukeed.com)\n","_attachments":{},"homepage":"https://github.com/lukeed/sade#readme","bugs":{"url":"https://github.com/lukeed/sade/issues"},"license":"MIT"}