58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package github
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"log"
|
|
|
|
"github.com/google/go-github/v84/github"
|
|
"github.com/ssdomei232/goodBaby/handler/db"
|
|
"github.com/ssdomei232/goodBaby/model"
|
|
)
|
|
|
|
// 从 rule 中获取 GithubReposConfig 和 GithubAccount
|
|
func GetGithubReposAndAccountFromRule(rule *model.Rule) (*GithubReposConfig, *GithubAccount) {
|
|
var githubReposConfig GithubReposConfig
|
|
var githubAccount GithubAccount
|
|
|
|
// 获取 GithubReposConfig
|
|
err := json.Unmarshal([]byte(rule.ConfigJson), &githubReposConfig)
|
|
if err != nil {
|
|
log.Printf("获取 GitHub 配置失败: %v", err)
|
|
return nil, nil
|
|
}
|
|
|
|
// 获取 GithubAccount
|
|
gormDB, err := db.GetGormDB()
|
|
if err != nil {
|
|
log.Printf("获取 Gorm DB 失败: %v", err)
|
|
return nil, nil
|
|
}
|
|
|
|
err = gormDB.Where("id = ?", rule.AccountID).First(&githubAccount).Error
|
|
if err != nil {
|
|
log.Printf("获取 GitHub 账户失败: %v", err)
|
|
return nil, nil
|
|
}
|
|
|
|
return &githubReposConfig, &githubAccount
|
|
}
|
|
|
|
// 将仓库设置为 public
|
|
func SetRepositoryPublic(token, owner, repo string) error {
|
|
ctx := context.Background()
|
|
|
|
// 1. 初始化客户端
|
|
client := github.NewClient(nil).WithAuthToken(token)
|
|
|
|
// 2. 准备修改的参数
|
|
opts := &github.Repository{
|
|
Visibility: github.Ptr("public"),
|
|
}
|
|
|
|
// 3. 执行更新操作
|
|
_, _, err := client.Repositories.Edit(ctx, owner, repo, opts)
|
|
|
|
return err
|
|
}
|