150 lines
3.2 KiB
Makefile
150 lines
3.2 KiB
Makefile
# Owlry build and release automation
|
|
|
|
# Default recipe
|
|
default:
|
|
@just --list
|
|
|
|
# Build debug
|
|
build:
|
|
cargo build
|
|
|
|
# Build release
|
|
release:
|
|
cargo build --release
|
|
|
|
# Run in debug mode
|
|
run *ARGS:
|
|
cargo run -- {{ARGS}}
|
|
|
|
# Run tests
|
|
test:
|
|
cargo test
|
|
|
|
# Check code
|
|
check:
|
|
cargo check
|
|
cargo clippy
|
|
|
|
# Format code
|
|
fmt:
|
|
cargo fmt
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
cargo clean
|
|
|
|
# === Release Management ===
|
|
|
|
# AUR package directory
|
|
aur_dir := "/home/cnachtigall/data/git/aur/owlry"
|
|
|
|
# Get current version from Cargo.toml
|
|
version := `grep '^version' Cargo.toml | head -1 | sed 's/.*"\(.*\)"/\1/'`
|
|
|
|
# Show current version
|
|
show-version:
|
|
@echo "Current version: {{version}}"
|
|
|
|
# Bump version (usage: just bump 0.2.0)
|
|
bump new_version:
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
if [ "{{version}}" = "{{new_version}}" ]; then
|
|
echo "Version is already {{new_version}}, skipping bump"
|
|
exit 0
|
|
fi
|
|
echo "Bumping version from {{version}} to {{new_version}}"
|
|
sed -i 's/^version = ".*"/version = "{{new_version}}"/' Cargo.toml
|
|
cargo check
|
|
git add Cargo.toml Cargo.lock
|
|
git commit -m "chore: bump version to {{new_version}}"
|
|
echo "Version bumped to {{new_version}}"
|
|
|
|
# Create and push a release tag
|
|
tag:
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
if git rev-parse "v{{version}}" >/dev/null 2>&1; then
|
|
echo "Tag v{{version}} already exists, skipping"
|
|
exit 0
|
|
fi
|
|
echo "Creating tag v{{version}}"
|
|
git tag -a "v{{version}}" -m "Release v{{version}}"
|
|
git push origin "v{{version}}"
|
|
echo "Tag v{{version}} pushed"
|
|
|
|
# Update AUR package
|
|
aur-update:
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
cd "{{aur_dir}}"
|
|
|
|
url="https://somegit.dev/Owlibou/owlry"
|
|
|
|
echo "Updating PKGBUILD to version {{version}}"
|
|
sed -i 's/^pkgver=.*/pkgver={{version}}/' PKGBUILD
|
|
sed -i 's/^pkgrel=.*/pkgrel=1/' PKGBUILD
|
|
|
|
# Update checksums (b2sums)
|
|
echo "Updating checksums..."
|
|
b2sum=$(curl -sL "$url/archive/v{{version}}.tar.gz" | b2sum | cut -d' ' -f1)
|
|
sed -i "s/^b2sums=.*/b2sums=('$b2sum')/" PKGBUILD
|
|
|
|
# Generate .SRCINFO
|
|
echo "Generating .SRCINFO..."
|
|
makepkg --printsrcinfo > .SRCINFO
|
|
|
|
# Show diff
|
|
git diff
|
|
|
|
echo ""
|
|
echo "AUR package updated. Review changes above."
|
|
echo "Run 'just aur-publish' to commit and push."
|
|
|
|
# Publish AUR package
|
|
aur-publish:
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
cd "{{aur_dir}}"
|
|
|
|
git add PKGBUILD .SRCINFO
|
|
git commit -m "Update to v{{version}}"
|
|
git push
|
|
|
|
echo "AUR package v{{version}} published!"
|
|
|
|
# Test AUR package build locally
|
|
aur-test:
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
cd "{{aur_dir}}"
|
|
|
|
echo "Testing PKGBUILD..."
|
|
makepkg -sf
|
|
|
|
echo ""
|
|
echo "Package built successfully!"
|
|
ls -lh *.pkg.tar.zst
|
|
|
|
# Full release workflow (bump + tag + aur)
|
|
release-full new_version: (bump new_version)
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Push version bump
|
|
git push
|
|
|
|
# Create and push tag
|
|
just tag
|
|
|
|
# Wait for tag to be available
|
|
echo "Waiting for tag to propagate..."
|
|
sleep 2
|
|
|
|
# Update AUR
|
|
just aur-update
|
|
|
|
echo ""
|
|
echo "Release v{{new_version}} prepared!"
|
|
echo "Review AUR changes, then run 'just aur-publish'"
|