mirror of
https://github.com/RaisFast/raisfast.git
synced 2026-09-28 16:02:50 +00:00
92 lines
1.8 KiB
Bash
Executable File
92 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
REMOTE="github"
|
|
BRANCH="master"
|
|
REMOTE_BRANCH="main"
|
|
|
|
usage() {
|
|
echo "Usage: $0 <command> [options]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " commit <message> Commit and push"
|
|
echo " release <version> [message] Bump version, commit, tag, push"
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " $0 commit \"fix: some bug\""
|
|
echo " $0 release 0.3.0"
|
|
echo " $0 release 0.3.0 \"add new feature\""
|
|
exit 1
|
|
}
|
|
|
|
current_version() {
|
|
grep '^version' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/'
|
|
}
|
|
|
|
bump_version() {
|
|
local new_ver="$1"
|
|
sed -i '' "s/^version = \".*\"/version = \"$new_ver\"/" Cargo.toml
|
|
echo "Version bumped: $(current_version) -> $new_ver"
|
|
}
|
|
|
|
cmd_commit() {
|
|
local msg="$1"
|
|
git add -A
|
|
if git diff --cached --quiet; then
|
|
echo "Nothing to commit."
|
|
return
|
|
fi
|
|
git commit -m "$msg"
|
|
git push "$REMOTE" "$BRANCH:$REMOTE_BRANCH"
|
|
echo "Pushed to $REMOTE:$REMOTE_BRANCH"
|
|
}
|
|
|
|
cmd_release() {
|
|
local ver="$1"
|
|
local msg="${2:-release v$ver}"
|
|
local tag="v$ver"
|
|
|
|
if git tag -l "$tag" | grep -q .; then
|
|
echo "Tag $tag already exists!"
|
|
exit 1
|
|
fi
|
|
|
|
git add -A
|
|
if ! git diff --cached --quiet; then
|
|
echo "Staged changes detected, committing first..."
|
|
git commit -m "$msg"
|
|
fi
|
|
|
|
bump_version "$ver"
|
|
|
|
if command -v git-cliff &>/dev/null; then
|
|
git-cliff --tag "$tag" -o CHANGELOG.md
|
|
echo "Changelog generated"
|
|
fi
|
|
|
|
git add -A
|
|
git commit -m "release: v$ver"
|
|
git tag "$tag"
|
|
git push "$REMOTE" "$BRANCH:$REMOTE_BRANCH"
|
|
git push "$REMOTE" "$tag"
|
|
echo "Released $tag and pushed to $REMOTE"
|
|
}
|
|
|
|
if [ $# -lt 1 ]; then
|
|
usage
|
|
fi
|
|
|
|
case "$1" in
|
|
commit)
|
|
[ $# -lt 2 ] && usage
|
|
cmd_commit "$2"
|
|
;;
|
|
release)
|
|
[ $# -lt 2 ] && usage
|
|
cmd_release "$2" "${3:-}"
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|