github.com/scraniel/migrate@v0.0.0-20230320185700-339088f36cee/Makefile (about)

     1  SOURCE ?= file go_bindata github github_ee bitbucket aws_s3 google_cloud_storage godoc_vfs gitlab
     2  DATABASE ?= postgres mysql redshift cassandra spanner cockroachdb yugabytedb clickhouse mongodb sqlserver firebird neo4j pgx
     3  DATABASE_TEST ?= $(DATABASE) sqlite sqlite3 sqlcipher
     4  VERSION ?= $(shell git describe --tags 2>/dev/null | cut -c 2-)
     5  TEST_FLAGS ?=
     6  REPO_OWNER ?= $(shell cd .. && basename "$$(pwd)")
     7  COVERAGE_DIR ?= .coverage
     8  
     9  build:
    10  	CGO_ENABLED=0 go build -ldflags='-X main.Version=$(VERSION)' -tags '$(DATABASE) $(SOURCE)' ./cmd/migrate
    11  
    12  build-docker:
    13  	CGO_ENABLED=0 go build -a -o build/migrate.linux-386 -ldflags="-s -w -X main.Version=${VERSION}" -tags "$(DATABASE) $(SOURCE)" ./cmd/migrate
    14  
    15  build-cli: clean
    16  	-mkdir ./cli/build
    17  	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)' .
    18  	cd ./cmd/migrate && CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -a -o ../../cli/build/migrate.linux-armv7 -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
    19  	cd ./cmd/migrate && CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -o ../../cli/build/migrate.linux-arm64 -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
    20  	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)' .
    21  	cd ./cmd/migrate && CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -a -o ../../cli/build/migrate.windows-386.exe -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
    22  	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)' .
    23  	cd ./cli/build && find . -name 'migrate*' | xargs -I{} tar czf {}.tar.gz {}
    24  	cd ./cli/build && shasum -a 256 * > sha256sum.txt
    25  	cat ./cli/build/sha256sum.txt
    26  
    27  
    28  clean:
    29  	-rm -r ./cli/build
    30  
    31  
    32  test-short:
    33  	make test-with-flags --ignore-errors TEST_FLAGS='-short'
    34  
    35  
    36  test:
    37  	@-rm -r $(COVERAGE_DIR)
    38  	@mkdir $(COVERAGE_DIR)
    39  	make test-with-flags TEST_FLAGS='-v -race -covermode atomic -coverprofile $$(COVERAGE_DIR)/combined.txt -bench=. -benchmem -timeout 20m'
    40  
    41  
    42  test-with-flags:
    43  	@echo SOURCE: $(SOURCE)
    44  	@echo DATABASE_TEST: $(DATABASE_TEST)
    45  
    46  	@go test $(TEST_FLAGS) ./...
    47  
    48  
    49  kill-orphaned-docker-containers:
    50  	docker rm -f $(shell docker ps -aq --filter label=migrate_test)
    51  
    52  
    53  html-coverage:
    54  	go tool cover -html=$(COVERAGE_DIR)/combined.txt
    55  
    56  
    57  list-external-deps:
    58  	$(call external_deps,'.')
    59  	$(call external_deps,'./cli/...')
    60  	$(call external_deps,'./testing/...')
    61  
    62  	$(foreach v, $(SOURCE), $(call external_deps,'./source/$(v)/...'))
    63  	$(call external_deps,'./source/testing/...')
    64  	$(call external_deps,'./source/stub/...')
    65  
    66  	$(foreach v, $(DATABASE), $(call external_deps,'./database/$(v)/...'))
    67  	$(call external_deps,'./database/testing/...')
    68  	$(call external_deps,'./database/stub/...')
    69  
    70  
    71  restore-import-paths:
    72  	find . -name '*.go' -type f -execdir sed -i '' s%\"github.com/$(REPO_OWNER)/migrate%\"github.com/mattes/migrate%g '{}' \;
    73  
    74  
    75  rewrite-import-paths:
    76  	find . -name '*.go' -type f -execdir sed -i '' s%\"github.com/mattes/migrate%\"github.com/$(REPO_OWNER)/migrate%g '{}' \;
    77  
    78  
    79  # example: fswatch -0 --exclude .godoc.pid --event Updated . | xargs -0 -n1 -I{} make docs
    80  docs:
    81  	-make kill-docs
    82  	nohup godoc -play -http=127.0.0.1:6064 </dev/null >/dev/null 2>&1 & echo $$! > .godoc.pid
    83  	cat .godoc.pid
    84  
    85  
    86  kill-docs:
    87  	@cat .godoc.pid
    88  	kill -9 $$(cat .godoc.pid)
    89  	rm .godoc.pid
    90  
    91  
    92  open-docs:
    93  	open http://localhost:6064/pkg/github.com/$(REPO_OWNER)/migrate
    94  
    95  
    96  # example: make release V=0.0.0
    97  release:
    98  	git tag v$(V)
    99  	@read -p "Press enter to confirm and push to origin ..." && git push origin v$(V)
   100  
   101  echo-source:
   102  	@echo "$(SOURCE)"
   103  
   104  echo-database:
   105  	@echo "$(DATABASE)"
   106  
   107  
   108  define external_deps
   109  	@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}}'
   110  
   111  endef
   112  
   113  
   114  .PHONY: build build-docker build-cli clean test-short test test-with-flags html-coverage \
   115          restore-import-paths rewrite-import-paths list-external-deps release \
   116  		docs kill-docs open-docs kill-orphaned-docker-containers echo-source echo-database
   117  
   118  SHELL = /bin/sh
   119  RAND = $(shell echo $$RANDOM)
   120