2017-09-13 10:00:41 -04:00
package commands
import (
"fmt"
2022-05-04 11:02:36 -04:00
"github.com/StackExchange/dnscontrol/v3/pkg/credsfile"
2020-04-14 16:47:30 -04:00
"github.com/StackExchange/dnscontrol/v3/providers"
2022-08-14 20:46:56 -04:00
"github.com/urfave/cli/v2"
2017-09-13 10:00:41 -04:00
)
var _ = cmd ( catUtils , func ( ) * cli . Command {
var args CreateDomainsArgs
return & cli . Command {
Name : "create-domains" ,
2022-06-08 21:18:26 +02:00
Usage : "DEPRECATED: Ensures that all domains in your configuration are activated at their Domain Service Provider (This does not purchase the domain or otherwise interact with Registrars.)" ,
2017-09-13 10:00:41 -04:00
Action : func ( ctx * cli . Context ) error {
return exit ( CreateDomains ( args ) )
} ,
Flags : args . flags ( ) ,
2022-06-08 21:18:26 +02:00
Before : func ( context * cli . Context ) error {
fmt . Println ( "DEPRECATED: This command is deprecated. The domain is automatically created at the Domain Service Provider during the push command." )
fmt . Println ( "DEPRECATED: To prevent disable auto-creating, use --no-populate with the push command." )
return nil
} ,
2017-09-13 10:00:41 -04:00
}
} ( ) )
2018-01-09 12:53:16 -05:00
// CreateDomainsArgs args required for the create-domain subcommand.
2017-09-13 10:00:41 -04:00
type CreateDomainsArgs struct {
GetDNSConfigArgs
GetCredentialsArgs
}
func ( args * CreateDomainsArgs ) flags ( ) [ ] cli . Flag {
flags := args . GetDNSConfigArgs . flags ( )
flags = append ( flags , args . GetCredentialsArgs . flags ( ) ... )
return flags
}
2018-01-09 12:53:16 -05:00
// CreateDomains contains all data/flags needed to run create-domains, independently of CLI.
2017-09-13 10:00:41 -04:00
func CreateDomains ( args CreateDomainsArgs ) error {
cfg , err := GetDNSConfig ( args . GetDNSConfigArgs )
if err != nil {
return err
}
2022-05-04 11:02:36 -04:00
providerConfigs , err := credsfile . LoadProviderConfigs ( args . CredsFile )
if err != nil {
return err
}
_ , err = InitializeProviders ( cfg , providerConfigs , false )
2017-09-13 10:00:41 -04:00
if err != nil {
return err
}
for _ , domain := range cfg . Domains {
fmt . Println ( "*** " , domain . Name )
2018-02-01 11:45:53 -05:00
for _ , provider := range domain . DNSProviderInstances {
2023-02-07 17:52:49 +05:30
if creator , ok := provider . Driver . ( providers . ZoneCreator ) ; ok {
2018-02-01 11:45:53 -05:00
fmt . Println ( " -" , provider . Name )
2023-02-07 17:52:49 +05:30
err := creator . EnsureZoneExists ( domain . Name )
2017-09-13 10:00:41 -04:00
if err != nil {
fmt . Printf ( "Error creating domain: %s\n" , err )
}
}
}
}
return nil
}