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  }