Files
wecom-ai-assistant/scripts/setup-github-from-config.ps1
2026-02-05 16:36:32 +08:00

163 lines
6.1 KiB
PowerShell
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 从配置文件自动设置 GitHub 仓库
# 用途:读取 .github-config 文件并配置 Git 远程仓库
param(
[string]$ConfigFile = ".github-config"
)
Write-Host "=== 从配置文件设置 GitHub 仓库 ===" -ForegroundColor Cyan
Write-Host ""
# 检查配置文件是否存在
if (-not (Test-Path $ConfigFile)) {
Write-Host "错误: 配置文件 $ConfigFile 不存在" -ForegroundColor Red
Write-Host "请先复制 .github-config.example 为 .github-config 并填写配置" -ForegroundColor Yellow
exit 1
}
# 读取配置文件
Write-Host "读取配置文件: $ConfigFile" -ForegroundColor Yellow
$config = @{}
Get-Content $ConfigFile | ForEach-Object {
if ($_ -match '^\s*([^#=]+?)\s*=\s*(.+?)\s*$') {
$key = $matches[1].Trim()
$value = $matches[2].Trim()
$config[$key] = $value
}
}
# 验证必需配置
$requiredKeys = @('GITHUB_USERNAME', 'GITHUB_TOKEN', 'GITHUB_REPO_NAME', 'GITHUB_REPO_URL')
foreach ($key in $requiredKeys) {
if (-not $config.ContainsKey($key) -or [string]::IsNullOrWhiteSpace($config[$key])) {
Write-Host "错误: 配置文件缺少必需的键: $key" -ForegroundColor Red
exit 1
}
}
# 显示配置信息(隐藏 token
Write-Host "配置信息:" -ForegroundColor Cyan
Write-Host " GitHub 用户名: $($config['GITHUB_USERNAME'])" -ForegroundColor Gray
Write-Host " GitHub Token: $($config['GITHUB_TOKEN'].Substring(0, [Math]::Min(10, $config['GITHUB_TOKEN'].Length)))..." -ForegroundColor Gray
Write-Host " 仓库名称: $($config['GITHUB_REPO_NAME'])" -ForegroundColor Gray
Write-Host " 仓库 URL: $($config['GITHUB_REPO_URL'])" -ForegroundColor Gray
Write-Host ""
# 检查 Git 是否已初始化
if (-not (Test-Path .git)) {
Write-Host "初始化 Git 仓库..." -ForegroundColor Yellow
git init
Write-Host "✓ Git 仓库已初始化" -ForegroundColor Green
} else {
Write-Host "✓ Git 仓库已存在" -ForegroundColor Green
}
# 配置 Git 用户信息(如果还没有)
$gitUser = git config user.name 2>$null
$gitEmail = git config user.email 2>$null
if (-not $gitUser) {
Write-Host ""
Write-Host "配置 Git 用户信息..." -ForegroundColor Yellow
$inputUser = Read-Host "请输入 Git 用户名 (或按 Enter 使用 GitHub 用户名: $($config['GITHUB_USERNAME']))"
if ([string]::IsNullOrWhiteSpace($inputUser)) {
$inputUser = $config['GITHUB_USERNAME']
}
git config user.name $inputUser
Write-Host "✓ Git 用户名已设置: $inputUser" -ForegroundColor Green
}
if (-not $gitEmail) {
$inputEmail = Read-Host "请输入 Git 邮箱"
if (-not [string]::IsNullOrWhiteSpace($inputEmail)) {
git config user.email $inputEmail
Write-Host "✓ Git 邮箱已设置: $inputEmail" -ForegroundColor Green
}
}
# 配置远程仓库
Write-Host ""
Write-Host "配置远程仓库..." -ForegroundColor Yellow
$currentRemote = git remote get-url origin 2>$null
if ($currentRemote) {
Write-Host "当前远程仓库: $currentRemote" -ForegroundColor Cyan
if ($currentRemote -ne $config['GITHUB_REPO_URL']) {
$update = Read-Host "是否更新远程仓库地址? (y/n)"
if ($update -eq "y" -or $update -eq "Y") {
git remote set-url origin $config['GITHUB_REPO_URL']
Write-Host "✓ 远程仓库已更新" -ForegroundColor Green
}
} else {
Write-Host "✓ 远程仓库地址已正确" -ForegroundColor Green
}
} else {
git remote add origin $config['GITHUB_REPO_URL']
Write-Host "✓ 远程仓库已添加" -ForegroundColor Green
}
# 配置 Git 凭据(使用 token
Write-Host ""
Write-Host "配置 Git 凭据..." -ForegroundColor Yellow
# 设置 Git 凭据助手Windows
$credentialHelper = git config credential.helper 2>$null
if (-not $credentialHelper) {
git config credential.helper manager-core
Write-Host "✓ Git 凭据助手已配置" -ForegroundColor Green
}
# 提取仓库 URL 的用户名和密码部分
$repoUrl = $config['GITHUB_REPO_URL']
if ($repoUrl -match 'https://(.+?)@') {
Write-Host "检测到 URL 中已包含凭据" -ForegroundColor Gray
} else {
# 将 token 添加到 URL 中(用于推送)
$urlWithToken = $repoUrl -replace 'https://', "https://$($config['GITHUB_USERNAME']):$($config['GITHUB_TOKEN'])@"
git remote set-url origin $urlWithToken
Write-Host "✓ Git 凭据已配置到远程 URL" -ForegroundColor Green
}
# 设置默认分支
Write-Host ""
Write-Host "设置默认分支..." -ForegroundColor Yellow
$defaultBranch = $config['GITHUB_DEFAULT_BRANCH']
if (-not $defaultBranch) {
$defaultBranch = "main"
}
$currentBranch = git branch --show-current 2>$null
if (-not $currentBranch) {
# 创建初始提交(如果还没有)
Write-Host "创建初始提交..." -ForegroundColor Yellow
git add .
git commit -m "Initial commit: 企业微信 AI 助手" 2>$null
git branch -M $defaultBranch
Write-Host "✓ 已创建初始提交并设置分支为 $defaultBranch" -ForegroundColor Green
} else {
if ($currentBranch -ne $defaultBranch) {
git branch -M $defaultBranch
Write-Host "✓ 分支已重命名为 $defaultBranch" -ForegroundColor Green
}
}
# 显示下一步操作
Write-Host ""
Write-Host "=== 设置完成 ===" -ForegroundColor Green
Write-Host ""
Write-Host "下一步操作:" -ForegroundColor Cyan
Write-Host ""
Write-Host "1. 检查远程仓库配置:" -ForegroundColor Yellow
Write-Host " git remote -v" -ForegroundColor Gray
Write-Host ""
Write-Host "2. 推送代码到 GitHub:" -ForegroundColor Yellow
Write-Host " git push -u origin $defaultBranch" -ForegroundColor Gray
Write-Host ""
Write-Host "3. 配置 GitHub Secrets (用于 GitHub Actions):" -ForegroundColor Yellow
Write-Host " 进入仓库: https://github.com/$($config['GITHUB_USERNAME'])/$($config['GITHUB_REPO_NAME'])/settings/secrets/actions" -ForegroundColor Gray
Write-Host " 添加 Secrets: PROD_HOST, PROD_USER, PROD_SSH_KEY, PROD_DOMAIN" -ForegroundColor Gray
Write-Host ""
Write-Host "4. 查看详细文档:" -ForegroundColor Yellow
Write-Host " docs/github-quickstart.md" -ForegroundColor Gray
Write-Host ""