diff options
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/cli/parser.py')
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/cli/parser.py | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/cli/parser.py b/packages/meshbay-node/src/meshbay_node/cli/parser.py new file mode 100644 index 0000000..c1f15be --- /dev/null +++ b/packages/meshbay-node/src/meshbay_node/cli/parser.py @@ -0,0 +1,94 @@ +"""The argument parser: every verb, flag and help line `meshbay-node --help` +prints.""" + +import argparse +from pathlib import Path + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(description="MeshBay Node daemon") + parser.add_argument("command", nargs="?", + choices=["init", "reset", "status", "gek-init", + "gek", "operator", "member", "group", "root", + "file", "video", "chat", "denylist", "stun", + "transfers", + "reload", + "restart-daemon", "autostart", "service", + "calibrate-argon2"], + help="init: provision config + keystore | reset: erase all " + "node state | status: node state and keys " + "| operator pair: pair a " + "browser with this node | member list|invite|cancel|revoke|unpin " + "| group list|add|remove " + "| root list|add|remove|set|eject|plug " + "| gek init|rotate | file list|rm " + "| video rematch: re-resolve TMDB matches for a group's " + "videos " + "| chat status|rotate|encrypt-history|prune " + "| denylist show|clear " + "| stun list|add|remove|reset " + "| transfers show|set|max-size|per-member: live " + "transfer slots, the node-wide caps, the largest " + "single upload, and how many one member may run " + "at once in a group " + "| reload: re-read node.toml (hot; systemd or the " + "loopback API) | restart-daemon: restart the node " + "(systemd unit, the Windows autostart launcher, or the " + "service task, whichever applies) " + "| autostart install|remove|start|stop|status " + "(Windows: run meshbay-node at each sign-in, no admin) " + "| service install|remove|start|stop|status " + "(Windows: run at boot, before sign-in, needs admin " + "once to install) " + "| calibrate-argon2: benchmark") + parser.add_argument("subcommand", nargs="?", + help="'pair' for operator; list|invite|revoke|unpin for " + "member; list|add|remove for group; " + "list|add|remove|set|eject|plug for root; " + "init|rotate for gek; " + "list|rm for file; rematch for video; show|clear for " + "denylist; list|add|remove|reset for stun; " + "show|set|max-size|per-member for transfers; " + "install|remove|start|stop|status for autostart and " + "for service") + parser.add_argument("target", nargs="?", + help="username for member invite|revoke|unpin (an e-mail address with " + "--link, a link id for member cancel); group name " + "for group add; file id for file rm; identifier for " + "denylist clear; download cap for transfers set; " + "size in GB for transfers max-size") + parser.add_argument("value", nargs="?", + help="the second value where a verb takes two: the " + "upload cap for transfers set") + parser.add_argument("--hub-url", default=None, + help="hub URL, for init (e.g. https://meshbay.org)") + parser.add_argument("--username", default=None, + help="hub username, for init") + parser.add_argument("--dir", default=None, + help="shared directory, for group add") + parser.add_argument("--yes", action="store_true", + help="skip the confirmation for destructive commands") + parser.add_argument("--config", type=Path, default=None, + help="Config file path") + parser.add_argument("--group", default=None, + help="group id (optional if only one is configured)") + parser.add_argument("--link", action="store_true", + help="member invite: an invitation link for this e-mail " + "address, for someone who may have no account yet") + parser.add_argument("--writable", action="store_true", default=None, + dest="writable", + help="root accepts member uploads (root add/set)") + parser.add_argument("--no-writable", action="store_false", + dest="writable", + help="root is read-only (root add/set, group add)") + parser.add_argument("--removable", action="store_true", default=None, + dest="removable", + help="mark root as removable (root set/add)") + parser.add_argument("--no-removable", action="store_false", + dest="removable", + help="mark root as not removable (root set)") + parser.add_argument("--name", default=None, + help="root name (root add; defaults to directory basename)") + parser.add_argument("--log-level", default="INFO", + choices=["DEBUG", "INFO", "WARNING", "ERROR"]) + return parser |