diff --git a/README.md b/README.md index 466274e..1e1c00c 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/cmd/miab/main.go b/cmd/miab/main.go index 8b43bbd..15cfbb7 100644 --- a/cmd/miab/main.go +++ b/cmd/miab/main.go @@ -13,10 +13,10 @@ func usage() { fmt.Fprintf(os.Stderr, `Usage: miab [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] Set (replace) a DNS record + add [--type TYPE] Add a DNS record + delete [--type TYPE] [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] ") 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] [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] ") 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) }