| 85 | var Version string |
| 86 | |
| 87 | func main() { |
| 88 | if len(os.Args) == 1 { |
| 89 | fmt.Print(shortUsage) |
| 90 | return |
| 91 | } |
| 92 | log.SetFlags(0) |
| 93 | var ( |
| 94 | installFlag = flag.Bool("install", false, "") |
| 95 | uninstallFlag = flag.Bool("uninstall", false, "") |
| 96 | pkcs12Flag = flag.Bool("pkcs12", false, "") |
| 97 | ecdsaFlag = flag.Bool("ecdsa", false, "") |
| 98 | clientFlag = flag.Bool("client", false, "") |
| 99 | helpFlag = flag.Bool("help", false, "") |
| 100 | carootFlag = flag.Bool("CAROOT", false, "") |
| 101 | csrFlag = flag.String("csr", "", "") |
| 102 | certFileFlag = flag.String("cert-file", "", "") |
| 103 | keyFileFlag = flag.String("key-file", "", "") |
| 104 | p12FileFlag = flag.String("p12-file", "", "") |
| 105 | versionFlag = flag.Bool("version", false, "") |
| 106 | ) |
| 107 | flag.Usage = func() { |
| 108 | fmt.Fprint(flag.CommandLine.Output(), shortUsage) |
| 109 | fmt.Fprintln(flag.CommandLine.Output(), `For more options, run "mkcert -help".`) |
| 110 | } |
| 111 | flag.Parse() |
| 112 | if *helpFlag { |
| 113 | fmt.Print(shortUsage) |
| 114 | fmt.Print(advancedUsage) |
| 115 | return |
| 116 | } |
| 117 | if *versionFlag { |
| 118 | if Version != "" { |
| 119 | fmt.Println(Version) |
| 120 | return |
| 121 | } |
| 122 | if buildInfo, ok := debug.ReadBuildInfo(); ok { |
| 123 | fmt.Println(buildInfo.Main.Version) |
| 124 | return |
| 125 | } |
| 126 | fmt.Println("(unknown)") |
| 127 | return |
| 128 | } |
| 129 | if *carootFlag { |
| 130 | if *installFlag || *uninstallFlag { |
| 131 | log.Fatalln("ERROR: you can't set -[un]install and -CAROOT at the same time") |
| 132 | } |
| 133 | fmt.Println(getCAROOT()) |
| 134 | return |
| 135 | } |
| 136 | if *installFlag && *uninstallFlag { |
| 137 | log.Fatalln("ERROR: you can't set -install and -uninstall at the same time") |
| 138 | } |
| 139 | if *csrFlag != "" && (*pkcs12Flag || *ecdsaFlag || *clientFlag) { |
| 140 | log.Fatalln("ERROR: can only combine -csr with -install and -cert-file") |
| 141 | } |
| 142 | if *csrFlag != "" && flag.NArg() != 0 { |
| 143 | log.Fatalln("ERROR: can't specify extra arguments when using -csr") |
| 144 | } |