forked from coop-cloud/abra
107 lines
2.2 KiB
Go
107 lines
2.2 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
|
||
|
}
|
||
|
|
||
|
// 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
|
||
|
}
|