@@ -4,11 +4,14 @@ import (
44 "bytes"
55 "crypto/tls"
66 "crypto/x509"
7+ _ "embed"
78 "encoding/pem"
89 "fmt"
910 "log"
1011 "os"
1112 "strings"
13+
14+ "github.com/spf13/pflag"
1215)
1316
1417var (
1821 VERSION = "internal"
1922)
2023
21- func usage () {
22- fmt .Fprintf (os .Stderr , "Usage: certinfo url|file\n " )
23- fmt .Fprintf (os .Stderr , "Examples:\n " )
24- fmt .Fprintf (os .Stderr , " certinfo https://google.com\n " )
25- fmt .Fprintf (os .Stderr , " certinfo mycert.pem\n " )
26- os .Exit (1 )
27- }
24+ //go:embed README.md
25+ var helpText string
2826
2927func getHttpsCerts (url string ) ([]* x509.Certificate , error ) {
3028
@@ -51,13 +49,32 @@ func getHttpsCerts(url string) ([]*x509.Certificate, error) {
5149
5250func main () {
5351
54- if len (os .Args ) < 2 {
55- usage ()
52+ var help = pflag .BoolP ("help" , "h" , false , "Show help message" )
53+ var version = pflag .Bool ("version" , false , "Print version information" )
54+
55+ pflag .Parse ()
56+
57+ if * version {
58+ fmt .Fprintf (os .Stdout , "certinfo version %s (built by %s on %s, commit %s)\n " , VERSION , BUILDER , LASTMOD , COMMIT )
59+ return
60+ }
61+
62+ if * help {
63+ fmt .Printf ("Usage: certinfo [options] file ...\n \n " )
64+ fmt .Printf ("Options:\n " )
65+ pflag .PrintDefaults ()
66+ fmt .Printf ("%s\n " , helpText )
67+ return
68+ }
69+
70+ if len (pflag .Args ()) < 1 {
71+ fmt .Fprintf (os .Stderr , "Usage: certinfo [options] file|url ...\n " )
72+ os .Exit (1 )
5673 }
5774
5875 var certs []* x509.Certificate
5976
60- for _ , arg := range os .Args [ 1 :] {
77+ for _ , arg := range pflag .Args () {
6178 if strings .HasPrefix (arg , "https://" ) {
6279 httpsCerts , httpsErr := getHttpsCerts (arg )
6380 if httpsErr != nil {
0 commit comments