@@ -6,9 +6,7 @@ var fs = require("fs");
66var path = require ( "path" ) ;
77var compile = require ( "eazy-logger" ) . compile ;
88var utils = require ( "../lib/utils" ) ;
9- var flags = require ( "../lib/cli/opts" ) ;
10- var flagKeys = Object . keys ( flags ) ;
11-
9+ var logger = require ( "../lib/logger" ) . logger ;
1210var cmdWhitelist = [ "start" , "init" , "reload" ] ;
1311
1412var cli = meow ( {
@@ -29,20 +27,23 @@ if (!module.parent) {
2927 * @returns {String }
3028 */
3129function getHelpText ( filepath ) {
32- return compile (
33- fs . readFileSync (
34- filepath ,
35- "utf8"
36- ) . replace (
37- "%flags%" ,
38- listFlags (
39- flags ,
40- longest (
41- flagKeys
42- ) . length
43- )
44- )
45- ) ;
30+
31+ /**
32+ * Help text template
33+ */
34+ var template = fs . readFileSync ( filepath , "utf8" ) ;
35+
36+ cmdWhitelist . forEach ( function ( command ) {
37+
38+ var flags = require ( "../lib/cli/opts." + command + ".json" ) ;
39+
40+ template = template . replace (
41+ [ "%" , command , "flags%" ] . join ( "" ) ,
42+ listFlags ( flags )
43+ ) ;
44+ } ) ;
45+
46+ return compile ( template ) ;
4647}
4748
4849/**
@@ -54,7 +55,6 @@ function handleCli (opts) {
5455 opts . cb = opts . cb || utils . defaultCallback ;
5556
5657 var input = opts . cli . input ;
57- var flags = opts . cli . flags ;
5858
5959 if ( ! opts . whitelist ) {
6060 opts . whitelist = cmdWhitelist ;
@@ -64,24 +64,28 @@ function handleCli (opts) {
6464 return console . log ( opts . cli . help ) ;
6565 }
6666
67- if ( input [ 0 ] === "start" ) {
68- require ( "../lib/cli/command.start" ) ( opts ) ;
69- }
70-
71- if ( input [ 0 ] === "init" ) {
72- require ( "../lib/cli/command.init" ) ( opts ) ;
67+ if ( ! require ( "../lib/cli/cli-utils" ) . verifyOpts ( input [ 0 ] , opts . cli . flags ) ) {
68+ logger . info ( "For help, run: {cyan:browser-sync --help}" ) ;
69+ return opts . cb ( new Error ( "Unknown flag given. Please refer to the documentation for help." ) ) ;
7370 }
7471
72+ return require ( "../lib/cli/command." + input [ 0 ] ) ( opts ) ;
7573}
7674
7775/**
7876 * @param {Object } flags
79- * @param {Number } longest
80- * @returns {String }
8177 */
82- function listFlags ( flags , longest ) {
78+ function listFlags ( flags ) {
79+
80+ var flagKeys = Object . keys ( flags ) ;
81+ var longest = getLongest ( Object . keys ( flags ) ) ;
82+
83+ if ( ! longest || ! longest . length ) {
84+ return ;
85+ }
86+
8387 return flagKeys . reduce ( function ( all , item ) {
84- return all + " {bold:--" + item + "}" + getPadding ( item . length , longest + 8 ) + flags [ item ] + "\n" ;
88+ return all + " {bold:--" + item + "}" + getPadding ( item . length , longest . length + 8 ) + flags [ item ] + "\n" ;
8589 } , "" ) ;
8690}
8791
@@ -98,7 +102,7 @@ function getPadding (len, max) {
98102 * @param {Array } arr
99103 * @returns {String }
100104 */
101- function longest ( arr ) {
105+ function getLongest ( arr ) {
102106 return arr . sort ( function ( a , b ) { return b . length - a . length ; } ) [ 0 ] ;
103107}
104108
0 commit comments