76 lines
2.2 KiB
Go
76 lines
2.2 KiB
Go
// Copyright (C) 2021 nytpu
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
// 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")
|
|
langFlag = globalFs.StringP("lang", "l", "en-US", "The language that comitium will use when outputting 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"},
|
|
{"regenerate", "Regenerate all files generated by comitium without checking for new updates."},
|
|
{"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),
|
|
"regenerate": flag.NewFlagSet("regenerate", flag.ExitOnError),
|
|
"add": flag.NewFlagSet("add", flag.ExitOnError),
|
|
"remove": flag.NewFlagSet("remove", flag.ExitOnError),
|
|
"help": flag.NewFlagSet("help", flag.ExitOnError),
|
|
"version": flag.NewFlagSet("version", flag.ExitOnError),
|
|
}
|
|
|
|
// set up various flags for each individual command
|
|
var (
|
|
// add
|
|
addPageFlag = commands["add"].BoolP(
|
|
"watch", "w",
|
|
false,
|
|
`Watch a page instead of adding it as a feed.`,
|
|
)
|
|
|
|
// refresh
|
|
refreshWorkersFlag = commands["refresh"].IntP(
|
|
"num-workers", "n",
|
|
5, // 5 workers is a safe default
|
|
`Number of worker threads to use when refreshing feeds. More is faster,
|
|
but there are more concurrent outgoing requests then.`,
|
|
)
|
|
refreshTimeoutFlag = commands["refresh"].IntP(
|
|
"timeout", "t",
|
|
10,
|
|
`Set a timeout for requests, in seconds.`,
|
|
)
|
|
|
|
// remove
|
|
removeFeedsFlag = commands["remove"].BoolP(
|
|
"feeds", "f",
|
|
false,
|
|
`Remove URL from subscribed feeds.`,
|
|
)
|
|
removePagesFlag = commands["remove"].BoolP(
|
|
"pages", "p",
|
|
false,
|
|
`remove URL from subscribed pages.`,
|
|
)
|
|
)
|