package dns

import (
	"fmt"
	"os"

	"github.com/AlecAivazis/survey/v2"
	"github.com/sirupsen/logrus"
)

// NewToken constructs a new DNS provider token.
func NewToken(provider, providerTokenEnvVar string) (string, error) {
	if token, present := os.LookupEnv(providerTokenEnvVar); present {
		return token, nil
	}

	logrus.Debugf("no %s in environment, asking via stdin", providerTokenEnvVar)

	var token string
	prompt := &survey.Input{
		Message: fmt.Sprintf("%s API token?", provider),
	}
	if err := survey.AskOne(prompt, &token); err != nil {
		return "", err
	}

	return token, nil
}