1
0

完成一个简易的全局skill、command管理器

This commit is contained in:
2026-02-25 14:33:56 +08:00
parent f4cb809f9d
commit 2d327b5af8
60 changed files with 6053 additions and 1 deletions

View File

@@ -0,0 +1,70 @@
package main
import (
"fmt"
"github.com/spf13/cobra"
"skillmgr/internal/config"
"skillmgr/internal/repo"
)
var syncCmd = &cobra.Command{
Use: "sync [name]",
Short: "同步源仓库",
Long: `从远程拉取最新代码,更新本地缓存。
示例:
skillmgr sync # 同步所有仓库
skillmgr sync my-skills # 同步指定仓库`,
RunE: func(cmd *cobra.Command, args []string) error {
cfg, err := config.LoadRepositoryConfig()
if err != nil {
return err
}
if len(cfg.Repositories) == 0 {
fmt.Println("无已配置的源仓库")
return nil
}
// 如果指定了仓库名称,只同步该仓库
if len(args) > 0 {
name := args[0]
for _, r := range cfg.Repositories {
if r.Name == name {
fmt.Printf("正在同步 %s...\n", r.Name)
if _, err := repo.CloneOrPull(r.URL, r.Branch); err != nil {
fmt.Printf(" ✗ 同步失败: %v\n", err)
return err
}
fmt.Printf(" ✓ 同步成功\n")
return nil
}
}
return fmt.Errorf("仓库 '%s' 不存在", name)
}
// 同步所有仓库
var hasError bool
for _, r := range cfg.Repositories {
fmt.Printf("正在同步 %s...\n", r.Name)
if _, err := repo.CloneOrPull(r.URL, r.Branch); err != nil {
fmt.Printf(" ✗ 同步失败: %v\n", err)
hasError = true
continue
}
fmt.Printf(" ✓ 同步成功\n")
}
if hasError {
fmt.Println("\n部分仓库同步失败")
}
return nil
},
}
func init() {
rootCmd.AddCommand(syncCmd)
}