graphql-engine/cli/Makefile
Aravind Shankar bb63d7e60e
cli: allow managing actions (#3859)
Co-authored-by: Rishichandra Wawhal <rishichandra.wawhal@gmail.com>
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
Co-authored-by: Aravind <aravindkp@outlook.in>
Co-authored-by: Anon Ray <ecthiender@users.noreply.github.com>
Co-authored-by: Shahidh K Muhammed <muhammedshahid.k@gmail.com>
2020-02-24 21:44:46 +05:30

70 lines
2.0 KiB
Makefile

PWD := $(shell pwd)
PARENT_DIR := $(shell dirname $(PWD))
VERSION ?= $(shell ../scripts/get-version.sh)
OS ?= linux darwin windows
OUTPUT_DIR := _output
# compile assets
.PHONY: assets
assets:
go-bindata --pkg assets -o assets/assets.go assets/**/*.html
HAS_GOX := $(shell command -v gox;)
HAS_BINDATA := $(shell command -v go-bindata;)
.PHONY: deps
# get dependencies
deps:
go mod download
ifndef HAS_GOX
go get github.com/mitchellh/gox
endif
ifndef HAS_BINDATA
go get github.com/kevinburke/go-bindata/...
endif
# build cli locally, for all given platform/arch
.PHONY: build
build: export CGO_ENABLED=0
build:
gox -ldflags '-X github.com/hasura/graphql-engine/cli/version.BuildVersion=$(VERSION) -s -w -extldflags "-static"' \
-rebuild \
-os="$(OS)" \
-arch="amd64" \
-output="$(OUTPUT_DIR)/$(VERSION)/cli-hasura-{{.OS}}-{{.Arch}}" \
./cmd/hasura/
# compress
.PHONY: compress
compress:
ls $(OUTPUT_DIR)/$(VERSION)/cli-hasura-* | xargs upx
# to be executed in circle-ci only
ci-copy-binary:
mkdir -p /build/_cli_output/binaries
cp $(OUTPUT_DIR)/$(VERSION)/cli-hasura-* /build/_cli_output/binaries
echo "$(VERSION)" > /build/_cli_output/version.txt
# run tests
.PHONY: test
test:
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
# clean the output directory
.PHONY: clean
clean:
rm -rf "$(OUTPUT_DIR)"
.PHONY: all
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