diff --git a/Makefile b/Makefile index a24b2fea..f0541c2f 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,10 @@ .PHONY: runtime +VERSION = "$(shell git rev-parse --short HEAD)" + build: runtime go get -d ./cmd/micro - go build -o micro ./cmd/micro + go build -ldflags "-X main.Version=$(VERSION)" -o micro ./cmd/micro install: build runtime mv micro $(GOPATH)/bin diff --git a/README.md b/README.md index 44ef0f22..a88bfb4f 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,10 @@ You can move the cursor around with the arrow keys and mouse. You can also use the mouse to manipulate the text. Simply clicking and dragging will select text. You can also double click to enable word selection, and triple click to enable line selection. +You can also run `$ micro -version` to get the version number. Since there is no release, this just gives you the +commit hash. The version is unknown if you built with `go get`, instead use `make install` or `make` to get a binary +with a version number defined. + # Configuration Configuration directory: diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 829a4e24..69c7352a 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -1,6 +1,7 @@ package main import ( + "flag" "fmt" "io/ioutil" "os" @@ -33,6 +34,10 @@ var ( // This should be $XDG_CONFIG_HOME/micro // If $XDG_CONFIG_HOME is not set, it is ~/.config/micro configDir string + + // Version is the version number. + // This should be set by the linker + Version = "Unknown" ) // LoadInput loads the file input for the editor @@ -101,7 +106,15 @@ func InitConfigDir() { } } +var flagVersion = flag.Bool("version", false, "Show version number") + func main() { + flag.Parse() + if *flagVersion { + fmt.Println("Micro version:", Version) + os.Exit(0) + } + filename, input, err := LoadInput() if err != nil { fmt.Println(err) diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh index 4f5511de..6d476c61 100755 --- a/tools/cross-compile.sh +++ b/tools/cross-compile.sh @@ -6,53 +6,55 @@ mkdir -p micro cp LICENSE micro cp README.md micro +VERSION="$(git rev-parse --short HEAD)" + # Mac echo "OSX 64" -GOOS=darwin GOARCH=amd64 go build -o micro/micro ./cmd/micro +GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-osx.tar.gz micro mv micro-osx.tar.gz binaries # Linux echo "Linux 64" -GOOS=linux GOARCH=amd64 go build -o micro/micro ./cmd/micro +GOOS=linux GOARCH=amd64 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-linux64.tar.gz micro mv micro-linux64.tar.gz binaries echo "Linux 32" -GOOS=linux GOARCH=386 go build -o micro/micro ./cmd/micro +GOOS=linux GOARCH=386 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-linux32.tar.gz micro mv micro-linux32.tar.gz binaries echo "Linux arm" -GOOS=linux GOARCH=arm go build -o micro/micro ./cmd/micro +GOOS=linux GOARCH=arm go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-linux-arm.tar.gz micro mv micro-linux-arm.tar.gz binaries # NetBSD echo "NetBSD 64" -GOOS=netbsd GOARCH=amd64 go build -o micro/micro ./cmd/micro +GOOS=netbsd GOARCH=amd64 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-netbsd64.tar.gz micro mv micro-netbsd64.tar.gz binaries echo "NetBSD 32" -GOOS=netbsd GOARCH=386 go build -o micro/micro ./cmd/micro +GOOS=netbsd GOARCH=386 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-netbsd32.tar.gz micro mv micro-netbsd32.tar.gz binaries # OpenBSD echo "OpenBSD 64" -GOOS=openbsd GOARCH=amd64 go build -o micro/micro ./cmd/micro +GOOS=openbsd GOARCH=amd64 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-openbsd64.tar.gz micro mv micro-openbsd64.tar.gz binaries echo "OpenBSD 32" -GOOS=openbsd GOARCH=386 go build -o micro/micro ./cmd/micro +GOOS=openbsd GOARCH=386 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-openbsd32.tar.gz micro mv micro-openbsd32.tar.gz binaries # FreeBSD echo "FreeBSD 64" -GOOS=freebsd GOARCH=amd64 go build -o micro/micro ./cmd/micro +GOOS=freebsd GOARCH=amd64 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-freebsd64.tar.gz micro mv micro-freebsd64.tar.gz binaries echo "FreeBSD 32" -GOOS=freebsd GOARCH=386 go build -o micro/micro ./cmd/micro +GOOS=freebsd GOARCH=386 go build -ldflags "-X main.Version=$VERSION" -o micro/micro ./cmd/micro tar -czf micro-freebsd32.tar.gz micro mv micro-freebsd32.tar.gz binaries @@ -60,11 +62,11 @@ rm micro/micro # Windows echo "Windows 64" -GOOS=windows GOARCH=amd64 go build -o micro/micro.exe ./cmd/micro +GOOS=windows GOARCH=amd64 go build -ldflags "-X main.Version=$VERSION" -o micro/micro.exe ./cmd/micro zip -r -q -T micro-win64.zip micro mv micro-win64.zip binaries echo "Windows 32" -GOOS=windows GOARCH=386 go build -o micro/micro.exe ./cmd/micro +GOOS=windows GOARCH=386 go build -ldflags "-X main.Version=$VERSION" -o micro/micro.exe ./cmd/micro zip -r -q -T micro-win32.zip micro mv micro-win32.zip binaries