48 lines
1.6 KiB
Bash
Executable file
48 lines
1.6 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Script para publicar un crate individual del workspace con cargo-release.
|
|
# Uso:
|
|
# ./tools/release.sh <crate> [patch|minor|major] [--execute]
|
|
# Ejemplos:
|
|
# ./tools/release.sh pagetop-macros patch # Dry run (por defecto)
|
|
# ./tools/release.sh pagetop minor --execute # Publicación real
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# Configuración
|
|
CRATE="${1:-}"
|
|
LEVEL="${2:-patch}"
|
|
EXECUTE="${3:-}"
|
|
CONFIG=".cargo/release.toml"
|
|
|
|
# Comprobaciones
|
|
if [[ -z "$CRATE" ]]; then
|
|
echo "Usage: $0 <crate> [patch|minor|major] [--execute]"
|
|
exit 1
|
|
fi
|
|
if [[ ! "$LEVEL" =~ ^(patch|minor|major)$ ]]; then
|
|
echo "Error: invalid level '$LEVEL'. Use: patch, minor, or major"
|
|
exit 1
|
|
fi
|
|
|
|
# Dependencias
|
|
command -v cargo-release >/dev/null || {
|
|
echo "Error: cargo-release is not installed. Use: cargo install cargo-release"
|
|
exit 1
|
|
}
|
|
|
|
# Cambia al directorio del espacio
|
|
cd "$(dirname "$0")/.." || exit 1
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# DRY-RUN (por defecto) o ejecución real con --execute
|
|
# ------------------------------------------------------------------------------
|
|
if [[ "$EXECUTE" != "--execute" ]]; then
|
|
echo "Running dry-run (default mode). Add --execute to publish"
|
|
CARGO_RELEASE_CONFIG="$CONFIG" cargo release --package "$CRATE" "$LEVEL"
|
|
else
|
|
echo "Releasing $CRATE ($LEVEL)…"
|
|
CARGO_RELEASE_CONFIG="$CONFIG" cargo release --package "$CRATE" "$LEVEL" --execute
|
|
echo "Release completed."
|
|
fi
|