diff --git a/Makefile b/Makefile index d9c59c0..75d1fbd 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ endif # ================================ Help ======================================= - +.PHONY: help help: ## Print all the available commands @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \ awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' @@ -29,25 +29,29 @@ help: ## Print all the available commands # =============================== Build ======================================= +.PHONY: check check: ## Validate the project code $(CARGO) check +.PHONY: build build: ## Build the project in debug mode $(CARGO) build $(CARGO_FLAGS) +.PHONY: release release: CARGO_FLAGS += --release release: build ## Build the project in release mode # ================================ Lint ======================================= -RUSTFMT_WRITEMODE ?= 'diff' - +.PHONY: lint lint: fmt clippy ## Lint project files +.PHONY: fmt fmt: ## Check the format of the source code cargo fmt --all -- --check +.PHONY: clippy clippy: RUST_CHANNEL = nightly clippy: ## Check the style of the source code and catch common errors $(CARGO) clippy --features="termion rustbox" @@ -55,13 +59,27 @@ clippy: ## Check the style of the source code and catch common errors # ================================ Test ======================================= - +.PHONY: test test: ## Run the tests - $(CARGO) test + $(CARGO) test --features=termion,crossterm + +# =============================== Examples ==================================== + +.PHONY: build-examples +build-examples: ## Build all examples + @$(CARGO) build --examples --features=termion,crossterm + +.PHONY: run-examples +run-examples: ## Run all examples + @for file in examples/*.rs; do \ + name=$$(basename $${file//.rs/}); \ + $(CARGO) run --example $$name; \ + done; # ================================ Doc ======================================== +.PHONY: doc doc: ## Build the documentation (available at ./target/doc) $(CARGO) doc @@ -70,22 +88,28 @@ doc: ## Build the documentation (available at ./target/doc) # Requires watchman and watchman-make (https://facebook.github.io/watchman/docs/install.html) +.PHONY: watch watch: ## Watch file changes and build the project if any watchman-make -p 'src/**/*.rs' -t check build +.PHONY: watch-test watch-test: ## Watch files changes and run the tests if any watchman-make -p 'src/**/*.rs' 'tests/**/*.rs' 'examples/**/*.rs' -t test +.PHONY: watch-doc watch-doc: ## Watch file changes and rebuild the documentation if any watchman-make -p 'src/**/*.rs' -t doc # ================================= Pipelines ================================= +.PHONY: stable stable: RUST_CHANNEL = stable stable: build test ## Run build and tests for stable +.PHONY: beta beta: RUST_CHANNEL = beta beta: build test ## Run build and tests for beta +.PHONY: nightly nightly: RUST_CHANNEL = nightly nightly: build lint test ## Run build, lint and tests for nightly diff --git a/docs/demo.gif b/assets/demo.gif similarity index 100% rename from docs/demo.gif rename to assets/demo.gif diff --git a/scripts/build-examples.sh b/scripts/build-examples.sh deleted file mode 100755 index 75526c0..0000000 --- a/scripts/build-examples.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# Build all examples in examples directory - -set -u -o pipefail - -for file in examples/*.rs; do - name=$(basename ${file//.rs/}) - echo "[EXAMPLE] $name" - if [[ "$name" == "rustbox" ]]; then - cargo build --features rustbox --example "$name" - else - cargo build --example "$name" - fi -done diff --git a/scripts/run-examples.sh b/scripts/run-examples.sh deleted file mode 100755 index 15e8640..0000000 --- a/scripts/run-examples.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -# Run all examples in examples directory - -set -u -o pipefail - -for file in examples/*.rs; do - name=$(basename ${file//.rs/}) - if [[ "$name" == "rustbox" ]]; then - cargo run --features rustbox --example "$name" - else - cargo run --example "$name" - fi -done