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 }