From f4728e78bb3f91be2e4efc33df797df9af2e75d4 Mon Sep 17 00:00:00 2001 From: Gabe Date: Fri, 8 Jun 2018 15:47:10 -0600 Subject: [PATCH] Rename executable to masonry - Create a new compliance-masonry executable for legacy uses - New masonry.go is now the primary program naming - Fixes #177 --- .circleci/config.yml | 5 ++- Makefile | 17 +++++---- appveyor.yml | 1 + cmd/compliance-masonry/compliance-masonry.go | 35 ++++++++++++++++--- cmd/masonry/masonry.go | 14 ++++++++ .../masonry_suit_test.go} | 2 +- .../masonry_test.go} | 6 ++-- examples/example_test.go | 2 +- pkg/cmd/masonry/cmd.go | 2 +- pkg/tests/test_masonry.go | 2 +- 10 files changed, 67 insertions(+), 19 deletions(-) create mode 100644 cmd/masonry/masonry.go rename cmd/{compliance-masonry/compliance-masonry_suit_test.go => masonry/masonry_suit_test.go} (79%) rename cmd/{compliance-masonry/compliance-masonry_test.go => masonry/masonry_test.go} (86%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 82fd5426..7d78e3cd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,8 +11,11 @@ jobs: - checkout - run: - name: Build the program + name: Build the compliance-masonry program command: go build cmd/compliance-masonry/compliance-masonry.go + - run: + name: Build the masonry program + command: go build cmd/masonry/masonry.go - run: name: Run tests command: ./.circleci/coverage.sh diff --git a/Makefile b/Makefile index 2a229610..bf689111 100644 --- a/Makefile +++ b/Makefile @@ -5,12 +5,12 @@ GOFMT ?= gofmt GOLINT ?= golint EPOCH_TEST_COMMIT ?= 1cc5a27 PROJECT := github.com/opencontrol/compliance-masonry -PROGNAME ?= compliance-masonry +PROGNAME ?= masonry GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null) GIT_BRANCH_CLEAN := $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g") PREFIX ?= ${DESTDIR}/usr/local BINDIR ?= ${PREFIX}/bin -DATAROOTDIR ?= ${PREFIX}/share/compliance-masonry +DATAROOTDIR ?= ${PREFIX}/share/masonry BASHINSTALLDIR=${PREFIX}/share/bash-completion/completions @@ -36,10 +36,12 @@ DEBUGFLAGS ?= -gcflags="-N -l" endif build: - $(GO) build \ - $(DEBUGFLAGS) \ + $(GO) build $(DEBUGFLAGS) \ -o $(BUILD_DIR)/$(PROGNAME) \ - cmd/compliance-masonry/compliance-masonry.go + cmd/masonry/masonry.go + $(GO) build $(DEBUGFLAGS) \ + -o $(BUILD_DIR)/compliance-masonry \ + cmd/compliance-masonry/compliance-masonry.go all: build @@ -48,9 +50,12 @@ platforms: GOOS="`echo $$platform | cut -d"/" -f1`"; \ GOARCH="`echo $$platform | cut -d"/" -f2`"; \ output_name="$(BUILD_DIR)/$$GOOS-$$GOARCH/$(PROGNAME)"; \ + legacy_name="$(BUILD_DIR)/$$GOOS-$$GOARCH/compliance-masonry"; \ [ $$GOOS = "windows" ] && output_name="$$output_name.exe"; \ + [ $$GOOS = "windows" ] && legacy_name="$$legacy_name.exe"; \ echo "Building $(PROGNAME) version $(VERSION) for $$GOOS on $$GOARCH"; \ - GOOS=$$GOOS GOARCH=$$GOARCH $(GO) build -o $$output_name cmd/compliance-masonry/compliance-masonry.go; \ + GOOS=$$GOOS GOARCH=$$GOARCH $(GO) build -o $$output_name cmd/masonry/masonry.go; \ + GOOS=$$GOOS GOARCH=$$GOARCH $(GO) build -o $$legacy_name cmd/compliance-masonry/compliance-masonry.go; \ [ -d $(BUILD_DIR)/$$GOOS-$$GOARCH/ ] && cp {LICENSE.md,README.md} $(BUILD_DIR)/$$GOOS-$$GOARCH/; \ done diff --git a/appveyor.yml b/appveyor.yml index d3c1712a..3903be97 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -18,5 +18,6 @@ install: set PATH=%PATH%;%GOPATH%\bin build_script: - cmd: go build cmd/compliance-masonry/compliance-masonry.go +- cmd: go build cmd/masonry/masonry.go test_script: - cmd: FOR /F %%A IN ('glide novendor') DO go test -v %%A || exit /b 1 diff --git a/cmd/compliance-masonry/compliance-masonry.go b/cmd/compliance-masonry/compliance-masonry.go index a3774653..4e7f6e3d 100644 --- a/cmd/compliance-masonry/compliance-masonry.go +++ b/cmd/compliance-masonry/compliance-masonry.go @@ -1,14 +1,39 @@ package main import ( + "fmt" + "log" "os" - - "github.com/opencontrol/compliance-masonry/pkg/cmd/masonry" + "os/exec" + "path/filepath" + "runtime" ) func main() { - if err := masonry.Run(); err != nil { - os.Exit(1) + var binary string + var cmd *exec.Cmd + + if runtime.GOOS == "windows" { + binary = "masonry.exe" + } else { + binary = "masonry" + } + + prog, err := filepath.Abs(filepath.Join(binary)) + if err != nil { + log.Fatal(err) + } + + args := os.Args + if len(args) > 1 { + cmd = exec.Command(prog, args[1:]...) + } else { + cmd = exec.Command(prog) + } + + output, err := cmd.CombinedOutput() + if err != nil { + //do nothing } - os.Exit(0) + fmt.Printf("%s\n", output) } diff --git a/cmd/masonry/masonry.go b/cmd/masonry/masonry.go new file mode 100644 index 00000000..a3774653 --- /dev/null +++ b/cmd/masonry/masonry.go @@ -0,0 +1,14 @@ +package main + +import ( + "os" + + "github.com/opencontrol/compliance-masonry/pkg/cmd/masonry" +) + +func main() { + if err := masonry.Run(); err != nil { + os.Exit(1) + } + os.Exit(0) +} diff --git a/cmd/compliance-masonry/compliance-masonry_suit_test.go b/cmd/masonry/masonry_suit_test.go similarity index 79% rename from cmd/compliance-masonry/compliance-masonry_suit_test.go rename to cmd/masonry/masonry_suit_test.go index 432ac38e..1f8364be 100644 --- a/cmd/compliance-masonry/compliance-masonry_suit_test.go +++ b/cmd/masonry/masonry_suit_test.go @@ -7,7 +7,7 @@ import ( "testing" ) -func TestComplianceMasonryGo(t *testing.T) { +func TestMasonryGo(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "ComplianceMasonryGo Suite") } diff --git a/cmd/compliance-masonry/compliance-masonry_test.go b/cmd/masonry/masonry_test.go similarity index 86% rename from cmd/compliance-masonry/compliance-masonry_test.go rename to cmd/masonry/masonry_test.go index 0620e99d..eaed74fb 100644 --- a/cmd/compliance-masonry/compliance-masonry_test.go +++ b/cmd/masonry/masonry_test.go @@ -8,8 +8,8 @@ import ( var usage = ` Usage: - compliance-masonry [flags] - compliance-masonry [command] + masonry [flags] + masonry [command] Available Commands: diff Compliance Diff Gap Analysis @@ -18,7 +18,7 @@ Available Commands: help Help about any command Flags: - -h, --help help for compliance-masonry + -h, --help help for masonry --verbose Run with verbosity -v, --version Print the version ` diff --git a/examples/example_test.go b/examples/example_test.go index 9b1a8614..260dc709 100644 --- a/examples/example_test.go +++ b/examples/example_test.go @@ -84,7 +84,7 @@ func cleanupOpencontrolWorkspace() { } func Masonry(args ...string) *Session { - path, err := Build("github.com/opencontrol/compliance-masonry/cmd/compliance-masonry") + path, err := Build("github.com/opencontrol/compliance-masonry/cmd/masonry") Expect(err).NotTo(HaveOccurred()) return createCommand(path, args...) } diff --git a/pkg/cmd/masonry/cmd.go b/pkg/cmd/masonry/cmd.go index 2bcb7836..d8f74d66 100644 --- a/pkg/cmd/masonry/cmd.go +++ b/pkg/cmd/masonry/cmd.go @@ -25,7 +25,7 @@ var Version bool // Add new commands/subcommands for new verbs in this function func NewMasonryCommand(in io.Reader, out, err io.Writer) *cobra.Command { cmds := &cobra.Command{ - Use: "compliance-masonry", + Use: "masonry", Short: "OpenControl CLI Tool", Long: `Compliance Masonry is a command-line interface (CLI) that allows users to construct certification documentation using diff --git a/pkg/tests/test_masonry.go b/pkg/tests/test_masonry.go index 8ecd510f..e3570465 100644 --- a/pkg/tests/test_masonry.go +++ b/pkg/tests/test_masonry.go @@ -13,7 +13,7 @@ import ( // Masonry is used to launch tests on the CLI func Masonry(args ...string) *gexec.Session { RegisterFailHandler(Fail) - path, err := gexec.Build("github.com/opencontrol/compliance-masonry/cmd/compliance-masonry") + path, err := gexec.Build("github.com/opencontrol/compliance-masonry/cmd/masonry") Expect(err).NotTo(HaveOccurred()) cmd := exec.Command(path, args...) stdin, err := cmd.StdinPipe()