0.6.4 • Published 5 months ago

optc v0.6.4

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Optc

version install size CI

An easy way to write a single-file TypeScript command line application.

Installation

npm i -g optc

Usage

See example echo.ts.

#!/usr/bin/env optc

export const name = 'echo';

export const version = '0.0.0';

// Echo some message
export default function (text: string) {
  console.log(text);
  return text;
}

// Greet someone
export function greet(name?: string, option?: { prefix: string }) {
  const text = `${option?.prefix ?? 'Hello'}, ${name ?? 'Stranger'}`;
  console.log(text);
  return text;
}

When running the above CLI script, Optc will automatically generate a default command with a required paramter text, and a subcommand greet with an optional paramter name.

optc examples/echo.ts word
# word

optc examples/echo.ts greet world
# Hello, world

optc examples/echo.ts --version
# echo/0.0.0 win32-x64 node-v16.14.2

optc examples/echo.ts --help
# echo/0.0.0
#
# Usage:
#   $ echo <text>
#
# Commands:
#   <text>        Echo some message
#   greet [name]  Greet someone
#
# For more info, run any command with the `--help` flag:
#   $ echo --help
#   $ echo greet --help
#
# Options:
#   -v, --version  Display version number
#   -h, --help     Display this message

# or use it directly, make sure you grant the executable permissions
./examples/echo.ts greet Optc
# Hello, Optc

You can see more examples in the ./examples.

Libraries

Optc has some builtin functions based on some famous libs.

Custom Libraries

You can init a node module at ~/.optc/, and create ~/.optc/dep.ts to import all your custom libraries, functions and so on to your script execution environment.

// ~/.optc/dep.ts

// Make sure that you have install "kolorist" in `~/.optc/`
import kolorist from 'kolorist'

export default function(global: any) {
  global.color = kolorist
}

Limitation

  • Optc extracts type infomation from the abstract syntax tree of the code (based on babel), so you can not do some type magic (union type, generic type and so on) on the types of paramters.

  • Global code snippets can not have the type of global functions. Currently, it links to the local type declaration file.

Inspiration

  • argc: A handy way to handle sh/bash cli parameters.
  • zx: A tool for writing better scripts
  • cac: Simple yet powerful framework for building command-line apps.

License

MIT License © 2023 XLor

0.6.4

5 months ago

0.6.3

9 months ago

0.5.7

1 year ago

0.6.2

1 year ago

0.5.6

1 year ago

0.5.5

1 year ago

0.6.1

1 year ago

0.6.0

1 year ago

0.5.3

2 years ago

0.4.4

2 years ago

0.5.0

2 years ago

0.5.2

2 years ago

0.4.3

2 years ago

0.5.1

2 years ago

0.3.8

2 years ago

0.3.7

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.4.2

2 years ago

0.3.0

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago

0.0.0

2 years ago