migrate/Makefile

119 lines
3.9 KiB
Makefile
Raw Normal View History

SOURCE ?= file go_bindata github aws_s3 google_cloud_storage godoc_vfs
2019-01-01 08:14:27 +00:00
DATABASE ?= postgres mysql redshift cassandra spanner cockroachdb clickhouse mongodb
2017-02-23 18:36:33 +00:00
VERSION ?= $(shell git describe --tags 2>/dev/null | cut -c 2-)
2017-02-09 00:17:04 +00:00
TEST_FLAGS ?=
2017-02-09 03:34:53 +00:00
REPO_OWNER ?= $(shell cd .. && basename "$$(pwd)")
2018-01-20 03:57:05 +00:00
COVERAGE_DIR ?= .coverage
2017-02-09 00:17:04 +00:00
build-cli: clean
-mkdir ./cli/build
cd ./cmd/migrate && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o ../../cli/build/migrate.linux-amd64 -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
cd ./cmd/migrate && CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -a -o ../../cli/build/migrate.darwin-amd64 -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
cd ./cmd/migrate && CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -a -o ../../cli/build/migrate.windows-amd64.exe -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
cd ./cli/build && find . -name 'migrate*' | xargs -I{} tar czf {}.tar.gz {}
cd ./cli/build && shasum -a 256 * > sha256sum.txt
cat ./cli/build/sha256sum.txt
2015-10-15 16:49:43 +00:00
2017-02-09 00:17:04 +00:00
2015-10-15 16:49:43 +00:00
clean:
-rm -r ./cli/build
2017-02-09 00:17:04 +00:00
test-short:
make test-with-flags --ignore-errors TEST_FLAGS='-short'
2017-02-09 00:17:04 +00:00
test:
2018-01-20 03:57:05 +00:00
@-rm -r $(COVERAGE_DIR)
@mkdir $(COVERAGE_DIR)
make test-with-flags TEST_FLAGS='-v -race -covermode atomic -coverprofile $$(COVERAGE_DIR)/_$$(RAND).txt -bench=. -benchmem -timeout 20m'
@echo 'mode: atomic' > $(COVERAGE_DIR)/combined.txt
@cat $(COVERAGE_DIR)/_*.txt | grep -v 'mode: atomic' >> $(COVERAGE_DIR)/combined.txt
2015-10-15 16:49:43 +00:00
test-with-flags:
@echo SOURCE: $(SOURCE)
@echo DATABASE: $(DATABASE)
@go test $(TEST_FLAGS) .
@go test $(TEST_FLAGS) ./cli/...
@go test $(TEST_FLAGS) ./database
2017-02-09 00:17:04 +00:00
@go test $(TEST_FLAGS) ./testing/...
2017-02-09 00:17:04 +00:00
@echo -n '$(SOURCE)' | tr -s ' ' '\n' | xargs -I{} go test $(TEST_FLAGS) ./source/{}
2017-02-09 03:34:53 +00:00
@go test $(TEST_FLAGS) ./source/testing/...
@go test $(TEST_FLAGS) ./source/stub/...
2015-10-15 16:49:43 +00:00
2017-02-09 00:17:04 +00:00
@echo -n '$(DATABASE)' | tr -s ' ' '\n' | xargs -I{} go test $(TEST_FLAGS) ./database/{}
2017-02-09 03:34:53 +00:00
@go test $(TEST_FLAGS) ./database/testing/...
@go test $(TEST_FLAGS) ./database/stub/...
2017-02-09 00:17:04 +00:00
kill-orphaned-docker-containers:
docker rm -f $(shell docker ps -aq --filter label=migrate_test)
2017-02-09 00:17:04 +00:00
html-coverage:
2018-01-20 03:57:05 +00:00
go tool cover -html=$(COVERAGE_DIR)/combined.txt
2017-02-09 00:17:04 +00:00
2015-10-15 16:49:43 +00:00
2017-02-09 03:34:53 +00:00
list-external-deps:
$(call external_deps,'.')
$(call external_deps,'./cli/...')
$(call external_deps,'./testing/...')
$(foreach v, $(SOURCE), $(call external_deps,'./source/$(v)/...'))
$(call external_deps,'./source/testing/...')
$(call external_deps,'./source/stub/...')
$(foreach v, $(DATABASE), $(call external_deps,'./database/$(v)/...'))
$(call external_deps,'./database/testing/...')
$(call external_deps,'./database/stub/...')
restore-import-paths:
2017-02-09 03:34:53 +00:00
find . -name '*.go' -type f -execdir sed -i '' s%\"github.com/$(REPO_OWNER)/migrate%\"github.com/mattes/migrate%g '{}' \;
rewrite-import-paths:
2017-02-09 03:34:53 +00:00
find . -name '*.go' -type f -execdir sed -i '' s%\"github.com/mattes/migrate%\"github.com/$(REPO_OWNER)/migrate%g '{}' \;
2017-02-09 19:59:49 +00:00
# example: fswatch -0 --exclude .godoc.pid --event Updated . | xargs -0 -n1 -I{} make docs
docs:
-make kill-docs
nohup godoc -play -http=127.0.0.1:6064 </dev/null >/dev/null 2>&1 & echo $$! > .godoc.pid
cat .godoc.pid
kill-docs:
@cat .godoc.pid
kill -9 $$(cat .godoc.pid)
rm .godoc.pid
open-docs:
open http://localhost:6064/pkg/github.com/$(REPO_OWNER)/migrate
# example: make release V=0.0.0
2017-02-09 03:54:50 +00:00
release:
git tag v$(V)
@read -p "Press enter to confirm and push to origin ..." && git push origin v$(V)
2017-02-09 03:34:53 +00:00
define external_deps
2017-02-11 19:13:27 +00:00
@echo '-- $(1)'; go list -f '{{join .Deps "\n"}}' $(1) | grep -v github.com/$(REPO_OWNER)/migrate | xargs go list -f '{{if not .Standard}}{{.ImportPath}}{{end}}'
2017-02-09 03:34:53 +00:00
endef
2018-05-13 07:23:32 +00:00
.PHONY: build-cli clean test-short test test-with-flags html-coverage \
2017-02-09 20:03:03 +00:00
restore-import-paths rewrite-import-paths list-external-deps release \
docs kill-docs open-docs kill-orphaned-docker-containers
2017-02-09 00:17:04 +00:00
SHELL = /bin/bash
RAND = $(shell echo $$RANDOM)
2015-10-15 16:49:43 +00:00