fix: build during 'version_autogen.go' generation on complex origins. '^' is used...
[git-purged.git] / Makefile
1 .PHONY: default build full_build test
2
3 export GOPATH:=${PWD}
4
5 BUILD_DIR=${PWD}/build
6 APP_NAME=git-purged
7 BUILD_BIN=${BUILD_DIR}/${APP_NAME}
8 VERSION_AUTOGEN_FN=version_autogen.go
9 BUILD_VERSION_FN=${BUILD_DIR}/version_autogen.go
10
11 default: build
12
13 build: _build_dir _version_file
14         @echo - Build "${APP_NAME}" as '${BUILD_BIN}'
15         @go build -v -o ${BUILD_BIN} ./*.go
16
17 full_build: test build
18
19 test: _test_deps
20         @echo Run tests for supplimentary code
21         @go test -v git_purged
22
23
24 _test_deps:
25         @echo Download test dependencies
26         @go get -v -d -t ./src/git_purged
27
28 _build_dir:
29         @echo - Prepare build directory
30         @test -d ${BUILD_DIR} || mkdir ${BUILD_DIR}
31
32 _version_file: _build_dir
33         @echo - Prepare build version
34         @cp -f version.go.template ${BUILD_VERSION_FN}
35
36         @echo - Collecting build version details
37         $(eval GIT_ORIGIN:=$(shell git config --get remote.origin.url || (echo -n local/; git rev-parse --abbrev-ref HEAD) ))
38         @sed -i -e 's^%BUILD_GIT_ORIGIN%^${GIT_ORIGIN}^g' ${BUILD_VERSION_FN}
39         $(eval GIT_COMMIT:=$(shell git log -1 --format=%h))
40         @sed -i -e 's^%BUILD_GIT_COMMIT%^${GIT_COMMIT}^g' ${BUILD_VERSION_FN}
41         $(eval BUILD_DATE:=$(shell date +%s))
42         @sed -i -e 's^%BUILD_DATE%^${BUILD_DATE}^g' ${BUILD_VERSION_FN}
43         @echo - Build version ORIGIN: ${GIT_ORIGIN}, COMMIT: ${GIT_COMMIT}, DATE: ${BUILD_DATE}
44
45         @ln -sf ${BUILD_VERSION_FN} ./${VERSION_AUTOGEN_FN}
46
47 clean:
48         @echo - Clean build artefacts up
49         @rm -rf ${BUILD_DIR}
50         @test -f ./${VERSION_AUTOGEN_FN} && unlink ./${VERSION_AUTOGEN_FN} || /bin/true