Skip to content

Functionality to streamline the process of scripting for the console with javascript

Notifications You must be signed in to change notification settings

ByteThisCoding/js-cli-scripting

Repository files navigation

js-cli-scripting

Streamline the process of creating a CLI using javascript / typescript.

For a demo + instructions on how to use: https://bytethisstore.com/articles/pg/js-cli

Getting Started

This readme will outline how to use this project. If you'd like to view an example, or just jump in, the example-cli.ts script contains a basic cli application with a few sample commands.

How To Use

  1. Create one or more commands for the program to use.
  2. Setup the application to use these commands with optional arguments for logging and requesting user input.
  3. Let the CliApplication class orchestrate the rest.
const TestCommand: iCliCommand = {
    name: "Test Command", //name for internal use
    displayText: "Print some test text to the console",
    tokens: ["test-print", "t-p"],
    requiredParams: [
        {
            name: "txt",
            displayText: "Text to print",
        },
    ],
    execute: async (
        params: { txt: string },
        cliOutputter: iCliOutputter
    ): Promise<void> => {
        cliOutputter.pushMessage("Txt from user ==>", params.txt);
    },
};

With this kind of definition, the program will request everything under requiredParams from the user, then execute the command and pass in those required commands.

Then, we setup our application runner:

const app = new CliApplication();

app.onQuit(() => {
    process.exit(0);
});

app.startApp(
    {
        startup: {
            initialOutput: "Welcome to the example application",
        },
    },
    new ArrayCliCommandsCollection(commands),
    [...process.argv].slice(2),
    new ConsoleOutputter(),
    new ConsoleUserInputRequestor(new ConsoleOutputter())
);

About

Functionality to streamline the process of scripting for the console with javascript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published