github.com/engineyard/workflow-cli@v2.21.6+incompatible/parser/certs.go (about) 1 package parser 2 3 import ( 4 "time" 5 6 "github.com/teamhephy/workflow-cli/cmd" 7 docopt "github.com/docopt/docopt-go" 8 ) 9 10 // Certs routes certs commands to their specific function. 11 func Certs(argv []string, cmdr cmd.Commander) error { 12 usage := ` 13 Valid commands for certs: 14 15 certs:list list SSL certificates for an app 16 certs:add add an SSL certificate to an app 17 certs:remove remove an SSL certificate from an app 18 certs:info get detailed informaton about the certificate 19 certs:attach attach an SSL certificate to a domain 20 certs:detach detach an SSL certificate from a domain 21 22 Use 'deis help [command]' to learn more. 23 ` 24 25 switch argv[0] { 26 case "certs:list": 27 return certsList(argv, cmdr) 28 case "certs:add": 29 return certAdd(argv, cmdr) 30 case "certs:remove": 31 return certRemove(argv, cmdr) 32 case "certs:info": 33 return certInfo(argv, cmdr) 34 case "certs:attach": 35 return certAttach(argv, cmdr) 36 case "certs:detach": 37 return certDetach(argv, cmdr) 38 default: 39 if printHelp(argv, usage) { 40 return nil 41 } 42 43 if argv[0] == "certs" { 44 argv[0] = "certs:list" 45 return certsList(argv, cmdr) 46 } 47 48 PrintUsage(cmdr) 49 return nil 50 } 51 } 52 53 func certsList(argv []string, cmdr cmd.Commander) error { 54 usage := ` 55 Show certificate information for an SSL application. 56 57 Usage: deis certs:list [options] 58 59 Options: 60 -l --limit=<num> 61 the maximum number of results to display, defaults to config setting 62 ` 63 64 args, err := docopt.Parse(usage, argv, true, "", false, true) 65 if err != nil { 66 return err 67 } 68 69 results, err := responseLimit(safeGetValue(args, "--limit")) 70 if err != nil { 71 return err 72 } 73 74 return cmdr.CertsList(results, time.Now()) 75 } 76 77 func certAdd(argv []string, cmdr cmd.Commander) error { 78 usage := ` 79 Binds a certificate/key pair to an application. 80 81 Usage: deis certs:add <name> <cert> <key> [options] 82 83 Arguments: 84 <name> 85 Name of the certificate to reference it by. 86 <cert> 87 The public key of the SSL certificate. 88 <key> 89 The private key of the SSL certificate. 90 91 Options: 92 ` 93 94 args, err := docopt.Parse(usage, argv, true, "", false, true) 95 if err != nil { 96 return err 97 } 98 99 name := args["<name>"].(string) 100 cert := args["<cert>"].(string) 101 key := args["<key>"].(string) 102 103 return cmdr.CertAdd(cert, key, name) 104 } 105 106 func certRemove(argv []string, cmdr cmd.Commander) error { 107 usage := ` 108 removes a certificate/key pair from the application. 109 110 Usage: deis certs:remove <name> [options] 111 112 Arguments: 113 <name> 114 the name of the cert to remove from the app. 115 116 Options: 117 ` 118 119 args, err := docopt.Parse(usage, argv, true, "", false, true) 120 if err != nil { 121 return err 122 } 123 124 return cmdr.CertRemove(safeGetValue(args, "<name>")) 125 } 126 127 func certInfo(argv []string, cmdr cmd.Commander) error { 128 usage := ` 129 fetch more detailed information about a certificate 130 131 Usage: deis certs:info <name> [options] 132 133 Arguments: 134 <name> 135 the name of the cert to get information from 136 137 Options: 138 ` 139 140 args, err := docopt.Parse(usage, argv, true, "", false, true) 141 if err != nil { 142 return err 143 } 144 145 return cmdr.CertInfo(safeGetValue(args, "<name>")) 146 } 147 148 func certAttach(argv []string, cmdr cmd.Commander) error { 149 usage := ` 150 attach a certificate to a domain. 151 152 Usage: deis certs:attach <name> <domain> [options] 153 154 Arguments: 155 <name> 156 name of the certificate to attach domain to 157 <domain> 158 common name of the domain to attach to (needs to already be in the system) 159 160 Options: 161 ` 162 163 args, err := docopt.Parse(usage, argv, true, "", false, true) 164 if err != nil { 165 return err 166 } 167 168 name := safeGetValue(args, "<name>") 169 domain := safeGetValue(args, "<domain>") 170 return cmdr.CertAttach(name, domain) 171 } 172 173 func certDetach(argv []string, cmdr cmd.Commander) error { 174 usage := ` 175 detach a certificate from a domain. 176 177 Usage: deis certs:detach <name> <domain> [options] 178 179 Arguments: 180 <name> 181 name of the certificate to deatch from a domain 182 <domain> 183 common name of the domain to detach from 184 185 Options: 186 ` 187 188 args, err := docopt.Parse(usage, argv, true, "", false, true) 189 if err != nil { 190 return err 191 } 192 193 name := safeGetValue(args, "<name>") 194 domain := safeGetValue(args, "<domain>") 195 return cmdr.CertDetach(name, domain) 196 }