Socket
Socket
Sign inDemoInstall

clify.js

Package Overview
Dependencies
1
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    clify.js

A simple CLI framework for JavaScript command line tools.


Version published
Weekly downloads
1
Maintainers
1
Created
Weekly downloads
 

Readme

Source

clify.js

Basic Usage

#!/usr/bin/env node
import { Clify, configure } from 'clify.js';

const program = configure(program => {
    program.setVersion('1.0.0');
    program.setDescription('A simple cli program');
    program.setName('my-script');

    program.main((cmd) => {
        const input = cmd.input();

        return () => {
            Clify.log(`Input: <${input.get()}>`)
        };
    });
});

program.run();

Get help:

$ ./my-script --help
    Usage: my-script INPUT

    A simple cli program

Run it:

$ ./my-script "command input string"
    Input: <command input string>

Options

Create Option definition:

import { defineOption } from 'clify.js';

const OutfileOption = defineOption({
    name: 'outfile',
    char: 'o',
    description: 'Path to the output file',
    type: 'string',
    required: true,
});

Use it in the program:

const program = configure(program => {
    program.setVersion('1.0.0');
    program.setDescription('A simple cli program');
    program.setName('my-script');

    program.main((cmd) => {
        const outfile = cmd.option(OutfileOption);

        return () => {
            Clify.log(`Outfile: <${outfile.value}>`)
        };
    });
});

Get help:

$ ./my-script --help
    Usage: my-script INPUT [...OPTIONS]

    A simple cli program

    Options:
        -o, --outfile <string>    Path to the output file

Run it:

$ ./my-script --outfile output.txt
    Outfile: <output.txt>

Commands

import { configure, defineOption } from 'clify.js';

const QuietOption = defineOption({
    name: 'quiet',
    char: 'q',
    description: 'Do not output anything',
    type: 'boolean',
    default: false,
});

const program = configure(program => {
    program.setVersion('1.0.0');
    program.setDescription('A simple cli program');
    program.setName('my-script');

    program.command('cmd', (cmd) => {
        const input = cmd.input();
        const quiet = cmd.option(QuietOption);

        return () => {
            if (!quiet.value) {
                Clify.log(`Input: <${input.get()}>`)
            }
        };
    });
});

Get help:

$ ./my-script --help
    Usage: my-script COMMAND

    A simple cli program

    Commands:
        cmd

$ ./my-script cmd --help
    Usage: my-script cmd [...OPTIONS]

    Options:
        --quiet, -q    Do not output anything

Run it:

$ ./my-script cmd "command input string"
    Input: <command input string>
$ ./my-script cmd --quiet "command input string"

Nested Commands

import { configure } from 'clify.js';

const program = configure(program => {
    program.setVersion('1.0.0');
    program.setDescription('A simple cli program');
    program.setName('my-script');

    const cmd = program.command('cmd', (cmd) => {
        return () => {}
    });

    cmd.command('foo', (cmd) => {
        return () => {
            Clify.log('Hi from foo!');
        }
    });
});

Get help:

$ ./my-script --help
    Usage: my-script COMMAND

    A simple cli program

    Commands:
        cmd
$ ./my-script cmd --help
    Usage: my-script cmd COMMAND

    Commands:
        foo
$ ./my-script cmd foo --help
    Usage: my-script cmd foo

Run it:

$ ./my-script cmd foo
    Hi from foo!

Keywords

FAQs

Last updated on 26 Nov 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc