diff --git a/.gitignore b/.gitignore index 7e25b1b..71539d6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ **/go.sum # Ignore the binary output lab-ca* +build # Ignore any certificate files *.pem # Ignore CA configuration and certificate definitions. diff --git a/build.sh b/build.sh index b42b00f..945e39f 100755 --- a/build.sh +++ b/build.sh @@ -6,4 +6,17 @@ if [ $? -eq 0 ]; then else VERSION="dev" fi -go build -ldflags "-X main.Version=$VERSION" -o lab-ca + +if echo $VERSION | grep -q 'dirty$'; then + echo "Building in development mode, output directory is set to 'build'." + OUTPUT_DIR=build + + # Make sure the output directory exists, create it if it is not + mkdir -p $OUTPUT_DIR +else + echo "Building with version: $VERSION" + OUTPUT_DIR=$GOHOME/bin +fi + +# Build the Lab CA binary with version information +go build -ldflags "-X main.Version=$VERSION" -o $OUTPUT_DIR/lab-ca diff --git a/main.go b/main.go index b13769e..0808489 100644 --- a/main.go +++ b/main.go @@ -7,7 +7,7 @@ import ( "github.com/spf13/cobra" ) -var Version = "dev" +var Version = "" // Global flags available to all commands var overwrite bool @@ -225,7 +225,7 @@ func main() { Use: "version", Short: "Show version information", Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("lab-ca version: %s\n", Version) + fmt.Printf("lab-ca version: %s\n", getVersionDescription()) }, } rootCmd.AddCommand(versionCmd) @@ -235,15 +235,23 @@ func main() { } } +func getVersionDescription() string { + if Version == "" { + return "no version information was compiled in" + } + return Version +} + func printMainHelp() { fmt.Printf("lab-ca - Certificate Authority Utility\n") - fmt.Printf("Version: %s\n", Version) + fmt.Printf("Version: %s\n", getVersionDescription()) fmt.Println() fmt.Println("Usage:") fmt.Println(" lab-ca [options]") fmt.Println() fmt.Println("Available commands:") fmt.Println(" initca Generate a new CA certificate and key") + fmt.Println(" list List issued certificates") fmt.Println(" issue Issue a new certificate") fmt.Println(" provision Provision certificates from a batch file (HCL)") fmt.Println(" revoke Revoke a certificate by name or serial number") diff --git a/run-test.sh b/run-test.sh index 657e778..524df63 100755 --- a/run-test.sh +++ b/run-test.sh @@ -1,7 +1,7 @@ #!/bin/bash GREEN='\033[0;32m' NC='\033[0m' # No Color -LAB_CA="./lab-ca" +LAB_CA="build/lab-ca" PROVISION_CONFIG="examples/example-certificates.hcl" # Build and install # Build script for lab-ca with version injection from git tag