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; )
2021-05-17 03:29:11 +03:00
HAS_GINKGO := $( shell command -v ginkgo; )
2020-06-03 07:06:23 +03:00
2021-03-17 18:09:03 +03:00
i f e q ( $ { C I } , t r u e )
CLI_EXT_BIN_DIR := "/build/_cli_ext_output"
e l s e
CLI_EXT_BIN_DIR := "../cli-ext/bin"
e n d i f
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-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
2021-03-17 18:09:03 +03:00
build : copy -cli -ext
2018-06-28 08:40:18 +03:00
build :
2021-05-03 10:59:49 +03:00
i f n d e f H A S _ G O X
cd ~ && go get github.com/mitchellh/gox && cd -
e n d i f
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
2021-03-17 18:09:03 +03:00
.PHONY : build -cli -ext
build-cli-ext :
cd ../cli-ext && make deps && make build
.PHONY : clean -cli -ext
clean-cli-ext :
rm -rf ./internal/cliext/bin
.PHONY : copy -cli -ext
copy-cli-ext : clean -cli -ext
cp -r $( CLI_EXT_BIN_DIR) ./internal/cliext/bin
2018-06-28 08:40:18 +03:00
# run tests
2018-06-29 16:09:21 +03:00
.PHONY : test
2021-03-17 18:09:03 +03:00
test : copy -cli -ext
2021-06-03 16:26:28 +03:00
if [ -z " ${ HASURA_TEST_CLI_HGE_DOCKER_IMAGE } " ] ; then echo "Please set HASURA_TEST_CLI_HGE_DOCKER_IMAGE env for populating testutil.HasuraDockerImage and run test" ; exit 1; fi
2021-05-17 03:29:11 +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 | grep -v commands`
2021-03-17 18:09:03 +03:00
integration_tests_config_v3 : copy -cli -ext
2021-06-03 16:26:28 +03:00
if [ -z " ${ HASURA_TEST_CLI_HGE_DOCKER_IMAGE } " ] ; then echo "Please set HASURA_TEST_CLI_HGE_DOCKER_IMAGE env for populating testutil.HasuraDockerImage and run test" ; exit 1; fi
2021-01-18 20:11:05 +03:00
go test -ldflags " -X github.com/hasura/graphql-engine/cli/version.BuildVersion= $( VERSION) " -v -tags= " ${ TEST_TAGS } " -run Commands/config= v3 ./integration_test
2021-03-17 18:09:03 +03:00
integration_tests_config_v2 : copy -cli -ext
2021-06-03 16:26:28 +03:00
if [ -z " ${ HASURA_TEST_CLI_HGE_DOCKER_IMAGE } " ] ; then echo "Please set HASURA_TEST_CLI_HGE_DOCKER_IMAGE env for populating testutil.HasuraDockerImage and run test" ; exit 1; fi
2021-02-17 07:20:19 +03:00
go test -ldflags " -X github.com/hasura/graphql-engine/cli/version.BuildVersion= $( VERSION) " -v -tags= " ${ TEST_TAGS } " -run Commands/config= v2 ./integration_test
2021-05-17 03:29:11 +03:00
test-e2e :
i f n d e f H A S _ G I N K G O
cd ~ && go get github.com/onsi/ginkgo/ginkgo && cd -
e n d i f
cd commands && ginkgo -v --failFast
test-all : test integration_tests_config_v 2 integration_tests_config_v 3 test -e 2e
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
2021-06-04 10:27:34 +03:00
all : deps test build
2018-06-28 08:40:18 +03:00
# 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