postgres_migrator 0.6.6

Simple postgres raw sql migration generator and manager.
setup:
	cargo install cargo-bump just

dev:
	docker exec -it migrator-dev bash

test:
	docker exec -it migrator-dev cargo test

full_test:
	docker exec -it migrator-dev cargo test -- --ignored

build:
	docker build -f release.Dockerfile -t blainehansen/postgres_migrator .

integration_test: test full_test build
	#!/usr/bin/env bash
	set -euo pipefail
	PG_URL='postgres://experiment_user:asdf@localhost:5432/experiment-db?sslmode=disable'
	docker run --rm -it --network host -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd):/working -e PG_URL=$PG_URL blainehansen/postgres_migrator migrate
	docker run --rm -it --network host -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd):/working -e PG_URL=$PG_URL blainehansen/postgres_migrator --schema-directory schemas/schema.1 diff schema migrations

compose_test:
	#!/usr/bin/env bash
	set -euo pipefail
	docker exec -it -u $(id -u ${USER}):$(id -g ${USER}) postgres_migrator postgres_migrator migrate
	docker exec -it -u $(id -u ${USER}):$(id -g ${USER}) postgres_migrator postgres_migrator --schema-directory schemas/schema.1 diff schema migrations
	docker exec -it -u $(id -u ${USER}):$(id -g ${USER}) postgres_migrator postgres_migrator --schema-directory schemas/schema.1 migrate --dry-run --actually-perform-onboard-migrations

_status_clean:
	#!/usr/bin/env bash
	set -euo pipefail

	if [ -n "$(git status --porcelain)" ]; then
		echo "git status not clean"
		exit 1
	fi

release SEMVER_PORTION: _status_clean build integration_test
	#!/usr/bin/env bash
	set -euxo pipefail

	cargo bump {{SEMVER_PORTION}}

	VERSION=$(grep '^version = "' Cargo.toml)
	[[ $VERSION =~ ([0-9]+\.[0-9]+\.[0-9]+) ]]
	VERSION="${BASH_REMATCH[1]}"
	echo $VERSION
	GIT_VERSION="v$VERSION"
	echo $GIT_VERSION

	docker tag blainehansen/postgres_migrator blainehansen/postgres_migrator:$VERSION
	docker push blainehansen/postgres_migrator:$VERSION
	docker push blainehansen/postgres_migrator:latest
	git commit -am $GIT_VERSION
	git tag $GIT_VERSION
	cargo publish

	git push origin main
	git push origin main --tags