nodefony-starter

Command Line Interface

You can see HERE :

Create Simple cli (command-line interface)

#!/usr/bin/env node

        const nodefony = require("nodefony");

        const project = new nodefony.cli("project", {
          onStart: (cli) => {
            cli.log("start");
          }
        });
        

                                                 _                 _
                        _ __    _ __    ___     (_)   ___    ___  | |_
                       | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                       | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                       | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                       |_|                    |__/


           Wed Apr 03 2019 21:43:11 INFO project : start
        $
        

Cli Usage

Options


          // usage  new nodefony.cli(name, options)

          const defaultOptions = {
            processName: name,    // Name of processus system
            autostart: true,        // Auto event onStart
            asciify: true,          // Display asciify name
            clear: true,            // Clear console before onStart
            color: clc.blue,        // Color asciify name
            prompt: "default",      // Tools for interactive command line (inquirer) "default" || "rxjs"
            commander: true,        // Tools for command line arguments (commander)
            signals: true,          // Active event signals
            autoLogger: true,       // Activate logger events by default
            resize: false,          // Active event resize
            version: null,          // Set cli version
            warning: false,         // Active process.on('warning')
            pid: false,             // Add pid in cli class
            promiseRejection: true  // Active  process.on('rejectionHandled') and process.on('unhandledRejection')
          };
        

Idle

#!/usr/bin/env node
        const nodefony = require("nodefony");

        const project = new nodefony.cli("project", {
          onStart: (cli) => {
            cli.idle();
            cli.log("start");
          },
        });
        
#!/usr/bin/env node
        const nodefony = require("nodefony");

        const project = new nodefony.cli("project", {
          version: nodefony.version,
          onStart: (cli) => {
            cli.idle();
            cli.showBanner();
            cli.log("start");
            cli.log("start", "WARNING");
            cli.log("start", "ERROR");
            cli.log("start", "DEBUG");
            cli.log("start", "NOTICE", "TERMINAL");
          }
        });
        

                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

                  Version : 4.3.1 Platform : darwin Process : project PID : 82305


         Thu Apr 04 2019 11:24:28 INFO project : start
         Thu Apr 04 2019 11:24:28 WARNING project : start
         Thu Apr 04 2019 11:24:28 ERROR project : start
         Thu Apr 04 2019 11:24:28 DEBUG project : start
         Thu Apr 04 2019 11:24:28 NOTICE TERMINAL : start
         

Events start

#!/usr/bin/env node
        const nodefony = require("nodefony");

        // with options
        const project = new nodefony.cli("project", {
          onStart: (cli) => {
            cli.idle();
            cli.log("start");
          },
        });

        // without options start promise
        const project = new nodefony.cli("project");
        project.start()
          .then((cli) => {
            cli.idle();
            cli.log("start");
          });

        

                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

         Thu Apr 04 2019 00:46:16 INFO project : start

        

Signals

#!/usr/bin/env node
        const nodefony = require("nodefony");

        const project = new nodefony.cli("project", {
          signals: true,
          onStart: (cli) => {
            cli.idle();
            cli.log("start");
          },
          onSignal: (sig, cli) => {
            // you can trap here SIGINT SIGTERM SIGHUP SIGQUIT
            console.log(sig);
          }
        });
        

                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

        <ctrl-c>
         Thu Apr 04 2019 11:17:11 CRITIC project : SIGINT
        SIGINT
        

Event TERMINAL resize

#!/usr/bin/env node
        const nodefony = require("nodefony");

        const project = new nodefony.cli("project", {
          resize: true,
          onStart: (cli) => {
            cli.idle();
            cli.log("start");
          },
          onResize: (columns, rows, cli) => {
            // call when you resize your TERMINAL
            cli.log(`columns : ${columns}  rows : ${rows}`, 'DEBUG', "SIZE");
          }
        });
        

                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

         Thu Apr 04 2019 11:17:04 INFO project : start
         Thu Apr 04 2019 11:17:09 DEBUG SIZE : columns : 232  rows : 53
         Thu Apr 04 2019 11:17:09 DEBUG SIZE : columns : 232  rows : 52
         Thu Apr 04 2019 11:17:09 DEBUG SIZE : columns : 231  rows : 52
         Thu Apr 04 2019 11:17:10 DEBUG SIZE : columns : 230  rows : 52
         Thu Apr 04 2019 11:17:10 DEBUG SIZE : columns : 229  rows : 52
         Thu Apr 04 2019 11:17:10 DEBUG SIZE : columns : 229  rows : 51
        

