package internal import ( "errors" "fmt" "github.com/AlecAivazis/survey/v2" "github.com/urfave/cli/v2" ) // EnsureDNSProvider ensures a DNS provider is chosen. func EnsureDNSProvider() error { if DNSProvider == "" && !NoInput { prompt := &survey.Select{ Message: "Select DNS provider", Options: []string{"gandi"}, } if err := survey.AskOne(prompt, &DNSProvider); err != nil { return err } } if DNSProvider == "" { return fmt.Errorf("missing DNS provider?") } return nil } // EnsureDNSTypeFlag ensures a DNS type flag is present. func EnsureDNSTypeFlag(c *cli.Context) error { if DNSType == "" && !NoInput { prompt := &survey.Input{ Message: "Specify DNS record type", Default: "A", } if err := survey.AskOne(prompt, &DNSType); err != nil { return err } } if DNSType == "" { ShowSubcommandHelpAndError(c, errors.New("no record type provided")) } return nil } // EnsureDNSNameFlag ensures a DNS name flag is present. func EnsureDNSNameFlag(c *cli.Context) error { if DNSName == "" && !NoInput { prompt := &survey.Input{ Message: "Specify DNS record name", Default: "mysubdomain", } if err := survey.AskOne(prompt, &DNSName); err != nil { return err } } if DNSName == "" { ShowSubcommandHelpAndError(c, errors.New("no record name provided")) } return nil } // EnsureDNSValueFlag ensures a DNS value flag is present. func EnsureDNSValueFlag(c *cli.Context) error { if DNSValue == "" && !NoInput { prompt := &survey.Input{ Message: "Specify DNS record value", Default: "192.168.1.2", } if err := survey.AskOne(prompt, &DNSValue); err != nil { return err } } if DNSName == "" { ShowSubcommandHelpAndError(c, errors.New("no record value provided")) } return nil } // EnsureZoneArgument ensures a zone argument is present. func EnsureZoneArgument(c *cli.Context) (string, error) { var zone string if c.Args().First() == "" && !NoInput { prompt := &survey.Input{ Message: "Specify a domain name zone", Default: "example.com", } if err := survey.AskOne(prompt, &zone); err != nil { return zone, err } } if zone == "" { ShowSubcommandHelpAndError(c, errors.New("no zone value provided")) } return zone, nil }