github.com/greenboxal/deis@v1.12.1/client/parser/certs.go (about)

     1  package parser
     2  
     3  import (
     4  	"github.com/deis/deis/client/cmd"
     5  	docopt "github.com/docopt/docopt-go"
     6  )
     7  
     8  // Certs routes certs commands to their specific function.
     9  func Certs(argv []string) error {
    10  	usage := `
    11  Valid commands for certs:
    12  
    13  certs:list            list SSL certificates for an app
    14  certs:add             add an SSL certificate to an app
    15  certs:remove          remove an SSL certificate from an app
    16  
    17  Use 'deis help [command]' to learn more.
    18  `
    19  
    20  	switch argv[0] {
    21  	case "certs:list":
    22  		return certsList(argv)
    23  	case "certs:add":
    24  		return certAdd(argv)
    25  	case "certs:remove":
    26  		return certRemove(argv)
    27  	default:
    28  		if printHelp(argv, usage) {
    29  			return nil
    30  		}
    31  
    32  		if argv[0] == "certs" {
    33  			argv[0] = "certs:list"
    34  			return certsList(argv)
    35  		}
    36  
    37  		PrintUsage()
    38  		return nil
    39  	}
    40  }
    41  
    42  func certsList(argv []string) error {
    43  	usage := `
    44  Show certificate information for an SSL application.
    45  
    46  Usage: deis certs:list [options]
    47  
    48  Options:
    49    -l --limit=<num>
    50      the maximum number of results to display, defaults to config setting
    51  `
    52  
    53  	args, err := docopt.Parse(usage, argv, true, "", false, true)
    54  
    55  	if err != nil {
    56  		return err
    57  	}
    58  
    59  	results, err := responseLimit(safeGetValue(args, "--limit"))
    60  
    61  	if err != nil {
    62  		return err
    63  	}
    64  
    65  	return cmd.CertsList(results)
    66  }
    67  
    68  func certAdd(argv []string) error {
    69  	usage := `
    70  Binds a certificate/key pair to an application.
    71  
    72  Usage: deis certs:add <cert> <key> [options]
    73  
    74  Arguments:
    75    <cert>
    76      The public key of the SSL certificate.
    77    <key>
    78      The private key of the SSL certificate.
    79  
    80  Options:
    81    --common-name=<cname>
    82      The common name of the certificate. If none is provided, the controller will
    83      interpret the common name from the certificate.
    84    --subject-alt-names=<sans>
    85      The subject alternate names (SAN) of the certificate, separated by commas. This will
    86      create multiple Certificate objects in the controller, one for each SAN.
    87  `
    88  
    89  	args, err := docopt.Parse(usage, argv, true, "", false, true)
    90  
    91  	if err != nil {
    92  		return err
    93  	}
    94  
    95  	cert := args["<cert>"].(string)
    96  	key := args["<key>"].(string)
    97  	commonName := safeGetValue(args, "--common-name")
    98  	sans := safeGetValue(args, "--subject-alt-names")
    99  
   100  	return cmd.CertAdd(cert, key, commonName, sans)
   101  }
   102  
   103  func certRemove(argv []string) error {
   104  	usage := `
   105  removes a certificate/key pair from the application.
   106  
   107  Usage: deis certs:remove <cn> [options]
   108  
   109  Arguments:
   110    <cn>
   111      the common name of the cert to remove from the app.
   112  `
   113  
   114  	args, err := docopt.Parse(usage, argv, true, "", false, true)
   115  
   116  	if err != nil {
   117  		return err
   118  	}
   119  
   120  	return cmd.CertRemove(safeGetValue(args, "<cn>"))
   121  }