4 Commits
7 changed files with 25 additions and 19 deletions

No files matched your search

+6 -7
View File
@@ -2,10 +2,10 @@ package cmd
import (
"fmt"
"git-air/internal/ui"
"os"
"path/filepath"
"github.com/unclesam-ly/git-air/internal/ui"
"github.com/spf13/cobra"
"gopkg.in/yaml.v3"
)
@@ -43,12 +43,11 @@ func LoadConfig() (*AppConfig, error) {
// 1. 首先加载全局配置 ~/.git-air/config.yaml
configPath, err := getConfigPath()
if err == nil {
if data, err := os.ReadFile(configPath); err == nil && len(data) > 0 {
if err := yaml.Unmarshal(data, cfg); err != nil {
// 全局配置错误可输出警告或直接返回错误
return nil, fmt.Errorf("解析全局配置文件 [%s] 失败: %w", configPath, err)
}
if err != nil {
// 隐式跳过时,可考虑记录日志或在 verbose 模式下输出
} else if data, err := os.ReadFile(configPath); err == nil && len(data) > 0 {
if err := yaml.Unmarshal(data, cfg); err != nil {
return nil, fmt.Errorf("解析全局配置文件 [%s] 失败: %w", configPath, err)
}
}
+3 -4
View File
@@ -1,19 +1,18 @@
package cmd
import (
"git-air/internal/git"
"git-air/internal/ui"
"os"
"path/filepath"
"github.com/unclesam-ly/git-air/internal/git"
"github.com/unclesam-ly/git-air/internal/ui"
"github.com/spf13/cobra"
)
const preCommitScript = `#!/bin/sh
# git-air pre-commit hook
echo "[git-air] 正在执行 Commit 前代码自动化评审..."
git-air --cached
# 如果评审发现阻断性问题,可通过退出码阻断 commit
git-air --staged
`
var hookCmd = &cobra.Command{
+12 -4
View File
@@ -2,12 +2,12 @@ package cmd
import (
"context"
"git-air/internal/git"
"git-air/internal/llm"
"git-air/internal/reviewer"
"git-air/internal/ui"
"os"
"github.com/unclesam-ly/git-air/internal/git"
"github.com/unclesam-ly/git-air/internal/llm"
"github.com/unclesam-ly/git-air/internal/reviewer"
"github.com/unclesam-ly/git-air/internal/ui"
"github.com/spf13/cobra"
)
@@ -21,6 +21,12 @@ var rootCmd = &cobra.Command{
ctx := cmd.Context()
// 1. 检查并获取 Diff
if flagCached, _ := cmd.Flags().GetBool("cached"); flagCached {
args = append([]string{"--cached"}, args...)
} else if flagStaged, _ := cmd.Flags().GetBool("staged"); flagStaged {
args = append([]string{"--cached"}, args...)
}
diff, err := git.GetDiff(ctx, args...)
if err != nil {
ui.PrintError("%v", err)
@@ -99,4 +105,6 @@ func init() {
rootCmd.Flags().StringP("model", "m", "", "临时指定模型名称")
rootCmd.Flags().StringP("provider", "p", "", "临时指定 Provider (gemini, deepseek, ollama)")
rootCmd.Flags().String("prompt", "", "临时指定 System Prompt")
rootCmd.Flags().Bool("cached", false, "显式审查暂存区(git add)代码")
rootCmd.Flags().Bool("staged", false, "显式审查暂存区(git add)代码")
}
+1 -1
View File
@@ -1,4 +1,4 @@
module git-air
module github.com/unclesam-ly/git-air
go 1.26.6
+1 -1
View File
@@ -3,7 +3,7 @@ package reviewer
import (
"context"
"fmt"
"git-air/internal/llm"
"github.com/unclesam-ly/git-air/internal/llm"
"strings"
)
+1 -1
View File
@@ -33,7 +33,7 @@ func PrintFooter() {
// PrintError 打印错误信息
func PrintError(format string, a ...interface{}) {
msg := fmt.Sprintf(format, a...)
fmt.Fprintf(os.Stderr, "%s[ERROR]%s %s\n", colorRed, colorReset, msg)
_, _ = fmt.Fprintf(os.Stderr, "%s[ERROR]%s %s\n", colorRed, colorReset, msg)
}
// PrintSuccess 打印成功信息
+1 -1
View File
@@ -1,6 +1,6 @@
package main
import "git-air/cmd"
import "github.com/unclesam-ly/git-air/cmd"
func main() {
cmd.Execute()