github.com/engineyard/workflow-cli@v2.21.6+incompatible/parser/domains.go (about)

     1  package parser
     2  
     3  import (
     4  	"github.com/teamhephy/workflow-cli/cmd"
     5  	docopt "github.com/docopt/docopt-go"
     6  )
     7  
     8  // Domains routes domain commands to their specific function.
     9  func Domains(argv []string, cmdr cmd.Commander) error {
    10  	usage := `
    11  Valid commands for domains:
    12  
    13  domains:add           bind a domain to an application
    14  domains:list          list domains bound to an application
    15  domains:remove        unbind a domain from an application
    16  
    17  Use 'deis help [command]' to learn more.
    18  `
    19  
    20  	switch argv[0] {
    21  	case "domains:add":
    22  		return domainsAdd(argv, cmdr)
    23  	case "domains:list":
    24  		return domainsList(argv, cmdr)
    25  	case "domains:remove":
    26  		return domainsRemove(argv, cmdr)
    27  	default:
    28  		if printHelp(argv, usage) {
    29  			return nil
    30  		}
    31  
    32  		if argv[0] == "domains" {
    33  			argv[0] = "domains:list"
    34  			return domainsList(argv, cmdr)
    35  		}
    36  
    37  		PrintUsage(cmdr)
    38  		return nil
    39  	}
    40  }
    41  
    42  func domainsAdd(argv []string, cmdr cmd.Commander) error {
    43  	usage := `
    44  Binds a domain to an application.
    45  
    46  Usage: deis domains:add <domain> [options]
    47  
    48  Arguments:
    49    <domain>
    50      the domain name to be bound to the application, such as 'domain.deisapp.com'.
    51  
    52  Options:
    53    -a --app=<app>
    54      the uniquely identifiable name for the application.
    55  `
    56  
    57  	args, err := docopt.Parse(usage, argv, true, "", false, true)
    58  
    59  	if err != nil {
    60  		return err
    61  	}
    62  
    63  	app := safeGetValue(args, "--app")
    64  	domain := safeGetValue(args, "<domain>")
    65  
    66  	return cmdr.DomainsAdd(app, domain)
    67  }
    68  
    69  func domainsList(argv []string, cmdr cmd.Commander) error {
    70  	usage := `
    71  Lists domains bound to an application.
    72  
    73  Usage: deis domains:list [options]
    74  
    75  Options:
    76    -a --app=<app>
    77      the uniquely identifiable name for the application.
    78    -l --limit=<num>
    79      the maximum number of results to display, defaults to config setting
    80  `
    81  
    82  	args, err := docopt.Parse(usage, argv, true, "", false, true)
    83  
    84  	if err != nil {
    85  		return err
    86  	}
    87  
    88  	results, err := responseLimit(safeGetValue(args, "--limit"))
    89  
    90  	if err != nil {
    91  		return err
    92  	}
    93  	app := safeGetValue(args, "--app")
    94  
    95  	return cmdr.DomainsList(app, results)
    96  }
    97  
    98  func domainsRemove(argv []string, cmdr cmd.Commander) error {
    99  	usage := `
   100  Unbinds a domain for an application.
   101  
   102  Usage: deis domains:remove <domain> [options]
   103  
   104  Arguments:
   105    <domain>
   106      the domain name to be removed from the application.
   107  
   108  Options:
   109    -a --app=<app>
   110      the uniquely identifiable name for the application.
   111  `
   112  
   113  	args, err := docopt.Parse(usage, argv, true, "", false, true)
   114  
   115  	if err != nil {
   116  		return err
   117  	}
   118  
   119  	app := safeGetValue(args, "--app")
   120  	domain := safeGetValue(args, "<domain>")
   121  
   122  	return cmdr.DomainsRemove(app, domain)
   123  }