Migrated command line commands and flags handling to cobra framework.
This commit is contained in:
87
main.go
87
main.go
@@ -6,7 +6,6 @@ import (
|
||||
"crypto/x509"
|
||||
"crypto/x509/pkix"
|
||||
"encoding/pem"
|
||||
"flag"
|
||||
"fmt"
|
||||
"math/big"
|
||||
"os"
|
||||
@@ -14,6 +13,7 @@ import (
|
||||
|
||||
gohcl "github.com/hashicorp/hcl/v2/gohcl"
|
||||
hclparse "github.com/hashicorp/hcl/v2/hclparse"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
// CAConfig represents a CA block in HCL
|
||||
@@ -131,33 +131,66 @@ func (c *CAConfig) Validate() error {
|
||||
}
|
||||
|
||||
func main() {
|
||||
initCA := flag.Bool("initca", false, "Generate a new CA certificate and key")
|
||||
configPath := flag.String("config", "ca_config.hcl", "Path to CA configuration file")
|
||||
overwrite := flag.Bool("overwrite", false, "Allow overwriting existing files")
|
||||
flag.Parse()
|
||||
var configPath string
|
||||
var overwrite bool
|
||||
|
||||
if *initCA {
|
||||
config, err := LoadCAConfig(*configPath)
|
||||
if err != nil {
|
||||
fmt.Println("Error loading config:", err)
|
||||
return
|
||||
}
|
||||
certPEM, keyPEM, err := GenerateCA(config)
|
||||
if err != nil {
|
||||
fmt.Println("Error generating CA:", err)
|
||||
return
|
||||
}
|
||||
if err := SavePEM("ca_cert.pem", certPEM, false, *overwrite); err != nil {
|
||||
fmt.Println("Error saving CA certificate:", err)
|
||||
return
|
||||
}
|
||||
if err := SavePEM("ca_key.pem", keyPEM, true, *overwrite); err != nil {
|
||||
fmt.Println("Error saving CA key:", err)
|
||||
return
|
||||
}
|
||||
fmt.Println("CA certificate and key generated.")
|
||||
return
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "lab-ca",
|
||||
Short: "Certificate Authority Utility",
|
||||
Long: "lab-ca - Certificate Authority Utility",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
printMainHelp()
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Println("No action specified. Use -initca to generate a CA.")
|
||||
var initcaCmd = &cobra.Command{
|
||||
Use: "initca",
|
||||
Short: "Generate a new CA certificate and key",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
handleInitCA(configPath, overwrite)
|
||||
},
|
||||
}
|
||||
|
||||
initcaCmd.Flags().StringVar(&configPath, "config", "ca_config.hcl", "Path to CA configuration file")
|
||||
initcaCmd.Flags().BoolVar(&overwrite, "overwrite", false, "Allow overwriting existing files")
|
||||
|
||||
rootCmd.AddCommand(initcaCmd)
|
||||
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func handleInitCA(configPath string, overwrite bool) {
|
||||
config, err := LoadCAConfig(configPath)
|
||||
if err != nil {
|
||||
fmt.Println("Error loading config:", err)
|
||||
return
|
||||
}
|
||||
certPEM, keyPEM, err := GenerateCA(config)
|
||||
if err != nil {
|
||||
fmt.Println("Error generating CA:", err)
|
||||
return
|
||||
}
|
||||
if err := SavePEM("ca_cert.pem", certPEM, false, overwrite); err != nil {
|
||||
fmt.Println("Error saving CA certificate:", err)
|
||||
return
|
||||
}
|
||||
if err := SavePEM("ca_key.pem", keyPEM, true, overwrite); err != nil {
|
||||
fmt.Println("Error saving CA key:", err)
|
||||
return
|
||||
}
|
||||
fmt.Println("CA certificate and key generated.")
|
||||
}
|
||||
|
||||
func printMainHelp() {
|
||||
fmt.Println("lab-ca - Certificate Authority Utility")
|
||||
fmt.Println()
|
||||
fmt.Println("Usage:")
|
||||
fmt.Println(" lab-ca <command> [options]")
|
||||
fmt.Println()
|
||||
fmt.Println("Available commands:")
|
||||
fmt.Println(" initca Generate a new CA certificate and key")
|
||||
fmt.Println()
|
||||
fmt.Println("Use 'lab-ca <command> --help' for more information about a command.")
|
||||
}
|
||||
|
Reference in New Issue
Block a user