bwplotka / bingo

Like `go get` but for Go tools! CI Automating versioning of Go binaries in a nested, isolated Go modules.
Apache License 2.0
347 stars 29 forks source link

Add windows support #26

Open bwplotka opened 4 years ago

bwplotka commented 4 years ago

AC:

codefromthecrypt commented 3 years ago

minimally we need to quote more. ex this:

--- a/.bingo/Variables.mk
+++ b/.bingo/Variables.mk
@@ -21,23 +21,23 @@ GOIMPORTS := $(GOBIN)/goimports-v0.1.2
 $(GOIMPORTS): $(BINGO_DIR)/goimports.mod
        @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
        @echo "(re)installing $(GOBIN)/goimports-v0.1.2"
-       @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=goimports.mod -o=$(GOBIN)/goimports-v0.1.2 "golang.org/x/tools/cmd/goimports"
+       @cd "$(BINGO_DIR)" && "$(GO)" build -mod=mod -modfile=goimports.mod -o="$(GOBIN)/goimports-v0.1.2" "golang.org/x/tools/cmd/goimports"
codefromthecrypt commented 3 years ago

I think spaces just won't work. there are a bunch of reasons why. windows would only work if you can use non-spaces for both go and the checked out project

codefromthecrypt commented 3 years ago

one main issue is that go env GOPATH comes out like `c:...'

The result is this is ambiguous and fails

GOBIN  ?= $(firstword $(subst :, ,${GOPATH}))/bin
codefromthecrypt commented 3 years ago

This seems to work around things well enough in git bash assuming you have go installed in a non-spaced directory such as you'd get using https://github.com/travis-ci/gimme

--- a/.bingo/Variables.mk
+++ b/.bingo/Variables.mk
@@ -2,7 +2,9 @@
 # All tools are designed to be build inside $GOBIN.
 BINGO_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
 GOPATH ?= $(shell go env GOPATH)
-GOBIN  ?= $(firstword $(subst :, ,${GOPATH}))/bin
+# This handles translation for Windows, but only in cygwin or similar environments
+PATHSEP := $(if $(COMSPEC),;,:)
+GOBIN  ?= $(firstword $(subst $(PATHSEP), ,$(subst \,/,${GOPATH})))/bin
 GO     ?= $(shell which go)