mirror of
https://github.com/alexpasmantier/television.git
synced 2025-06-01 09:00:16 +00:00
142 lines
3.4 KiB
Makefile
142 lines
3.4 KiB
Makefile
NAME := 'television'
|
|
|
|
# List all available commands
|
|
default:
|
|
just --list
|
|
|
|
alias r := run
|
|
|
|
# Run the program in debug mode with logs enabled
|
|
@run:
|
|
echo "Running {{ NAME }}..."
|
|
RUST_LOG=debug cargo run
|
|
echo "Done"
|
|
|
|
# Setup the project environment for local development
|
|
@setup:
|
|
echo "Setting up {{ NAME }}..."
|
|
echo "Installing git hooks..."
|
|
mkdir -p .git/hooks
|
|
echo "just fix" > .git/hooks/pre-commit
|
|
chmod +x .git/hooks/pre-commit
|
|
echo "Installing dependencies..."
|
|
cargo build
|
|
echo "Done"
|
|
|
|
# Clean up cargo build artifacts
|
|
@clean:
|
|
echo "Cleaning up {{ NAME }}..."
|
|
echo "Removing git hooks..."
|
|
rm -f .git/hooks/pre-commit
|
|
echo "Done"
|
|
|
|
alias c := check
|
|
|
|
# Check the project for errors and warnings
|
|
@check:
|
|
echo "Checking {{ NAME }}..."
|
|
cargo check
|
|
echo "Done"
|
|
|
|
# Format the code using cargo fmt
|
|
@format:
|
|
echo "Formatting {{ NAME }}..."
|
|
cargo fmt --all
|
|
echo "Done"
|
|
|
|
# Lint the code using cargo clippy
|
|
@lint:
|
|
echo "Linting {{ NAME }}..."
|
|
cargo clippy --all-targets --all-features -- -D warnings
|
|
echo "Done"
|
|
|
|
alias f := fix
|
|
# Fix linting and formatting errors
|
|
@fix:
|
|
echo "Fixing {{ NAME }}..."
|
|
cargo fix --allow-dirty --allow-staged
|
|
just format
|
|
just lint
|
|
|
|
alias t := test
|
|
# Run the tests for the project
|
|
@test:
|
|
echo "Running {{ NAME }}'s test suite..."
|
|
cargo test --all
|
|
echo "Done"
|
|
|
|
alias b := build
|
|
# Build the project with the specified profile (dev by default)
|
|
@build profile='dev':
|
|
echo "Building {{ NAME }} for profile: {{ profile }}..."
|
|
cargo build --profile {{ profile }}
|
|
echo "Done"
|
|
|
|
# Build the project in release mode
|
|
br: (build 'release')
|
|
|
|
# Update the project's changelog
|
|
@update-changelog:
|
|
echo "Updating changelog..."
|
|
git cliff -o CHANGELOG.md
|
|
echo "Done"
|
|
|
|
alias m := update-man
|
|
# Update the project's manpages
|
|
update-man: build
|
|
#!/usr/bin/env sh
|
|
echo "Checking for manpages updates..."
|
|
if ! diff ./man/tv.1 ./target/assets/tv.1 > /dev/null;
|
|
then cp ./target/assets/tv.1 ./man/tv.1 && git add ./man/tv.1 && echo "Updated manpages"
|
|
else echo "No changes to manpages"
|
|
fi
|
|
|
|
publish:
|
|
echo "Publishing {{ NAME }}..."
|
|
cargo publish --all-features
|
|
echo "Done"
|
|
|
|
commit-release:
|
|
#!/usr/bin/env sh
|
|
version=$(grep -E '^\s*version\s*=' Cargo.toml | cut -d '"' -f 2)
|
|
git commit -am "chore: release version $version"
|
|
git tag "$version"
|
|
|
|
alias rl := release
|
|
# Publish a new release (major, minor, or patch)
|
|
@release kind='patch':
|
|
echo "Releasing {{ NAME }} (kind: {{ kind }})..."
|
|
just bump-version {{ kind }}
|
|
just update-man
|
|
just commit-release
|
|
just publish
|
|
|
|
|
|
# Bump version
|
|
bump-version kind='patch':
|
|
#!/usr/bin/env sh
|
|
echo "Bumping version (kind: {{ kind }})..."
|
|
# bump version (major, minor, patch)
|
|
version=$(grep -E '^\s*version\s*=' Cargo.toml | cut -d '"' -f 2)
|
|
kind="{{ kind }}"
|
|
echo "Current version is: $version"
|
|
if [ "$kind" = "major" ]; then
|
|
new_version=$(echo $version | awk -F. -v OFS=. '{$1++; $2=0; $3=0} 1')
|
|
elif [ "$kind" = "minor" ]; then
|
|
new_version=$(echo $version | awk -F. -v OFS=. '{$2++; $3=0} 1')
|
|
elif [ "$kind" = "patch" ]; then
|
|
new_version=$(echo $version | awk -F. -v OFS=. '{$3++} 1')
|
|
else
|
|
echo "Invalid kind: $kind"
|
|
exit 1
|
|
fi
|
|
echo "Bumping to: $new_version"
|
|
echo "Updating version in Cargo.toml..."
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
sed -i '' "s/version = \"$version\"/version = \"$new_version\"/" Cargo.toml
|
|
else
|
|
sed -i "s/version = \"$version\"/version = \"$new_version\"/" Cargo.toml
|
|
fi
|
|
git add Cargo.toml
|
|
echo "Done"
|