package cmd import ( "fmt" "git.yoresee.cc/nightstar/ry/internal/provider" "github.com/spf13/cobra" ) var domainCmd = &cobra.Command{ Use: "domain", Short: "Manage domains", } var domainListCmd = &cobra.Command{ Use: "list", Short: "List domains", RunE: func(cmd *cobra.Command, args []string) error { svc := prov.Domain() if svc == nil { return fmt.Errorf("domain management not supported by current provider") } domains, err := svc.List(cmd.Context()) if err != nil { return err } return out.Print(domains) }, } var dnsCmd = &cobra.Command{ Use: "dns ", Short: "Manage DNS records", Args: cobra.MinimumNArgs(1), } var dnsListCmd = &cobra.Command{ Use: "list", Short: "List DNS records", RunE: func(cmd *cobra.Command, args []string) error { svc := prov.Domain() if svc == nil { return fmt.Errorf("domain management not supported") } records, err := svc.DNSList(cmd.Context(), args[0]) if err != nil { return err } return out.Print(records) }, } var dnsAddCmd = &cobra.Command{ Use: "add", Short: "Add a DNS record", RunE: func(cmd *cobra.Command, args []string) error { svc := prov.Domain() if svc == nil { return fmt.Errorf("domain management not supported") } recType, _ := cmd.Flags().GetString("type") name, _ := cmd.Flags().GetString("name") value, _ := cmd.Flags().GetString("value") ttl, _ := cmd.Flags().GetInt("ttl") return svc.DNSAdd(cmd.Context(), args[0], provider.DNSRecord{Type: recType, Name: name, Value: value, TTL: ttl}) }, } var dnsDeleteCmd = &cobra.Command{ Use: "delete ", Short: "Delete a DNS record", Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { svc := prov.Domain() if svc == nil { return fmt.Errorf("domain management not supported") } return svc.DNSDelete(cmd.Context(), args[0], args[1]) }, } func init() { dnsAddCmd.Flags().String("type", "A", "Record type (A, CNAME, TXT)") dnsAddCmd.Flags().String("name", "@", "Record name") dnsAddCmd.Flags().String("value", "", "Record value") dnsAddCmd.Flags().Int("ttl", 600, "TTL in seconds") dnsAddCmd.MarkFlagRequired("value") dnsCmd.AddCommand(dnsListCmd) dnsCmd.AddCommand(dnsAddCmd) dnsCmd.AddCommand(dnsDeleteCmd) domainCmd.AddCommand(domainListCmd) domainCmd.AddCommand(dnsCmd) rootCmd.AddCommand(domainCmd) }