/
certificate_info.go
67 lines (54 loc) · 1.62 KB
/
certificate_info.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package cmd
import (
"fmt"
"os"
"strings"
"text/tabwriter"
ACM "github.com/jpignata/fargate/acm"
"github.com/jpignata/fargate/console"
"github.com/jpignata/fargate/util"
"github.com/spf13/cobra"
)
type CertificateInfoOperation struct {
DomainName string
}
var certificateInfoCmd = &cobra.Command{
Use: "info <domain-name>",
Short: "Inspect certificate",
Long: `Inspect certificate
Show extended information for a certificate including each validation for the
certificate including any DNS records which must be created to validate
domain ownership.`,
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
operation := &CertificateInfoOperation{
DomainName: args[0],
}
getCertificateInfo(operation)
},
}
func init() {
certificateCmd.AddCommand(certificateInfoCmd)
}
func getCertificateInfo(operation *CertificateInfoOperation) {
acm := ACM.New(sess)
certificate := acm.DescribeCertificate(operation.DomainName)
console.KeyValue("Domain Name", "%s\n", certificate.DomainName)
console.KeyValue("Status", "%s\n", util.Humanize(certificate.Status))
console.KeyValue("Type", "%s\n", util.Humanize(certificate.Type))
console.KeyValue("Subject Alternative Names", "%s\n", strings.Join(certificate.SubjectAlternativeNames, ", "))
if len(certificate.Validations) > 0 {
console.Header("Validations")
w := new(tabwriter.Writer)
w.Init(os.Stdout, 0, 8, 1, '\t', 0)
fmt.Fprintln(w, "Domain Name\tStatus\tRecord")
for _, v := range certificate.Validations {
fmt.Fprintf(w, "%s\t%s\t%s\n",
v.DomainName,
util.Humanize(v.Status),
v.ResourceRecordString(),
)
}
w.Flush()
}
}