github.com/engineyard/workflow-cli@v2.21.6+incompatible/parser/services.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 // Services routes service commands to their specific function. 9 func Services(argv []string, cmdr cmd.Commander) error { 10 usage := ` 11 Valid commands for services: 12 13 services:add create service for an application 14 services:list list application services 15 services:remove remove service from an application 16 17 Use 'deis help [command]' to learn more. 18 ` 19 20 switch argv[0] { 21 case "services:add": 22 return servicesAdd(argv, cmdr) 23 case "services:list": 24 return servicesList(argv, cmdr) 25 case "services:remove": 26 return servicesRemove(argv, cmdr) 27 default: 28 if printHelp(argv, usage) { 29 return nil 30 } 31 32 if argv[0] == "services" { 33 argv[0] = "services:list" 34 return servicesList(argv, cmdr) 35 } 36 37 PrintUsage(cmdr) 38 return nil 39 } 40 } 41 42 func servicesAdd(argv []string, cmdr cmd.Commander) error { 43 usage := ` 44 Creates extra service for an application and binds it to specific route of the main app domain 45 46 Usage: deis services:add --type <procfile_type> --route <path_pattern> [options] 47 48 Arguments: 49 <procfile_type> 50 Procfile type which should handle the request, e.g. webhooks (should be bind to the port PORT). 51 Only single extra service per Porcfile type could be created 52 53 <path_pattern> 54 Nginx locations where route requests, one or many via comma, 55 e.g. /webhooks/notify 56 OR "/webhooks/notify,~ ^/users/[0-9]+/.*/webhooks/notify,/webhooks/rest" 57 58 Options: 59 -a --app=<app> 60 the uniquely identifiable name for the application. 61 ` 62 63 args, err := docopt.Parse(usage, argv, true, "", false, true) 64 65 if err != nil { 66 return err 67 } 68 69 app := safeGetValue(args, "--app") 70 procfileType := safeGetValue(args, "<procfile_type>") 71 pathPattern := safeGetValue(args, "<path_pattern>") 72 73 return cmdr.ServicesAdd(app, procfileType, pathPattern) 74 } 75 76 func servicesList(argv []string, cmdr cmd.Commander) error { 77 usage := ` 78 Lists extra services for an application 79 80 Usage: deis services:list [options] 81 82 Options: 83 -a --app=<app> 84 the uniquely identifiable name for the application. 85 ` 86 87 args, err := docopt.Parse(usage, argv, true, "", false, true) 88 89 if err != nil { 90 return err 91 } 92 93 app := safeGetValue(args, "--app") 94 95 return cmdr.ServicesList(app) 96 } 97 98 func servicesRemove(argv []string, cmdr cmd.Commander) error { 99 usage := ` 100 Deletes specific extra service for application 101 102 Usage: deis services:remove <procfile_type> [options] 103 104 Arguments: 105 <procfile_type> 106 extra service for procfile type that should be removed 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 procfileType := safeGetValue(args, "<procfile_type>") 121 122 return cmdr.ServicesRemove(app, procfileType) 123 }