1
0
mirror of https://github.com/hustcer/deepseek-review.git synced 2026-05-13 05:16:05 +08:00
Files
deepseek-review/nu/release.nu
2025-01-29 13:09:14 +08:00

55 lines
2.0 KiB
Plaintext

#!/usr/bin/env nu
# Author: hustcer
# Created: 2025/01/29 12:56:56
# Description: Script to release deepseek-review
#
# TODO:
# [√] Make sure the release tag does not exist;
# [√] Make sure there are no uncommitted changes;
# [√] Update change log if required;
# [√] Create a release tag and push it to the remote repo;
# Usage:
# Change `version` in meta.json and then run: `just release` OR `just release -u`
export def 'make-release' [
--update-log(-u) # Add flag to enable updating CHANGELOG.md
] {
cd $env.DEEPSEEK_REIVEW_PATH
let releaseVer = (open meta.json | get actionVer)
if (has-ref $releaseVer) {
echo $'The version ($releaseVer) already exists, Please choose another version.(char nl)'
exit 5
}
let majorTag = $releaseVer | split row '.' | first
let statusCheck = (git status --porcelain)
if not ($statusCheck | is-empty) {
echo $'You have uncommitted changes, please commit them and try `release` again!(char nl)'
exit 5
}
if ($update_log) {
git cliff --unreleased --tag $releaseVer --prepend CHANGELOG.md;
git commit CHANGELOG.md -m $'update CHANGELOG.md for ($releaseVer)'
}
# Delete tags that not exist in remote repo
git fetch origin --prune '+refs/tags/*:refs/tags/*'
let commitMsg = $'A new release for version: ($releaseVer) created by Release command of deepseek-review.'
git tag $releaseVer -am $commitMsg;
# Remove local major version tag if exists and ignore errors
do -i { git tag -d $majorTag | complete | ignore }
git checkout $releaseVer; git tag $majorTag
git push origin $majorTag $releaseVer --force
}
# Check if a git repo has the specified ref: could be a branch or tag, etc.
export def has-ref [
ref: string # The git ref to check
] {
let checkRepo = (do -i { git rev-parse --is-inside-work-tree } | complete)
if not ($checkRepo.stdout =~ 'true') { return false }
# Brackets were required here, or error will occur
let parse = (do -i { git rev-parse --verify -q $ref } | complete)
if ($parse.stdout | is-empty) { false } else { true }
}