mirror of
https://github.com/status-im/migrate.git
synced 2025-02-24 00:38:07 +00:00
Adds support for CockroachDB. Cockroach uses the postges wire protocol and has a large amount of common SQL functionality shared with Postgres, so much of the postgres code was able to be copied and modified. Since the protocol is used in determining the driver, and the Postgres protocol is also used by Cockroach, new connect string prefixes were added: cockroach:// cockroachdb:// and crdb-postgres://. These fake protocol strings are replaced in the connect function with the correct `postgres://` protocol. TODO: Tests needed (Cockroach has a docker image, so this shouldn't be too hard)
124 lines
3.8 KiB
Makefile
124 lines
3.8 KiB
Makefile
SOURCE ?= file go-bindata github aws-s3 google-cloud-storage
|
|
DATABASE ?= postgres mysql redshift cassandra sqlite3 spanner cockroachdb
|
|
VERSION ?= $(shell git describe --tags 2>/dev/null | cut -c 2-)
|
|
TEST_FLAGS ?=
|
|
REPO_OWNER ?= $(shell cd .. && basename "$$(pwd)")
|
|
|
|
|
|
build-cli: clean
|
|
-mkdir ./cli/build
|
|
cd ./cli && CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -a -o build/migrate.linux-amd64 -ldflags='-X main.Version=$(VERSION)' -tags '$(DATABASE) $(SOURCE)' .
|
|
cd ./cli && CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 go build -a -o build/migrate.darwin-amd64 -ldflags='-X main.Version=$(VERSION)' -tags '$(DATABASE) $(SOURCE)' .
|
|
cd ./cli && CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -a -o build/migrate.windows-amd64.exe -ldflags='-X main.Version=$(VERSION)' -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
|
|
|
|
|
|
clean:
|
|
-rm -r ./cli/build
|
|
|
|
|
|
test-short:
|
|
make test-with-flags --ignore-errors TEST_FLAGS='-short'
|
|
|
|
|
|
test:
|
|
@-rm -r .coverage
|
|
@mkdir .coverage
|
|
make test-with-flags TEST_FLAGS='-v -race -covermode atomic -coverprofile .coverage/_$$(RAND).txt -bench=. -benchmem'
|
|
@echo 'mode: atomic' > .coverage/combined.txt
|
|
@cat .coverage/*.txt | grep -v 'mode: atomic' >> .coverage/combined.txt
|
|
|
|
|
|
test-with-flags:
|
|
@echo SOURCE: $(SOURCE)
|
|
@echo DATABASE: $(DATABASE)
|
|
|
|
@go test $(TEST_FLAGS) .
|
|
@go test $(TEST_FLAGS) ./cli/...
|
|
@go test $(TEST_FLAGS) ./testing/...
|
|
|
|
@echo -n '$(SOURCE)' | tr -s ' ' '\n' | xargs -I{} go test $(TEST_FLAGS) ./source/{}
|
|
@go test $(TEST_FLAGS) ./source/testing/...
|
|
@go test $(TEST_FLAGS) ./source/stub/...
|
|
|
|
@echo -n '$(DATABASE)' | tr -s ' ' '\n' | xargs -I{} go test $(TEST_FLAGS) ./database/{}
|
|
@go test $(TEST_FLAGS) ./database/testing/...
|
|
@go test $(TEST_FLAGS) ./database/stub/...
|
|
|
|
|
|
kill-orphaned-docker-containers:
|
|
docker rm -f $(shell docker ps -aq --filter label=migrate_test)
|
|
|
|
|
|
html-coverage:
|
|
go tool cover -html=.coverage/combined.txt
|
|
|
|
|
|
deps:
|
|
-go get -v -u ./...
|
|
-go test -v -i ./...
|
|
# TODO: why is this not being fetched with the command above?
|
|
-go get -u github.com/fsouza/fake-gcs-server/fakestorage
|
|
|
|
|
|
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:
|
|
find . -name '*.go' -type f -execdir sed -i '' s%\"github.com/$(REPO_OWNER)/migrate%\"github.com/mattes/migrate%g '{}' \;
|
|
|
|
|
|
rewrite-import-paths:
|
|
find . -name '*.go' -type f -execdir sed -i '' s%\"github.com/mattes/migrate%\"github.com/$(REPO_OWNER)/migrate%g '{}' \;
|
|
|
|
|
|
# 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
|
|
release:
|
|
git tag v$(V)
|
|
@read -p "Press enter to confirm and push to origin ..." && git push origin v$(V)
|
|
|
|
|
|
define external_deps
|
|
@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}}'
|
|
|
|
endef
|
|
|
|
|
|
.PHONY: build-cli clean test-short test test-with-flags deps html-coverage \
|
|
restore-import-paths rewrite-import-paths list-external-deps release \
|
|
docs kill-docs open-docs kill-orphaned-docker-containers
|
|
|
|
SHELL = /bin/bash
|
|
RAND = $(shell echo $$RANDOM)
|
|
|