fix: 更新 delete_all_projects.sh 脚本以优化项目获取和展示逻辑

This commit is contained in:
2026-01-29 21:39:08 +08:00
parent 1be07db276
commit 4b7e604313
2 changed files with 46 additions and 26 deletions

8
.gitignore vendored
View File

@@ -1,4 +1,8 @@
# Claude Code # Vibe Coding
.mcp.json
.claude/ .claude/
.oprncode/
llmdoc/ llmdoc/
.sisyphus/
.mcp.json

View File

@@ -3,7 +3,7 @@
# 文件名: delete_all_projects.sh # 文件名: delete_all_projects.sh
# 描述: 删除 GCP 账户下的所有项目(危险操作) # 描述: 删除 GCP 账户下的所有项目(危险操作)
# 作者: Cloud Tools Project # 作者: Cloud Tools Project
# 版本: 2.1.0(支持远程库加载) # 版本: 2.1.1(支持远程库加载)
# 警告: 此操作不可逆,所有项目数据将永久丢失 # 警告: 此操作不可逆,所有项目数据将永久丢失
# ============================================================================ # ============================================================================
@@ -90,32 +90,39 @@ readonly LOG_FILE="deleted_projects_$(date +%Y%m%d_%H%M%S).log"
log_set_file "$LOG_FILE" log_set_file "$LOG_FILE"
# #
# 获取并展示所有项目 # 获取所有项目 ID 列表
# 返回: 项目 ID 列表(每行一个),通过 stdout 返回
# 退出码: 0 成功1 失败
# #
get_and_display_projects() { get_projects() {
# 获取所有项目
log_warning "获取项目列表..." log_warning "获取项目列表..."
local projects local projects
projects=$(gcloud projects list --format="value(projectId)") projects=$(gcloud projects list --format="value(projectId)")
if [ -z "$projects" ]; then if [ -z "$projects" ]; then
log_warning "没有找到任何项目" log_warning "没有找到任何项目"
exit 0 return 0
fi fi
# 显示所有项目
log_warning "以下项目将被删除:"
echo "$projects" | nl
echo
# 统计项目数量
local project_count
project_count=$(echo "$projects" | wc -l)
log_warning "总计: $project_count 个项目"
echo "$projects" echo "$projects"
} }
#
# 显示项目列表(带编号)
# 参数: $1 - 项目列表(换行符分隔)
# 输出: 到 stderr
#
display_projects() {
local projects="$1"
local project_count
project_count=$(echo "$projects" | wc -l | tr -d ' ')
log_warning "以下项目将被删除:"
echo "$projects" | nl >&2
echo >&2
log_warning "总计: $project_count 个项目"
}
# #
# 删除单个项目 # 删除单个项目
# #
@@ -154,13 +161,22 @@ main() {
exit 0 exit 0
fi fi
# 获取并展示项目列表 # 获取项目列表
local projects local projects
projects=$(get_and_display_projects) projects=$(get_projects)
# 检查是否有项目
if [ -z "$projects" ]; then
log_warning "没有找到任何项目,退出"
exit 0
fi
# 显示项目列表
display_projects "$projects"
# 统计项目数量 # 统计项目数量
local project_count local project_count
project_count=$(echo "$projects" | wc -l) project_count=$(echo "$projects" | wc -l | tr -d ' ')
# 第二次确认 # 第二次确认
log_error "最后确认:您将要删除 $project_count 个项目!" log_error "最后确认:您将要删除 $project_count 个项目!"
@@ -180,9 +196,9 @@ main() {
for project_id in $projects; do for project_id in $projects; do
if delete_project "$project_id" "$LOG_FILE"; then if delete_project "$project_id" "$LOG_FILE"; then
((deleted_count++)) ((deleted_count++)) || true
else else
((failed_count++)) ((failed_count++)) || true
fi fi
# 添加短暂延迟,避免 API 限制 # 添加短暂延迟,避免 API 限制