Catalog npm
PACKAGE EXPLORERView in registry

@0x-jerry/silver

npm

Let writing CLI like writing document.

Versions collected26
Direct dependencies15From release 2.1.0
Last observed20 Oct, 22:16 UTC

README

Current package documentation

Silver

Let writing CLI like writing a document.

Install

pnpm i @0x-jerry/silver

Quick Start

import { silver } from "@0x-jerry/silver";

const cli = silver`
v1.0.0 @autocomplete

my-cli [file], A CLI that writes like a document. ${mainAction}

-t --test @type:defaultValue, Test autocomplete.
-o --output @string, Output file path.

up/upgrade <dir> [...extra] #stopEarly, Upgrade something. ${upgradeAction}

  -f --force @bool, Force upgrade.
`;

// Register custom completion types
cli.type("type", () => ["value1", "value2", "value3"]);

function mainAction([file], options) {
  console.log("file:", file, "options:", options);
}

function upgradeAction([dir, ...extra], options) {
  console.log("dir:", dir, "extra:", extra, "options:", options);
}

Syntax Guide

Silver uses a template literal to define your CLI. Here's the full syntax:

Program-level

v1.0.0 @autocomplete @manual
TokenDescription
v1.0.0Version declaration (must be at the top)
@autocompleteEnables complete subcommand for shell autocomplete
@manualPrevents auto-execution; call cli.execute(argv) manually

Command Definition

commandName/alias [param] <reqParam> [...restParam] #stopEarly, Description text. ${actionFn}
PartExampleDescription
NameinstallCommand name (alphanumeric + _)
Aliasinstall/iShorthand alias via /
Optional param[name]Optional positional parameter
Required param<name>Required positional parameter
Rest param[...items]Collects remaining arguments as array
Flag#stopEarlyCommand flag (see below)
Description, Install packages.Text after comma is the description
Action${myFn}Function to call when command is executed

Command flags:

FlagDescription
#stopEarlyStop parsing options after the first non-option argument

Options

-s --string @type, Description.
PartExampleDescription
Short name-sSingle-letter alias
Long name--stringFull option name
Type@stringOption type (see below)
Description, Description.Text after comma

Parameter Types

[@type:name]     // typed optional parameter
<@type:name>     // typed required parameter
[...@type|_files:name]  // typed rest param with file completion

Types are registered via cli.type(name, getValues). Built-in types include bool, boolean, number, string. Special completion types _files and _dirs enable shell-native file/directory completion.

Autocomplete

Set @autocomplete at the program level to enable shell completion.

Shell Support

ShellCommand
zshsource <(your-cli complete zsh)
PowerShellInvoke-Expression (your-cli complete powershell | Out-String)

For persistent setup, add the output to your shell's config file (.zshrc or PowerShell profile).

Custom Completion Types

cli.type("env", () => ["development", "production", "staging"]);

// Async types
cli.type("remote-branch", async () => {
  const res = await fetch("https://api.example.com/branches");
  return res.json();
});

// With descriptions (displayed in some shells)
cli.type("format", () => [
  { label: "json", desc: "JSON output" },
  { label: "yaml", desc: "YAML output" },
]);

Built-in Completion Types

TypeDescription
_filesFile path completion (shell-native)
_dirsDirectory path completion (shell-native)

These can be combined with custom types: @custom|_files.

API

silver (default export)

function silver(template: TemplateStringsArray, ...tokens: any[]): Silver;

Parses the template and optionally auto-executes with process.argv.

Silver class

MethodDescription
type(name, getValues)Register a completion type (sync or async)
execute(argv)Execute the CLI with the given arguments
parse(raw, ...tokens)Parse a template literal programmatically

Exported Types

import {
  silver,
  BuiltinType, // enum: File = '_files', Dir = '_dirs'
  type CompletionGroup, // { name: string, values: string[] }
  type CompletionOutput, // { groups: CompletionGroup[] }
  type Command,
  type CmdOption,
  type CmdParameter,
  type Program,
  type CmdAction,
  type ActionParsedArgs,
  ProgramFlag,
  CommandFlag,
} from "@0x-jerry/silver";

Thanks

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 26

Collected releases
VersionPublishedDirect dependenciesOpen version
2.1.0Registry latest17 Jul 202615
2.0.116 Jul 202613
1.2.410 Sept 202513
1.2.39 Sept 202513
1.2.29 Sept 202513
1.2.19 Sept 202513
1.2.09 Sept 202513
1.1.114 Sept 202412
1.1.014 Sept 202412
1.0.320 Jul 202412
1.0.220 Jul 202412
1.0.119 Jul 202412
1.0.019 Jul 202412
0.1.918 Jul 20249
0.1.818 May 20249
0.1.718 May 20249
0.1.614 May 20249
0.1.52 Nov 202311
0.1.420 Sept 202311
0.1.314 Aug 20239

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
0x-jerry/silver

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:16 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:65757df9f06fa61dae84bc219fc88ba93414f61f84b4648d88edd0731648df69