blue-build 0.8.0

A CLI tool built for creating Containerfile templates based on the Ublue Community Project
Documentation
#!/usr/bin/env just --justfile

export RUST_BACKTRACE := "1"

set dotenv-load := true
set shell := ["bash", "-cu"]
set positional-arguments := true

# default recipe to display help information
default:
  @just --list

# release: remove the dev suffix, like going from 0.X.0-dev to 0.X.0
# --workspace: updating all crates in the workspace
# --no-publish: do not publish to crates.io
# --execute: not a dry run
# --no-tag: do not push tag for each new version
# --no-push: do not push the update commits
# --dependent-version upgrade: change 0.X.0-dev in internal dependencies to 0.X.0
# --exclude: ignore those packages
cargo-release *args:
  #!/usr/bin/env bash
  set -euo pipefail

  cargo release release -v \
    --workspace \
    --no-publish \
    --no-tag \
    --no-confirm \
    --no-push \
    --dependent-version upgrade "$@"

# See @cargo-release for meaning of cargo-release arguments
cargo-post-release *args:
  #!/usr/bin/env bash
  set -euo pipefail

  # Read the current version from Cargo.toml
  current_version=$(cargo metadata --format-version 1 --no-deps | \
  jq --raw-output '.packages | .[] | select(.name == "blue-build").version')

  echo "Current Version: $current_version"

  # Sanity check: current version should be 0.X.Y
  if ! grep -q '^0\.[0-9]\+\.[0-9]\+$' <<< "${current_version}"; then
  echo "Invalid version (not in 0.X.Y format): ${current_version}"
  exit 1
  fi

  minor_version=$(sed 's/^0\.\([0-9]\+\).*/\1/' <<< "${current_version}")
  next_version=0.$((minor_version + 1)).0-dev
  echo "Bumping version to ${next_version}"

  # See @cargo-release for meaning of these arguments
  cargo release -v "${next_version}" \
  --workspace \
  --no-publish \
  --no-tag \
  --no-confirm \
  --no-push "$@"