126 lines
2.9 KiB
Bash
Executable File
126 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
GITEA_BASE_URL="${GITEA_BASE_URL:-https://gitea.solucaoti.net.br}"
|
|
GITEA_USER="${GITEA_USER:-rogeriolima}"
|
|
PACKAGE_OWNER="${PACKAGE_OWNER:-$GITEA_USER}"
|
|
PACKAGE_NAME="${PACKAGE_NAME:-restoredb}"
|
|
BINARY_NAME="${BINARY_NAME:-restoredb}"
|
|
BUILD=1
|
|
DRY_RUN=0
|
|
VERSION=""
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Publica o executavel release no Generic Package Registry do Gitea.
|
|
|
|
Uso:
|
|
GITEA_TOKEN=token scripts/publish-gitea-package.sh [opcoes]
|
|
|
|
Opcoes:
|
|
--version VERSION Versao do pacote. Padrao: versao do Cargo.toml.
|
|
--no-build Nao executa cargo build --release antes de empacotar.
|
|
--dry-run Mostra os comandos principais sem enviar o pacote.
|
|
-h, --help Mostra esta ajuda.
|
|
|
|
Variaveis:
|
|
GITEA_BASE_URL Padrao: https://gitea.solucaoti.net.br
|
|
GITEA_USER Padrao: rogeriolima
|
|
GITEA_TOKEN Token com permissao para publicar pacotes.
|
|
PACKAGE_OWNER Padrao: igual a GITEA_USER
|
|
PACKAGE_NAME Padrao: restoredb
|
|
BINARY_NAME Padrao: restoredb
|
|
EOF
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--version)
|
|
VERSION="${2:-}"
|
|
if [[ -z "$VERSION" ]]; then
|
|
echo "Erro: --version exige um valor." >&2
|
|
exit 2
|
|
fi
|
|
shift 2
|
|
;;
|
|
--no-build)
|
|
BUILD=0
|
|
shift
|
|
;;
|
|
--dry-run)
|
|
DRY_RUN=1
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Erro: opcao desconhecida: $1" >&2
|
|
usage >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
require_cmd() {
|
|
if ! command -v "$1" >/dev/null 2>&1; then
|
|
echo "Erro: comando obrigatorio nao encontrado: $1" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
require_cmd cargo
|
|
require_cmd curl
|
|
require_cmd tar
|
|
require_cmd rustc
|
|
|
|
if [[ -z "$VERSION" ]]; then
|
|
VERSION="$(cargo metadata --no-deps --format-version 1 | sed -n 's/.*"version":"\([^"]*\)".*/\1/p' | head -n 1)"
|
|
fi
|
|
|
|
if [[ -z "$VERSION" ]]; then
|
|
echo "Erro: nao foi possivel descobrir a versao do Cargo.toml." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$DRY_RUN" -eq 0 && -z "${GITEA_TOKEN:-}" ]]; then
|
|
echo "Erro: defina GITEA_TOKEN com um token do Gitea para publicar." >&2
|
|
exit 1
|
|
fi
|
|
|
|
HOST_TRIPLE="$(rustc -vV | sed -n 's/^host: //p')"
|
|
DIST_DIR="dist"
|
|
PACKAGE_FILE="${BINARY_NAME}-${HOST_TRIPLE}.tar.gz"
|
|
PACKAGE_PATH="${DIST_DIR}/${PACKAGE_FILE}"
|
|
UPLOAD_URL="${GITEA_BASE_URL%/}/api/packages/${PACKAGE_OWNER}/generic/${PACKAGE_NAME}/${VERSION}/${PACKAGE_FILE}"
|
|
|
|
if [[ "$BUILD" -eq 1 ]]; then
|
|
echo "Compilando release..."
|
|
cargo build --release
|
|
fi
|
|
|
|
if [[ ! -x "target/release/${BINARY_NAME}" ]]; then
|
|
echo "Erro: binario nao encontrado ou nao executavel: target/release/${BINARY_NAME}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$DIST_DIR"
|
|
tar -C target/release -czf "$PACKAGE_PATH" "$BINARY_NAME"
|
|
|
|
echo "Pacote: $PACKAGE_PATH"
|
|
echo "URL: $UPLOAD_URL"
|
|
|
|
if [[ "$DRY_RUN" -eq 1 ]]; then
|
|
echo "Dry-run: upload nao executado."
|
|
exit 0
|
|
fi
|
|
|
|
curl --fail --show-error \
|
|
-u "${GITEA_USER}:${GITEA_TOKEN}" \
|
|
--upload-file "$PACKAGE_PATH" \
|
|
"$UPLOAD_URL"
|
|
|
|
echo
|
|
echo "Publicado: $UPLOAD_URL"
|