Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ncpa0cpl/clify.js
https://github.com/ncpa0cpl/clify.js
Last synced: about 10 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/ncpa0cpl/clify.js
- Owner: ncpa0cpl
- License: mit
- Created: 2021-11-15T16:47:23.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-09-17T10:48:46.000Z (2 months ago)
- Last Synced: 2024-09-18T02:43:38.439Z (2 months ago)
- Language: TypeScript
- Size: 2.48 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# clify.js
## Basic Usage
```ts
#!/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:
```sh
$ ./my-script --help
Usage: my-script INPUTA simple cli program
```Run it:
```sh
$ ./my-script "command input string"
Input:
```## Options
Create Option definition:
```ts
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:
```ts
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:
```sh
$ ./my-script --help
Usage: my-script INPUT [...OPTIONS]A simple cli program
Options:
-o, --outfile Path to the output file
```Run it:
```sh
$ ./my-script --outfile output.txt
Outfile:
```## Commands
```ts
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:
```sh
$ ./my-script --help
Usage: my-script COMMANDA simple cli program
Commands:
cmd$ ./my-script cmd --help
Usage: my-script cmd [...OPTIONS]Options:
--quiet, -q Do not output anything
```Run it:
```sh
$ ./my-script cmd "command input string"
Input:
``````sh
$ ./my-script cmd --quiet "command input string"
```## Nested Commands
```ts
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:
```sh
$ ./my-script --help
Usage: my-script COMMANDA simple cli program
Commands:
cmd
$ ./my-script cmd --help
Usage: my-script cmd COMMANDCommands:
foo
$ ./my-script cmd foo --help
Usage: my-script cmd foo
```Run it:
```sh
$ ./my-script cmd foo
Hi from foo!
```