Skip to content

Utility lib for parsing command options

License

Notifications You must be signed in to change notification settings

jaspenlind/args-any

Repository files navigation

args-any

Utility lib for parsing command options

Build Status Codacy Badge Coverage Status tested with jest code style: prettier David GitHub npm

Installation

npm install args-any

Test

npm test

Usage

Parse arguments to a map

import { parse } from "args-any";
const args = ["-option1", "value1", "-option2>4", "-option3 lt 5"]

const options = parse(args);

options.has("option1");
==> true

options.get("option2");
==> {
  key: "option2",
  operator: Operator.Gt,
  value: "4"
}

Map arguments to a partial type

import { parse } from "args-any";

const args = ["-name", "server 1", "-memorySize", "1024" , "-isClustered", "true"];

interface Server {
  name: string;
  memorySize: number;
  isClustered: boolean;
  location: string;
}

const server = parse(args).asPartial<Server>();

==> {
  name: "server 1",
  memorySize: 1024,
  isClustered: true
};

Filter a list based on arguments

const servers = [{
  name: "name 1",
  memorySize: 2048
}, {
  name: "name 2",
  memorySize: 2048
}, {
  name: "name 3",
  memorySize: 512
}];

const filtered = parse(["-memorySize=2048"]).filter(...servers);

==> [{
  name: "name1"
  ...
}, {
  name: "name2"
  ...
}
]