Display Table

#!/usr/bin/env node
        const nodefony = require("nodefony");

        const project = new nodefony.cli("project", {
          version: nodefony.version,
        });

        project.start()
          .then((cli) => {
            cli.idle();
            cli.showBanner();
            // show cli-table  https://github.com/Automattic/cli-table
            // displayTable(data, options, enableSyslog)

            cli.log("TABLE 1");
            cli.displayTable([
              ['First value', 'Second value', cli.clc.red("third value")]
            ]);

            cli.blankLine();

            cli.log("TABLE 2");
            cli.displayTable([
              ['First value', 'Second value', cli.getEmoji()]
            ], {}, true);

            cli.blankLine();
            cli.log("TABLE 3");
            cli.displayTable([
              ['First value', 'Second value', cli.clc.magenta("third value")]
            ], {
              head: ["Header 1", "Header 2", "Header 3"]
            });

            cli.terminate(0);
          })
          .catch(e => {
            console.trace(e);
            cli.terminate(1);
          });

        

                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

                  Version : 4.3.1 Platform : darwin Process : project PID : 84290

        Thu Apr 04 2019 15:02:26 INFO project : TABLE 1
        ┌─────────────┬──────────────┬─────────────┐
        │ First value │ Second value │ third value │
        └─────────────┴──────────────┴─────────────┘

        Thu Apr 04 2019 15:02:26 INFO project : TABLE 2
        Thu Apr 04 2019 15:02:26 INFO project :
        ┌─────────────┬──────────────┬────┐
        │ First value │ Second value │ 🤓 │
        └─────────────┴──────────────┴────┘

        Thu Apr 04 2019 15:07:42 INFO project : TABLE 3
        ┌─────────────┬──────────────┬─────────────┐
        │ Header 1    │ Header 2     │ Header 3    │
        ├─────────────┼──────────────┼─────────────┤
        │ First value │ Second value │ third value │
        └─────────────┴──────────────┴─────────────┘
        

Spinner

