fix: 更新 delete_all_projects.sh 脚本以优化项目获取和展示逻辑
This commit is contained in:
@@ -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 限制
|
||||
|
||||
Reference in New Issue
Block a user