deadman 0.1.0

A deadman switch implemantation that will notify on Telegram if the user has not interacted with it in a specific interval
Documentation
# vim: set ft=make
# code: language=makefile

export RUST_LOG := env_var_or_default("RUST_LOG", "error")
export DATABASE_URL := "sqlite://deadman.sqlite"

default:
    just --list

# bootstrap tools like sqlx-cli, cargo-watch
bootstrap-tools:
    # Install sqlx-cli to manage migrations and database from local environment
    cargo install sqlx-cli --no-default-features --features native-tls,postgres
    # Setup cargo watch to get automatic rebuild on changes behaviour
    cargo install cargo-watch
    # Setup rust-script
    cargo install rust-script
    # Setup cargo-release
    cargo install cargo-release
    # Setup cargo-deny
    cargo install cargo-deny --locked
    # Setup tokio-console
    cargo install --locked tokio-console
    # Setup git-cliff
    cargo install git-cliff
    # Setup cargo-tarpaulin
    cargo install cargo-tarpaulin

# run `cargo sqlx migrate` subcommand (`run` by default)
migrate subcommand="run":
    cargo sqlx migrate {{ subcommand }}  --source=./migrations

# add new up & down migration with the provided description
add-migration description:
    cargo sqlx migrate add -r --source=./migrations {{ description }}

# generate sqlx data for offline mode
for-offline: migrate
    cargo sqlx prepare --workspace -- --tests 

db-fresh:
	touch deadman.sqlite; rm deadman.sqlite ;sqlite3 deadman.sqlite "VACUUM;" ; just migrate

# run development server with Tokio settings
runserver-tokio:
    RUST_LOG="tokio=trace,runtime=trace" RUSTFLAGS="--cfg tokio_unstable" cargo run 

# run development server without Tokio settings
runserver:
    RUST_LOG=debug cargo watch -x "run" -w src --why

check:
    cargo check
    cargo deny check

alias t := test

# run all package tests (broker by default)
test test_name="" :
    RUST_LOG=debug cargo test --color always {{ test_name }} -- --nocapture

test-coverage-report:
    cargo tarpaulin

build-release:
    cargo build --release

release-docker:
    just db-fresh; rm -rf target; docker build -t deadman:v1.0  .

run-docker:
    docker run -e DATABASE_URL="sqlite:///data/deadman.sqlite" -e TELOXIDE_TOKEN="6717277222:AAFA_8FeBkcP5DaZReY4_F-dnPAHmlShK4I" --volume "./data:/data" deadman:v1.0