An open API service indexing awesome lists of open source software.

https://github.com/smoren/argparse-ts

Modern CLI arguments parser for node.js (TypeScript / JavaScript).
https://github.com/smoren/argparse-ts

argparse argparser args args-parser argsparse argsparse-library cli command-line command-line-interface command-line-tool node nodejs typescipt

Last synced: 26 days ago
JSON representation

Modern CLI arguments parser for node.js (TypeScript / JavaScript).

Awesome Lists containing this project

README

        

# Argument Parser for TypeScript

[![npm](https://img.shields.io/npm/v/argparse-ts.svg)](https://www.npmjs.com/package/argparse-ts)
[![npm](https://img.shields.io/npm/dm/argparse-ts.svg?style=flat)](https://www.npmjs.com/package/argparse-ts)
[![Coverage Status](https://coveralls.io/repos/github/Smoren/argparse-ts/badge.svg?branch=master&rand=222)](https://coveralls.io/github/Smoren/argparse-ts?branch=master)
![Build and test](https://github.com/Smoren/argparse-ts/actions/workflows/test.yml/badge.svg)
[![Minified Size](https://badgen.net/bundlephobia/minzip/argparse-ts)](https://bundlephobia.com/result?p=argparse-ts)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Overview
--------

Modern CLI arguments parser for node.js (TypeScript / JavaScript).

Setup
-----

```bash
npm i argparse-ts
```

Usage example
-------------

```typescript
import { ArgsParser } from "argparse-ts";

const parser = new ArgsParser([
{
name: 'container',
description: "Container name",
type: 'string',
},
{
name: 'operations',
description: "Operations to run",
type: 'string',
nargs: '+',
choices: ['build', 'clear', 'sync', 'start', 'stop'],
},
{
name: '--mode',
description: "Run mode",
type: 'string',
nargs: '?',
choices: ['dev', 'test', 'prod'],
default: 'prod',
},
{
name: '--cpu',
description: "CPU cores count to use",
type: 'number',
nargs: '?',
default: 1,
},
{
name: '--use-gpu',
description: "Use GPU flag",
type: 'boolean',
const: true,
default: false,
},
{
name: '--extra-services',
alias: '-e',
description: "Extra services to include",
type: 'string',
nargs: '*',
},
]);

console.log(parser.help);

/*
Positional arguments:

container Container name
Type: string (not empty)

operations ...
Operations to run
Type: Array (not empty)
Allowed values: build, clear, sync, start, stop

Options:

--mode Run mode
Type: string
Default value: "prod"
Allowed values: dev, test, prod

--cpu CPU cores count to use
Type: number
Default value: 1

--use-gpu Use GPU flag
Type: boolean
Default value: false

-e ..., --extra-services ...
Extra services to include
Type: Array
*/

const argv = ['main', 'clear', 'build', 'start', 'sync', '--mode', 'dev', '--use-gpu', '-e', 'logger', 'profiler', 'tester'];
const parsedArgs = parser.parse(argv);

console.log(parsedArgs.positional);
/*
{
'container': 'main',
'operations': ['clear', 'build', 'start', 'sync'],
}
*/

console.log(parsedArgs.options);
/*
{
'mode': 'dev',
'cpu': 1,
'use-gpu': true,
'extra-services': ['logger', 'profiler', 'tester'],
}
*/

const containerName = parsedArgs.get('container');
console.log(containerName); // 'main'

const operations = parsedArgs.get('operations');
console.log(operations); // ['clear', 'build', 'start', 'sync']

const mode = parsedArgs.get('--mode');
console.log(mode); // dev

const cpuCount = parsedArgs.get('--cpu');
console.log(cpuCount); // 1

const useGpu = parsedArgs.get('--use-gpu');
console.log(useGpu); // true
```

Api Reference
-------------

For detailed documentation and usage examples, please refer to [API documentation](https://smoren.github.io/argparse-ts/)

Unit testing
------------

```bash
npm i
npm run test
```

License
-------

ArgParse TS is licensed under the MIT License.