aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/cli/parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/cli/parser.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/cli/parser.py94
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