feat(cli): add help message and usage documentation
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "issue-scheduler",
|
"name": "issue-scheduler",
|
||||||
"description": "Schedule issues in Gitea or Github from issue templates",
|
"description": "Schedule issues in Gitea or GitHub using issue templates",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
|
||||||
|
|||||||
27
src/cli.ts
27
src/cli.ts
@@ -8,6 +8,10 @@ export interface CLIConfig {
|
|||||||
// doesn't log to stdout/stderr (still logs to file if --log-file)
|
// doesn't log to stdout/stderr (still logs to file if --log-file)
|
||||||
quiet: boolean
|
quiet: boolean
|
||||||
}
|
}
|
||||||
|
// TODO: Git client shouldn't be identified from the config,
|
||||||
|
// but from the host url or a custom config property
|
||||||
|
// TODO: add --list-issue-templates <user> <repo> <token> : list results from api.getIssueTemplates
|
||||||
|
// TODO: add other utility commands
|
||||||
|
|
||||||
export const defaults: CLIConfig = {
|
export const defaults: CLIConfig = {
|
||||||
config_filepath: "config.toml",
|
config_filepath: "config.toml",
|
||||||
@@ -97,14 +101,37 @@ export function optionalBooleanFlag(args: string[], flags: string[]): boolean {
|
|||||||
return value === null;
|
return value === null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Usage = (program_name: string) => `\
|
||||||
|
Usage: ${program_name} [options...]
|
||||||
|
|
||||||
|
Issue Scheduler - Schedule issues in Gitea or GitHub using issue templates
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Display this message
|
||||||
|
-c, --config <filepath> Config file [default: "config.toml"]
|
||||||
|
-l, --log-file <filepath> Logs output to file
|
||||||
|
-v, --verbose Verbose logging
|
||||||
|
-q, --quiet Only logs to --log-file (if provided)
|
||||||
|
`
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse command line arguments from a string array (process.argv)
|
* Parse command line arguments from a string array (process.argv)
|
||||||
* @param args Command line arguments
|
* @param args Command line arguments
|
||||||
* @return {CLIConfig} Parsed flags
|
* @return {CLIConfig} Parsed flags
|
||||||
*/
|
*/
|
||||||
export function parseArgs(args: string[]): CLIConfig {
|
export function parseArgs(args: string[]): CLIConfig {
|
||||||
|
if (args.length < 2) { // [node executable, program path, ...]
|
||||||
|
// TODO: log error
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
const config = defaults
|
const config = defaults
|
||||||
|
|
||||||
|
const helpValue = optionalBooleanFlag(args, ["--help", "-h"])
|
||||||
|
if (helpValue) {
|
||||||
|
console.log(Usage(args[1]!))
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
const configValue = optionalStringFlag(args, ["--config", "-c"])
|
const configValue = optionalStringFlag(args, ["--config", "-c"])
|
||||||
if (configValue) config.config_filepath = configValue
|
if (configValue) config.config_filepath = configValue
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user