This reconciles the fact that we manage records and not domains which was a bad first naming take on this imho. Now it is clear that we are manipulating domain name records and not entire zones. The UX of record creation/deletion now mirrors the UX of new apps. All the things are prompted for.
87 lines
1.7 KiB
Go
87 lines
1.7 KiB
Go
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
|
|
}
|