mirror of
https://github.com/hustcer/deepseek-review.git
synced 2026-05-13 05:16:05 +08:00
Initial commit
This commit is contained in:
73
.github/workflows/basic.yml
vendored
Normal file
73
.github/workflows/basic.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# Description:
|
||||||
|
# - Setup Moonbit with GitHub Actions
|
||||||
|
# REF:
|
||||||
|
# - https://github.com/marketplace/actions/checkout
|
||||||
|
|
||||||
|
name: Setup-Moonbit@Dev
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
setup-moonbit:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
name: Setup MoonBit@${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Moonbit
|
||||||
|
uses: hustcer/setup-moonbit@develop
|
||||||
|
|
||||||
|
- name: Check Moonbit Version
|
||||||
|
run: |
|
||||||
|
moon version --all
|
||||||
|
|
||||||
|
setup-moonbit-of-version:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
name: Setup MoonBit with Version@${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Moonbit with Version
|
||||||
|
uses: hustcer/setup-moonbit@develop
|
||||||
|
with:
|
||||||
|
setup-core: false
|
||||||
|
version: 0.1.20250108+7a6b9ab0e
|
||||||
|
|
||||||
|
- name: Check Moonbit Version
|
||||||
|
run: |
|
||||||
|
moon version --all
|
||||||
|
|
||||||
|
setup-moonbit-bleeding:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [macos-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
name: Setup MoonBit Bleeding@${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Moonbit Bleeding
|
||||||
|
uses: hustcer/setup-moonbit@develop
|
||||||
|
with:
|
||||||
|
version: bleeding
|
||||||
|
|
||||||
|
- name: Check Moonbit Version
|
||||||
|
run: |
|
||||||
|
moon version --all
|
||||||
34
.github/workflows/milestone.yaml
vendored
Normal file
34
.github/workflows/milestone.yaml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Description:
|
||||||
|
# - Add milestone to a merged PR or closed issue.
|
||||||
|
|
||||||
|
name: Milestone Action
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [closed]
|
||||||
|
pull_request_target:
|
||||||
|
types: [closed]
|
||||||
|
|
||||||
|
# Fix GraphQL: Resource not accessible by integration (updatePullRequest)
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-milestone:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: Milestone Update
|
||||||
|
steps:
|
||||||
|
- name: Set Milestone for PR
|
||||||
|
uses: hustcer/milestone-action@main
|
||||||
|
if: github.event.pull_request.merged == true
|
||||||
|
with:
|
||||||
|
action: bind-pr
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Set Milestone for Issue
|
||||||
|
uses: hustcer/milestone-action@main
|
||||||
|
if: github.event.issue.state == 'closed'
|
||||||
|
with:
|
||||||
|
action: bind-issue
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.env
|
||||||
3
CHANGELOG.md
Normal file
3
CHANGELOG.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Changelog
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
48
Justfile
Normal file
48
Justfile
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Author: hustcer
|
||||||
|
# Create: 2023/10/29 18:05:20
|
||||||
|
# Description:
|
||||||
|
# Some helper task for setup-moonbit
|
||||||
|
# Ref:
|
||||||
|
# 1. https://github.com/casey/just
|
||||||
|
# 2. https://www.nushell.sh/book/
|
||||||
|
|
||||||
|
set shell := ['nu', '-c']
|
||||||
|
|
||||||
|
# The export setting causes all just variables
|
||||||
|
# to be exported as environment variables.
|
||||||
|
|
||||||
|
set export := true
|
||||||
|
set dotenv-load := true
|
||||||
|
|
||||||
|
# If positional-arguments is true, recipe arguments will be
|
||||||
|
# passed as positional arguments to commands. For linewise
|
||||||
|
# recipes, argument $0 will be the name of the recipe.
|
||||||
|
|
||||||
|
set positional-arguments := true
|
||||||
|
|
||||||
|
# Just commands aliases
|
||||||
|
alias f := fetch
|
||||||
|
|
||||||
|
# Use `just --evaluate` to show env vars
|
||||||
|
|
||||||
|
# Used to handle the path separator issue
|
||||||
|
DEEPSEEK_REIVEW_PATH := parent_directory(justfile())
|
||||||
|
NU_DIR := parent_directory(`(which nu).path.0`)
|
||||||
|
_query_plugin := if os_family() == 'windows' { 'nu_plugin_query.exe' } else { 'nu_plugin_query' }
|
||||||
|
|
||||||
|
# To pass arguments to a dependency, put the dependency
|
||||||
|
# in parentheses along with the arguments, just like:
|
||||||
|
# default: (sh-cmd "main")
|
||||||
|
|
||||||
|
# List available commands by default
|
||||||
|
default:
|
||||||
|
@just --list --list-prefix "··· "
|
||||||
|
|
||||||
|
# Release a new version for `deepseek-review`
|
||||||
|
release *OPTIONS:
|
||||||
|
@overlay use {{ join(DEEPSEEK_REIVEW_PATH, 'nu', 'release.nu') }}; \
|
||||||
|
make-release {{OPTIONS}}
|
||||||
|
|
||||||
|
# Plugins need to be registered only once after nu v0.61
|
||||||
|
_setup:
|
||||||
|
@register -e json {{ join(NU_DIR, _query_plugin) }}
|
||||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 hustcer
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
50
README.md
Normal file
50
README.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Setup MoonBit Action
|
||||||
|
|
||||||
|
[中文说明](README.zh-CN.md)
|
||||||
|
|
||||||
|
[](https://github.com/hustcer/setup-moonbit/actions/workflows/basic.yml)
|
||||||
|
[](https://github.com/hustcer/setup-moonbit/actions/workflows/daily.yml)
|
||||||
|
|
||||||
|
This GitHub Action will setup a [MoonBit](https://www.moonbitlang.com/) environment for you. It should work on Github `macOS` , `Ubuntu` , and `Windows` runners.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Basic
|
||||||
|
|
||||||
|
It's quite simple to use `hustcer/setup-moonbit` , just follow the example below:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Moonbit
|
||||||
|
uses: hustcer/setup-moonbit@v1
|
||||||
|
|
||||||
|
- name: Check Moonbit Version
|
||||||
|
run: |
|
||||||
|
moon version --all
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, check the [test.yaml](https://github.com/hustcer/setup-moonbit/blob/main/.github/workflows/test.yml) example.
|
||||||
|
|
||||||
|
In rare circumstances you might get rate limiting errors, if this happens you can set the `GITHUB_TOKEN` environment variable.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: hustcer/setup-moonbit@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Inputs
|
||||||
|
|
||||||
|
| Name | Required | Description | Type | Default |
|
||||||
|
| ------------ | -------- | ------------ | ------ | --------- |
|
||||||
|
| `version` | no | A valid moonbit tool chain version, such as `0.1.20250108+7a6b9ab0e`, `nightly`, `latest`, etc. or even `bleeding` | string | `latest`|
|
||||||
|
| `setup-core` | no | `true` to download and bundle Moonbit Core, `false` to ignore it | bool | `true` |
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Licensed under:
|
||||||
|
|
||||||
|
* MIT license ([LICENSE](LICENSE) or http://opensource.org/licenses/MIT)
|
||||||
47
README.zh-CN.md
Normal file
47
README.zh-CN.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Setup MoonBit Action
|
||||||
|
|
||||||
|
[](https://github.com/hustcer/setup-moonbit/actions/workflows/basic.yml)
|
||||||
|
|
||||||
|
本 GitHub Action 将为你配置一个 [MoonBit](https://www.moonbitlang.com/) 开发环境。适用于 Github `macOS` , `Ubuntu` 和 `Windows` 工作流运行时镜像。
|
||||||
|
|
||||||
|
## 使用
|
||||||
|
|
||||||
|
### 基础使用
|
||||||
|
|
||||||
|
使用 `hustcer/setup-moonbit` 非常简单,只需要按照下面示例即可:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Moonbit
|
||||||
|
uses: hustcer/setup-moonbit@v1
|
||||||
|
|
||||||
|
- name: Check Moonbit Version
|
||||||
|
run: |
|
||||||
|
moon version --all
|
||||||
|
```
|
||||||
|
|
||||||
|
或者也可以参考下本仓库的 [test.yaml](https://github.com/hustcer/setup-moonbit/blob/main/.github/workflows/test.yml) 例子。
|
||||||
|
|
||||||
|
在极少数情况下,你可能会看到速率限制之类的错误。如果发生这种情况,你可以通过设置 `GITHUB_TOKEN` 环境变量来避免该问题:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: hustcer/setup-moonbit@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入
|
||||||
|
|
||||||
|
| 参数名 | 必填 | 描述 | 类型 | 默认值 |
|
||||||
|
| ---------------- | -------- | --- | ------ | --------- |
|
||||||
|
| `version` | 否 | 合法的 Moonbit 工具链版本,比如: `0.1.20250108+7a6b9ab0e`, `nightly`, `latest` 或者 `bleeding` | string | `latest` |
|
||||||
|
| `setup-core` | 否 | 设置为 `true` 则下载并打包 Moonbit Core, `false` 则忽略 | bool | `true` |
|
||||||
|
|
||||||
|
## 许可
|
||||||
|
|
||||||
|
Licensed under:
|
||||||
|
|
||||||
|
* MIT license ([LICENSE](LICENSE) or http://opensource.org/licenses/MIT)
|
||||||
42
action.yaml
Normal file
42
action.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Deepseek Code Review Action
|
||||||
|
# @author: hustcer
|
||||||
|
# @created: 2025/01/29 13:05:20
|
||||||
|
# REF:
|
||||||
|
# - https://docs.github.com/cn/actions/creating-actions/about-custom-actions
|
||||||
|
# - https://docs.github.com/cn/actions/creating-actions/metadata-syntax-for-github-actions
|
||||||
|
# - https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
|
||||||
|
|
||||||
|
name: 'Deepseek Code Review'
|
||||||
|
author: 'hustcer'
|
||||||
|
description: 'A github action to do code review by Deepseek for PRs.'
|
||||||
|
|
||||||
|
branding:
|
||||||
|
icon: 'code'
|
||||||
|
color: 'purple'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: false
|
||||||
|
default: 'latest'
|
||||||
|
description: 'The moonbit toolchain version to setup.'
|
||||||
|
setup-core:
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
description: 'Set to `true` if you want to setup moonbit core.'
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- name: Setup Nu
|
||||||
|
uses: hustcer/setup-nu@v3
|
||||||
|
with:
|
||||||
|
version: 0.101.0
|
||||||
|
|
||||||
|
- name: Deepseek Code Review
|
||||||
|
shell: nu {0}
|
||||||
|
run: |
|
||||||
|
use ${{ github.action_path }}/nu/review.nu *
|
||||||
|
let version = '${{inputs.version}}'
|
||||||
|
let setupCore = '${{inputs.setup-core}}' | into bool
|
||||||
|
deepseek-review $version --setup-core=$setupCore
|
||||||
|
|
||||||
53
cliff.toml
Normal file
53
cliff.toml
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# configuration file for git-cliff (0.1.0)
|
||||||
|
|
||||||
|
[changelog]
|
||||||
|
# changelog header
|
||||||
|
header = """
|
||||||
|
# Changelog
|
||||||
|
All notable changes to this project will be documented in this file.\n
|
||||||
|
"""
|
||||||
|
# template for the changelog body
|
||||||
|
# https://tera.netlify.app/docs/#introduction
|
||||||
|
body = """
|
||||||
|
{% if version %}\
|
||||||
|
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||||
|
{% else %}\
|
||||||
|
## [unreleased]
|
||||||
|
{% endif %}\
|
||||||
|
{% for group, commits in commits | group_by(attribute="group") %}
|
||||||
|
### {{ group | upper_first }}
|
||||||
|
{% for commit in commits %}
|
||||||
|
- {{ commit.message | upper_first }}\
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}\n
|
||||||
|
"""
|
||||||
|
# remove the leading and trailing whitespaces from the template
|
||||||
|
trim = true
|
||||||
|
# changelog footer
|
||||||
|
footer = """
|
||||||
|
<!-- generated by git-cliff -->
|
||||||
|
"""
|
||||||
|
|
||||||
|
[git]
|
||||||
|
# allow only conventional commits
|
||||||
|
# https://www.conventionalcommits.org
|
||||||
|
conventional_commits = true
|
||||||
|
# regex for parsing and grouping commits
|
||||||
|
commit_parsers = [
|
||||||
|
{ message = "^feat", group = "Features"},
|
||||||
|
{ message = "^fix", group = "Bug Fixes"},
|
||||||
|
{ message = "^doc", group = "Documentation"},
|
||||||
|
{ message = "^perf", group = "Performance"},
|
||||||
|
{ message = "^refactor", group = "Refactor"},
|
||||||
|
{ message = "^style", group = "Styling"},
|
||||||
|
{ message = "^test", group = "Testing"},
|
||||||
|
{ message = "^chore\\(release\\): prepare for", skip = true},
|
||||||
|
{ message = "^chore", group = "Miscellaneous Tasks"},
|
||||||
|
{ body = ".*security", group = "Security"},
|
||||||
|
]
|
||||||
|
# filter out the commits that are not matched by commit parsers
|
||||||
|
filter_commits = false
|
||||||
|
# glob pattern for matching git tags
|
||||||
|
tag_pattern = "v[0-9]*"
|
||||||
|
# regex for skipping tags
|
||||||
|
skip_tags = "v0.1.0-beta.1"
|
||||||
10
cspell.yml
Normal file
10
cspell.yml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# REF:
|
||||||
|
# https://cspell.org/configuration/
|
||||||
|
# Usage:
|
||||||
|
# npx cspell --no-progress .
|
||||||
|
|
||||||
|
words:
|
||||||
|
- justfile
|
||||||
|
- lefthook
|
||||||
|
|
||||||
|
ignorePaths:
|
||||||
33
lefthook.yml
Normal file
33
lefthook.yml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# EXAMPLE USAGE
|
||||||
|
# Refer for explanation to following link:
|
||||||
|
# https://github.com/evilmartians/lefthook/blob/master/docs/configuration.md
|
||||||
|
#
|
||||||
|
# pre-push:
|
||||||
|
# commands:
|
||||||
|
# packages-audit:
|
||||||
|
# tags: frontend security
|
||||||
|
# run: yarn audit
|
||||||
|
# gems-audit:
|
||||||
|
# tags: backend security
|
||||||
|
# run: bundle audit
|
||||||
|
#
|
||||||
|
min_version: 1.8.0
|
||||||
|
no_tty: false
|
||||||
|
skip_output:
|
||||||
|
- meta # Skips lefthook version printing
|
||||||
|
- skips # Skips "skip" printing (i.e. no files matched)
|
||||||
|
- summary # Skips summary block (successful and failed steps) printing
|
||||||
|
- success # Skips successful steps printing
|
||||||
|
- failure # Skips failed steps printing
|
||||||
|
- execution_info # Skips printing `EXECUTE > ...` logging
|
||||||
|
|
||||||
|
pre-commit:
|
||||||
|
parallel: true
|
||||||
|
commands:
|
||||||
|
spell-check:
|
||||||
|
skip:
|
||||||
|
- merge
|
||||||
|
- rebase
|
||||||
|
stage_fixed: true
|
||||||
|
glob: "*.*"
|
||||||
|
run: cspell --no-progress {staged_files}
|
||||||
10
meta.json
Normal file
10
meta.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "deepseek-review",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"actionVer": "v0.1",
|
||||||
|
"author": "hustcer",
|
||||||
|
"license": "MIT",
|
||||||
|
"github": "https://github.com/hustcer/deepseek-review",
|
||||||
|
"home": "https://github.com/marketplace/actions/deepseek-review",
|
||||||
|
"description": "A github action to do code review for pull requests."
|
||||||
|
}
|
||||||
54
nu/release.nu
Normal file
54
nu/release.nu
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/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 }
|
||||||
|
}
|
||||||
44
nu/review.nu
Normal file
44
nu/review.nu
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/usr/bin/env nu
|
||||||
|
# Author: hustcer
|
||||||
|
# Created: 2025/01/29 13:02:15
|
||||||
|
# TODO:
|
||||||
|
# [√] Deepseek code reivew for Github PRs
|
||||||
|
# [√] Deepseek code reivew for local commit changes
|
||||||
|
# Description: A script to do code review by deepseek
|
||||||
|
# Usage:
|
||||||
|
#
|
||||||
|
|
||||||
|
export def deepseek-review [] {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# If current host is Windows
|
||||||
|
export def windows? [] {
|
||||||
|
# Windows / Darwin / Linux
|
||||||
|
(sys host | get name) == 'Windows'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if some command available in current shell
|
||||||
|
export def is-installed [ app: string ] {
|
||||||
|
(which $app | length) > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
export def hr-line [
|
||||||
|
width?: int = 90,
|
||||||
|
--color(-c): string = 'g',
|
||||||
|
--blank-line(-b),
|
||||||
|
--with-arrow(-a),
|
||||||
|
] {
|
||||||
|
# Create a line by repeating the unit with specified times
|
||||||
|
def build-line [
|
||||||
|
times: int,
|
||||||
|
unit: string = '-',
|
||||||
|
] {
|
||||||
|
0..<$times | reduce -f '' { |i, acc| $unit + $acc }
|
||||||
|
}
|
||||||
|
|
||||||
|
print $'(ansi $color)(build-line $width)(if $with_arrow {'>'})(ansi reset)'
|
||||||
|
if $blank_line { char nl }
|
||||||
|
}
|
||||||
|
|
||||||
|
alias main = deepseek-review
|
||||||
Reference in New Issue
Block a user