From 4b7e60431315a60c97d01c930ab6e2b48a07dc41 Mon Sep 17 00:00:00 2001 From: Wang Defa Date: Thu, 29 Jan 2026 21:39:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9B=B4=E6=96=B0=20delete=5Fall=5Fproj?= =?UTF-8?q?ects.sh=20=E8=84=9A=E6=9C=AC=E4=BB=A5=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=8E=B7=E5=8F=96=E5=92=8C=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 10 ++++-- gcp/delete_all_projects.sh | 62 ++++++++++++++++++++++++-------------- 2 files changed, 46 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index fe2e168..abe8c27 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ -# Claude Code -.mcp.json +# Vibe Coding .claude/ -llmdoc/ \ No newline at end of file +.oprncode/ + +llmdoc/ +.sisyphus/ + +.mcp.json \ No newline at end of file diff --git a/gcp/delete_all_projects.sh b/gcp/delete_all_projects.sh index dc77322..a7077e8 100644 --- a/gcp/delete_all_projects.sh +++ b/gcp/delete_all_projects.sh @@ -3,7 +3,7 @@ # 文件名: delete_all_projects.sh # 描述: 删除 GCP 账户下的所有项目(危险操作) # 作者: 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" # -# 获取并展示所有项目 +# 获取所有项目 ID 列表 +# 返回: 项目 ID 列表(每行一个),通过 stdout 返回 +# 退出码: 0 成功,1 失败 # -get_and_display_projects() { - # 获取所有项目 +get_projects() { log_warning "获取项目列表..." local projects projects=$(gcloud projects list --format="value(projectId)") - + if [ -z "$projects" ]; then log_warning "没有找到任何项目" - exit 0 + return 0 fi - - # 显示所有项目 - log_warning "以下项目将被删除:" - echo "$projects" | nl - echo - - # 统计项目数量 - local project_count - project_count=$(echo "$projects" | wc -l) - log_warning "总计: $project_count 个项目" - + 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 fi - # 获取并展示项目列表 + # 获取项目列表 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 - project_count=$(echo "$projects" | wc -l) + project_count=$(echo "$projects" | wc -l | tr -d ' ') # 第二次确认 log_error "最后确认:您将要删除 $project_count 个项目!" @@ -180,9 +196,9 @@ main() { for project_id in $projects; do if delete_project "$project_id" "$LOG_FILE"; then - ((deleted_count++)) + ((deleted_count++)) || true else - ((failed_count++)) + ((failed_count++)) || true fi # 添加短暂延迟,避免 API 限制