xchange-create
Version:
Create Xchange Project
78 lines (60 loc) • 1.77 kB
text/typescript
import type { Args, ContractType, Extension, Network, RawOptions } from "../types";
import arg from "arg";
export function parseArgumentsIntoOptions(rawArgs: Args): RawOptions {
const args = arg(
{
"--project": String,
"-p": "--project",
"--install": Boolean,
"-i": "--install",
"--skip-install": Boolean,
"--skip": "--skip-install",
"-s": "--skip-install",
"--dev": Boolean,
"--ticker": String,
"-t": "--ticker",
"--supply": Number,
"-u": "--supply",
"--contract-type": String,
"-c": "--contract-type",
"--extensions": [String],
"-e": "--extensions",
"--help": Boolean,
"-h": "--help",
"--quote": Boolean,
"-q": "--quote",
"--usd": Boolean,
"--network": String,
"-n": "--network",
},
{
argv: rawArgs.slice(2).map((a) => a.toLowerCase()),
}
);
const install = args["--install"] ?? null;
const skipInstall = args["--skip-install"] ?? null;
const hasInstallRelatedFlag = install || skipInstall;
const dev = args["--dev"] ?? false;
const project = args["--project"] ?? null;
const ticker = args["--ticker"] ?? null;
const supply = args["--supply"] ?? null;
const contractType = args["--contract-type"] as ContractType ?? null;
const extensions = args["--extensions"] as Extension[] ?? null;
const help = args["--help"] ?? false;
const usd = args["--usd"] ?? false;
const quote = args["--quote"] ?? false;
const network = args["--network"] as Network ?? null;
return {
project,
install: hasInstallRelatedFlag ? install || !skipInstall : null,
ticker,
supply,
contractType,
dev,
extensions,
help,
quote,
network,
usd
};
}