refactor: update CLI command usage and improve argument handling

This commit is contained in:
2026-05-10 11:12:12 +02:00
parent ecc96b695e
commit 5ba90c8805
2 changed files with 29 additions and 31 deletions
+4 -4
View File
@@ -51,10 +51,10 @@ export MAILINABOX_PASSWORD=password
Commands:
```sh
miab list [--type TXT]
miab set --name foo.example.com --type TXT --value "hello"
miab add --name foo.example.com --type A --value 1.2.3.4
miab delete --name foo.example.com --type TXT [--value "hello"]
miab list [--type TXT]
miab set [--type TXT] foo.example.com "hello"
miab add [--type A] foo.example.com 1.2.3.4
miab delete [--type TXT] foo.example.com ["hello"]
```
## AI Disclaimer
+25 -27
View File
@@ -13,10 +13,10 @@ func usage() {
fmt.Fprintf(os.Stderr, `Usage: miab <command> [options]
Commands:
list List custom DNS records
set Set (replace) a DNS record
delete Delete a DNS record
add Add a DNS record
list [--type TYPE] List custom DNS records
set [--type TYPE] <name> <value> Set (replace) a DNS record
add [--type TYPE] <name> <value> Add a DNS record
delete [--type TYPE] <name> [value] Delete a DNS record
Credentials: any empty parameter falls back to environment variables.
MIAB_HOST / MAILINABOX_BASE_URL Mail-in-a-Box hostname (MIAB_HOST takes precedence;
@@ -26,7 +26,7 @@ Credentials: any empty parameter falls back to environment variables.
`)
}
func mustClient() *miab.Client {
func miabClient() *miab.Client {
c, err := miab.NewClient("", "", "")
if err != nil {
fmt.Fprintln(os.Stderr, err)
@@ -68,7 +68,7 @@ func runList(args []string) {
recordType := fs.String("type", "", "Filter by record type (e.g. A, TXT, MX)")
fs.Parse(args)
client := mustClient()
client := miabClient()
records, err := client.ListRecords(*recordType)
if err != nil {
fmt.Fprintf(os.Stderr, "miab: %v\n", err)
@@ -87,18 +87,17 @@ func runList(args []string) {
func runSet(args []string) {
fs := flag.NewFlagSet("set", flag.ExitOnError)
name := fs.String("name", "", "Domain name")
recordType := fs.String("type", "", "Record type (e.g. A, TXT)")
value := fs.String("value", "", "Record value")
recordType := fs.String("type", "A", "Record type (e.g. A, TXT)")
fs.Parse(args)
if *name == "" || *recordType == "" || *value == "" {
fmt.Fprintln(os.Stderr, "miab set: --name, --type and --value are required")
if fs.NArg() < 2 {
fmt.Fprintln(os.Stderr, "miab set: usage: set [--type TYPE] <name> <value>")
os.Exit(1)
}
name, value := fs.Arg(0), fs.Arg(1)
client := mustClient()
if err := client.SetRecord(*name, *recordType, *value); err != nil {
client := miabClient()
if err := client.SetRecord(name, *recordType, value); err != nil {
fmt.Fprintf(os.Stderr, "miab: %v\n", err)
os.Exit(1)
}
@@ -106,18 +105,18 @@ func runSet(args []string) {
func runDelete(args []string) {
fs := flag.NewFlagSet("delete", flag.ExitOnError)
name := fs.String("name", "", "Domain name")
recordType := fs.String("type", "", "Record type (e.g. A, TXT)")
value := fs.String("value", "", "Record value (optional)")
recordType := fs.String("type", "A", "Record type (e.g. A, TXT)")
fs.Parse(args)
if *name == "" || *recordType == "" {
fmt.Fprintln(os.Stderr, "miab delete: --name and --type are required")
if fs.NArg() < 1 {
fmt.Fprintln(os.Stderr, "miab delete: usage: delete [--type TYPE] <name> [value]")
os.Exit(1)
}
name := fs.Arg(0)
value := fs.Arg(1)
client := mustClient()
if err := client.DeleteRecord(*name, *recordType, *value); err != nil {
client := miabClient()
if err := client.DeleteRecord(name, *recordType, value); err != nil {
fmt.Fprintf(os.Stderr, "miab: %v\n", err)
os.Exit(1)
}
@@ -125,18 +124,17 @@ func runDelete(args []string) {
func runAdd(args []string) {
fs := flag.NewFlagSet("add", flag.ExitOnError)
name := fs.String("name", "", "Domain name")
recordType := fs.String("type", "", "Record type (e.g. A, TXT)")
value := fs.String("value", "", "Record value")
recordType := fs.String("type", "A", "Record type (e.g. A, TXT)")
fs.Parse(args)
if *name == "" || *recordType == "" || *value == "" {
fmt.Fprintln(os.Stderr, "miab add: --name, --type and --value are required")
if fs.NArg() < 2 {
fmt.Fprintln(os.Stderr, "miab add: usage: add [--type TYPE] <name> <value>")
os.Exit(1)
}
name, value := fs.Arg(0), fs.Arg(1)
client := mustClient()
if err := client.AddRecord(*name, *recordType, *value); err != nil {
client := miabClient()
if err := client.AddRecord(name, *recordType, value); err != nil {
fmt.Fprintf(os.Stderr, "miab: %v\n", err)
os.Exit(1)
}