2018-06-28 08:40:18 +03:00
PWD := $( shell pwd )
PARENT_DIR := $( shell dirname $( PWD) )
2018-07-03 20:10:13 +03:00
VERSION ?= $( shell ../scripts/get-version.sh)
2020-04-16 04:24:50 +03:00
PLUGINS_BRANCH ?= master
2019-02-04 13:51:29 +03:00
OS ?= linux darwin windows
2018-06-28 08:40:18 +03:00
OUTPUT_DIR := _output
2020-06-03 07:06:23 +03:00
HAS_GOX := $( shell command -v gox; )
HAS_PKGER := $( shell command -v pkger; )
2018-06-28 08:40:18 +03:00
# compile assets
2018-06-29 16:09:21 +03:00
.PHONY : assets
2018-06-28 08:40:18 +03:00
assets :
2020-04-08 14:55:42 +03:00
i f n d e f H A S _ P K G E R
go get github.com/markbates/pkger/cmd/pkger
e n d i f
2020-04-07 12:23:20 +03:00
pkger -o pkg/console/templates/packed -include /pkg/console/templates/gohtml/
2018-06-28 08:40:18 +03:00
2018-06-29 16:09:21 +03:00
.PHONY : deps
2018-06-28 08:40:18 +03:00
# get dependencies
deps :
2019-12-12 08:37:26 +03:00
go mod download
2018-06-29 16:09:21 +03:00
i f n d e f H A S _ G O X
2018-06-28 08:40:18 +03:00
go get github.com/mitchellh/gox
2018-06-29 16:09:21 +03:00
e n d i f
2018-06-28 08:40:18 +03:00
# build cli locally, for all given platform/arch
2018-06-29 16:09:21 +03:00
.PHONY : build
2018-07-20 14:00:25 +03:00
build : export CGO_ENABLED =0
2018-06-28 08:40:18 +03:00
build :
2020-04-16 04:24:50 +03:00
gox -ldflags '-X github.com/hasura/graphql-engine/cli/version.BuildVersion=$(VERSION) -X github.com/hasura/graphql-engine/cli/plugins.IndexBranchRef=$(PLUGINS_BRANCH) -s -w -extldflags "-static"' \
2018-07-20 14:00:25 +03:00
-rebuild \
2019-02-04 13:51:29 +03:00
-os= " $( OS) " \
2018-06-28 08:40:18 +03:00
-arch= "amd64" \
2018-07-17 20:00:26 +03:00
-output= " $( OUTPUT_DIR) / $( VERSION) /cli-hasura-{{.OS}}-{{.Arch}} " \
2018-06-28 08:40:18 +03:00
./cmd/hasura/
2018-06-29 16:09:21 +03:00
# compress
.PHONY : compress
compress :
2018-07-17 20:00:26 +03:00
ls $( OUTPUT_DIR) /$( VERSION) /cli-hasura-* | xargs upx
2018-06-29 16:09:21 +03:00
2018-07-10 13:01:02 +03:00
# to be executed in circle-ci only
ci-copy-binary :
2018-07-17 20:00:26 +03:00
mkdir -p /build/_cli_output/binaries
cp $( OUTPUT_DIR) /$( VERSION) /cli-hasura-* /build/_cli_output/binaries
2018-07-10 13:01:02 +03:00
echo " $( VERSION) " > /build/_cli_output/version.txt
2018-06-28 08:40:18 +03:00
# run tests
2018-06-29 16:09:21 +03:00
.PHONY : test
2018-06-28 08:40:18 +03:00
test :
2020-02-24 19:14:46 +03:00
go test -ldflags " -X github.com/hasura/graphql-engine/cli/version.BuildVersion= $( VERSION) " -v -tags= " ${ TEST_TAGS } " ` go list ./... | grep -v integration_test`
go test -ldflags " -X github.com/hasura/graphql-engine/cli/version.BuildVersion= $( VERSION) " -v -tags= " ${ TEST_TAGS } " -run Commands/config= v1 ./integration_test
go test -ldflags " -X github.com/hasura/graphql-engine/cli/version.BuildVersion= $( VERSION) " -v -tags= " ${ TEST_TAGS } " -run Commands/config= v2 ./integration_test
2018-06-28 08:40:18 +03:00
# clean the output directory
2018-06-29 16:09:21 +03:00
.PHONY : clean
2018-06-28 08:40:18 +03:00
clean :
rm -rf " $( OUTPUT_DIR) "
2018-06-29 16:09:21 +03:00
.PHONY : all
2018-06-28 08:40:18 +03:00
all : deps assets test build
# build cli inside a docker container
all-in-docker :
docker build -t hasura-graphql-cli-builder -f build/builder.dockerfile build
docker run --rm -it \
-v $( PARENT_DIR) :/go/src/github.com/hasura/graphql-engine \
hasura-graphql-cli-builder \
make all