#!/usr/bin/env node
        const project = new nodefony.cli("project", {
          version: nodefony.version,
        });
        project.start()
          .then((cli) => {
            cli.idle();
            cli.showBanner();

            cli.logger("START SPINNER : " + cli.getEmoji("clapper"));
            cli.startSpinner("MY CLI", ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷']);
            cli.blankLine();

            let interval = setInterval(() => {
              cli.logger("MESSAGE : " + cli.getEmoji());
            }, 500);

            setTimeout(() => {
              clearInterval(interval);
              cli.stopSpinner();
              cli.logger("STOP SPINNER : " + cli.getEmoji("clapper"));
            }, 10000);
          })
          .catch(e => {
            console.trace(e);
          });
        

                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

                  Version : 4.3.1 Platform : darwin Process : project PID : 85023


         Thu Apr 04 2019 15:20:52 INFO project : START SPINNER : 🎬

         ⣷  Thu Apr 04 2019 15:23:51 INFO project : MESSAGE : 🎭

         Thu Apr 04 2019 15:21:02 INFO project : STOP SPINNER : 🎬

        

Commander (Command line parser)

Create Helper

#!/usr/bin/env node
        const project = new nodefony.cli("project", {
          version: nodefony.version,
        });
        project.start()
          .then((cli) => {

            cli.idle();
            cli.showBanner();

            // https://github.com/tj/commander.js
            // usage
            cli.commander.usage(`[options]  [args...]`);

            // custom help
            cli.commander.on('--help', () => {
              cli.blankLine();
              console.log('Examples:');
              console.log('  $ project create -name hello ');
              console.log('  $ project -h');
              cli.blankLine();
            });

            cli.parseCommand();


          })
          .catch(e => {
            console.trace(e);
          });
        
$ project -h
                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

                  Version : 4.3.1 Platform : darwin Process : project PID : 86424

        Usage: test [options]  [args...]

        Options:
          -V, --version                output the version number
          -h, --help                   output usage information

        Examples:
          project create -name hello
          project -h
        

Create Command

#!/usr/bin/env node
        const project = new nodefony.cli("project", {
          version: nodefony.version,
        });
        project.start()
          .then((cli) => {
            cli.idle();
            cli.showBanner();
            cli.blankLine();
            cli.commander.usage(`[options]  [args...]`);

            cli.setCommand('rm <dir>')
              .option('-r, --recursive', 'Remove recursively')
              .action(function(dir, cmd) {
                console.log('remove ' + dir + (cmd.recursive ? ' recursively' : ''));
              });

            cli.setCommand('create ')
              .description('Create something in project')
              .alias('add')
              .option('-d, --debug ', 'Environment', /^(dev|prod|preprod)$/i, 'dev')
              .action((create, command) => {
                cli.log(create, "INFO", "COMMAND ARGUMENTS");
                cli.log(command.debug, "INFO", "COMMAND OPTIONS");
              })
              // custom command help
              .on('--help', () => {
                cli.blankLine();
                console.log('Examples:');
                console.log('  $ project create -name hello ');
                console.log('  $ project create -name hello -d ');
              });

            // custom global help
            cli.commander.on('--help', () => {
              cli.blankLine();
              console.log('Examples:');
              console.log('  $ project create -name hello ');
              console.log('  $ project -h');
              cli.blankLine();
            });

            //cli.commander.arguments(` [args...]`);
            cli.parseCommand();
          })
          .catch(e => {
            console.trace(e);
          });
        

        $ project -h
                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

                Version : 4.3.1   Platform : darwin   Process : project   Pid : 94629

        Usage: test [options] <command1> [args...]

        Options:
        -V, --version                output the version number
        -h, --help                   output usage information

        Commands:
        rm [options] <dir>
        create|add [options] <name>  Create something in project

        Examples:
          project create -name hello
          project -h


        $ project create -h
                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

                Version : 4.3.1   Platform : darwin   Process : project   Pid : 94629


        Usage: create|add [options] <name>

        Create something in project

        Options:
          -d, --debug <env>  Environment (default: "dev")
          -h, --help         output usage information

        Examples:
          project create -name hello
          project create -name hello -d


        $ create something -d prod
                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

                Version : 4.3.1   Platform : darwin   Process : project   Pid : 96212

        Fri Apr 05 2019 14:14:46 INFO COMMAND ARGUMENTS : something
        Fri Apr 05 2019 14:14:46 INFO COMMAND OPTIONS : prod

        

Use interactive command line (Prompt)

#!/usr/bin/env node
        const project = new nodefony.cli("project", {
          version: nodefony.version,
        });
        project.start()
          .then( (cli) => {

            return cli.prompt(questions)
              .then(function(answers) {
                cli.log('\nOrder receipt:');
                cli.log(JSON.stringify(answers, null, '  '));
              });

          })
          .catch(e => {
            console.trace(e);
          });
        

                                               _                 _
                      _ __    _ __    ___     (_)   ___    ___  | |_
                     | '_ \  | '__|  / _ \    | |  / _ \  / __| | __|
                     | |_) | | |    | (_) |   | | |  __/ | (__  | |_
                     | .__/  |_|     \___/   _/ |  \___|  \___|  \__|
                     |_|                    |__/

        ? Is this for delivery? Yes
        ? What's your phone number? 0132659887
        ? What size do you need? Medium
        ? How many do you need? 5
        ? What about the toppings? All dressed
        ? You also get a free 2L beverage Pepsi
        ? Any comments on your purchase experience? Nope, all good!
         Fri Apr 05 2019 17:15:09 INFO project :
        Order receipt:
         Fri Apr 05 2019 17:15:09 INFO project : {
          "toBeDelivered": true,
          "phone": "0132659887",
          "size": "medium",
          "quantity": 5,
          "toppings": "alldressed",
          "beverage": "Pepsi",
          "comments": "Nope, all good!"
        }
        
// https://github.com/SBoudrias/Inquirer.js/tree/master/examples

        const questions = [{
            type: 'confirm',
            name: 'toBeDelivered',
            message: 'Is this for delivery?',
            default: false
          },
          {
            type: 'input',
            name: 'phone',
            message: 'What\'s your phone number?',
            validate: function (value) {
              let pass = value.match(/^([01]{1})?[-.\s]?\(?(\d{3})\)?[-.\s]?(\d{3})[-.\s]?(\d{4})\s?((?:#|ext\.?\s?|x\.?\s?){1}(?:\d+)?)?$/i);
              if (pass) {
                return true;
              }

              return 'Please enter a valid phone number';
            }
          },
          {
            type: 'list',
            name: 'size',
            message: 'What size do you need?',
            choices: ['Large', 'Medium', 'Small'],
            filter: function (val) {
              return val.toLowerCase();
            }
          },
          {
            type: 'input',
            name: 'quantity',
            message: 'How many do you need?',
            validate: function (value) {
              let valid = !isNaN(parseFloat(value));
              return valid || 'Please enter a number';
            },
            filter: Number
          },
          {
            type: 'expand',
            name: 'toppings',
            message: 'What about the toppings?',
            choices: [{
                key: 'p',
                name: 'Pepperoni and cheese',
                value: 'PepperoniCheese'
              },
              {
                key: 'a',
                name: 'All dressed',
                value: 'alldressed'
              },
              {
                key: 'w',
                name: 'Hawaiian',
                value: 'hawaiian'
              }
            ]
          },
          {
            type: 'rawlist',
            name: 'beverage',
            message: 'You also get a free 2L beverage',
            choices: ['Pepsi', '7up', 'Coke']
          },
          {
            type: 'input',
            name: 'comments',
            message: 'Any comments on your purchase experience?',
            default: 'Nope, all good!'
          },
          {
            type: 'list',
            name: 'prize',
            message: 'For leaving a comment, you get a freebie',
            choices: ['cake', 'fries'],
            when: function (answers) {
              return answers.comments !== 'Nope, all good!';
            }
          }
        ];

        

Avanced Use Nodefony cli


         __  __  __   __     ____   _       ___
        |  \/  | \ \ / /    / ___| | |     |_ _|
        | |\/| |  \ V /    | |     | |      | |
        | |  | |   | |     | |___  | |___   | |
        |_|  |_|   |_|      \____| |_____| |___|


        Wed Mar 27 2019 18:06:52 INFO MY CLI : ON START
        Wed Mar 27 2019 18:06:52 INFO MY CLI : START simpleLogger : 🎬
        Wed Mar 27 2019 18:06:52 INFO MY CLI : Emoji : 🌜

        Wed Mar 27 2019 18:06:52 DEBUG MY CLI : Emoji : 🥫

        Wed Mar 27 2019 18:06:52 ERROR MY CLI : Emoji : 🌡️

        Wed Mar 27 2019 18:06:52 WARNING MY CLI : Emoji : 🚦
        Wed Mar 27 2019 18:06:52 INFO MY CLI : END simpleLogger : 🏁
        Wed Mar 27 2019 18:06:52 INFO MY CLI : START SPINNER : 🎬

        Wed Mar 27 2019 18:06:57 INFO MY CLI : END SPINNER : 🏁
        Wed Mar 27 2019 18:06:57 INFO MY CLI : START TABLE : 🎬
        ┌──────────┬──────────┬──────────┬──────────┐
        │ COLUMN 1 │ COLUMN 2 │ COLUMN 3 │ COLUMN 4 │
        ├──────────┼──────────┼──────────┼──────────┤
        │ CRITIC   │ 63       │ 185      │ 238      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ NOTICE   │ 26       │ 110      │ 169      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ ERROR    │ 39       │ 185      │ 132      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ CRITIC   │ 1        │ 53       │ 234      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ DEBUG    │ 43       │ 27       │ 18       │
        ├──────────┼──────────┼──────────┼──────────┤
        │ DEBUG    │ 91       │ 10       │ 132      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ INFO     │ 21       │ 11       │ 18       │
        ├──────────┼──────────┼──────────┼──────────┤
        │ DEBUG    │ 49       │ 142      │ 282      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ ERROR    │ 3        │ 13       │ 284      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ CRITIC   │ 89       │ 31       │ 97       │
        └──────────┴──────────┴──────────┴──────────┘
        ┌──────────┬──────────┬──────────┬──────────┐
        │ COLUMN 1 │ COLUMN 2 │ COLUMN 3 │ COLUMN 4 │
        ├──────────┼──────────┼──────────┼──────────┤
        │ WARNING  │ 97       │ 12       │ 191      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ ALERT    │ 38       │ 165      │ 45       │
        ├──────────┼──────────┼──────────┼──────────┤
        │ ALERT    │ 41       │ 144      │ 100      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ INFO     │ 17       │ 116      │ 269      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ NOTICE   │ 24       │ 151      │ 7        │
        ├──────────┼──────────┼──────────┼──────────┤
        │ CRITIC   │ 72       │ 70       │ 239      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ CRITIC   │ 16       │ 163      │ 225      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ NOTICE   │ 44       │ 48       │ 26       │
        ├──────────┼──────────┼──────────┼──────────┤
        │ DEBUG    │ 85       │ 146      │ 261      │
        ├──────────┼──────────┼──────────┼──────────┤
        │ ALERT    │ 6        │ 179      │ 75       │
        └──────────┴──────────┴──────────┴──────────┘
        Wed Mar 27 2019 18:06:57 INFO MY CLI : END TABLE : 🏁
        Wed Mar 27 2019 18:06:57 INFO MY CLI : START PROGRESS : 🎬
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [-------------------------------------------------] 2%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|------------------------------------------------] 4%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||-----------------------------------------------] 6%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|||----------------------------------------------] 8%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||||---------------------------------------------] 10%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|||||--------------------------------------------] 12%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|||||||------------------------------------------] 15%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|||||||------------------------------------------] 16%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||||||||-----------------------------------------] 18%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|||||||||----------------------------------------] 20%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||||||||||---------------------------------------] 22%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|||||||||||--------------------------------------] 24%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||||||||||||-------------------------------------] 26%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||||||||||||||-----------------------------------] 29%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||||||||||||||-----------------------------------] 30%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|||||||||||||||----------------------------------] 32%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||||||||||||||||---------------------------------] 34%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [|||||||||||||||||--------------------------------] 36%
        Wed Mar 27 2019 18:06:57 INFO MY CLI : [||||||||||||||||||-------------------------------] 38%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||------------------------------] 40%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||-----------------------------] 42%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||----------------------------] 44%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||---------------------------] 46%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||--------------------------] 48%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||-------------------------] 50%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||------------------------] 52%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||-----------------------] 54%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||---------------------] 57%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||---------------------] 58%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||--------------------] 60%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||-------------------] 62%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||------------------] 64%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||-----------------] 66%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||----------------] 68%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||||---------------] 70%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||||--------------] 72%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||||||-------------] 74%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||||||------------] 76%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||||||||-----------] 78%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||||||||----------] 80%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||||||||||---------] 82%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||||||||||--------] 84%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||||||||||||-------] 86%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||||||||||||------] 88%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||||||||||||||-----] 90%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||||||||||||||----] 92%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||||||||||||||||---] 94%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||||||||||||||||--] 96%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [||||||||||||||||||||||||||||||||||||||||||||||||-] 98%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : [|||||||||||||||||||||||||||||||||||||||||||||||||] 100%
        Wed Mar 27 2019 18:06:58 INFO MY CLI : END PROGRESS : 🏁
        Wed Mar 27 2019 18:06:58 INFO MY CLI : START PROGRESS 2 : 🎬
        Wed Mar 27 2019 18:07:00 INFO MY CLI : MY PROGRESS [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||] 100%
        Wed Mar 27 2019 18:07:00 INFO MY CLI : END PROGRESS 2 : 🏁
        Wed Mar 27 2019 18:07:00 INFO MY CLI : START Sparkline  : 🎬
        Wed Mar 27 2019 18:07:00 INFO MY CLI : ▅▅▂▄▅▄█▅▄▇▆▇▅▅  12 reqs/sec (23 reqs/sec)
        Wed Mar 27 2019 18:07:00 INFO MY CLI : END Sparkline  : 🏁
        Wed Mar 27 2019 18:07:00 INFO MY CLI : START Sparkline  : 🎬
        Wed Mar 27 2019 18:07:04 INFO MY CLI : ▃▆▆▇▇▄▅▇█▆▂▅▇▅▇▄██▆▂▂▅▅▆▄▃▅▇▆▆▇█▄▅▇▂▆▄▃▃▆██▃▄▂█▂▂▃▂▆▂█▇▄▇▆▄█▅▆▆▂▄▃█▆▄▃▆▅▆▂▄▃▄▂▂▄▆▂█▃▃▂█▆█▂▄▃██▃▄█▄▇  169 reqs/sec (200 reqs/sec)
        Wed Mar 27 2019 18:07:04 INFO MY CLI : END Sparkline2 : 🏁
        Wed Mar 27 2019 18:07:04 INFO MY CLI : TERMINATE MY CLI : 🏁