add command parsing

This commit is contained in:
nytpu
2021-03-16 10:20:31 -06:00
parent f82e090577
commit 91e663c0f0
6 changed files with 221 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
// Copyright (C) 2021 nytpu
// SPDX-License-Identifier: AGPL-3.0-or-later
// For more license details, see LICENSE or <https://www.gnu.org/licenses/agpl-3.0.html>.
package main
import flag "github.com/spf13/pflag"
// globalFs contains the flags that are used in every command.
var (
globalFs = flag.NewFlagSet("global", flag.ContinueOnError)
dataFlag = globalFs.StringP("data", "d", "", "The data directory where comitium will store its files")
)
// command holds fields used for printing information about a command.
type command struct {
Name string
Usage string
}
// info about all the accepted commands
var commandInfo = []command{
{"refresh", "Check for new updates to subscriptions"},
{"list", "List all subscriptions"},
{"add", "Add a new subscription"},
{"remove", "Remove a subscription"},
{"help", "Print usage information"},
{"version", "Print version information"},
}
var commands = map[string]*flag.FlagSet{
"refresh": flag.NewFlagSet("refresh", flag.ExitOnError),
"list": flag.NewFlagSet("list", flag.ExitOnError),
"add": flag.NewFlagSet("add", flag.ExitOnError),
"remove": flag.NewFlagSet("remove", flag.ExitOnError),
}
// set up various flags for each individual command
var (
// add
addTypeFlag = commands["add"].StringP(
"type", "t", // long and shorthand flag
"g", // default
`Select which type a subscription is. Can be "g" for a
Gemini feed; "a" for Atom, RSS, & JSON; or "c" to watch
the page for changes.`,
)
)