"tests/vscode:/vscode.git/clone" did not exist on "8581584e6091cd09372dcc3d51670b118c4847cc"
utils.sh 2 KB
Newer Older
liumg's avatar
liumg committed
1
#!/usr/bin/env bash
liumg's avatar
liumg committed
2

liumg's avatar
liumg committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 颜色定义
readonly RED='\033[0;31m'
readonly GREEN='\033[0;32m'
readonly YELLOW='\033[1;33m'
readonly BLUE='\033[0;34m'
readonly NC='\033[0m' # No Color

# 带颜色的日志函数
log() {
    if [ $QUIET_MODE -eq 0 ]; then
        echo -e "${BLUE}[INFO]${NC} $*"
    fi
}

log_success() {
    if [ $QUIET_MODE -eq 0 ]; then
        echo -e "${GREEN}[SUCCESS]${NC} $*"
    fi
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $*" >&2
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $*" >&2
}

# 执行命令并显示
echoAndRun() {
    local cmd="$1"
liumg's avatar
liumg committed
34
35
    hline
    echo
liumg's avatar
liumg committed
36
37
38
39
40
41
42
43
44
45
46
    echo -e "${BLUE}[执行命令]${NC} $cmd"
    echo
    eval "$cmd"
    local exit_code=$?
    echo
    if [ $exit_code -eq 0 ]; then
        log_success "命令执行成功"
    else
        log_warning "命令执行失败,退出码: $exit_code"
    fi
    return $exit_code
liumg's avatar
liumg committed
47
48
}

liumg's avatar
liumg committed
49
50
51
52
# 水平分隔线
hline() {
    printf '%0.s=' {1..60}
    echo
liumg's avatar
liumg committed
53
54
}

liumg's avatar
liumg committed
55
56
# 标准化标题格式
head_normal() {
liumg's avatar
liumg committed
57
    echo
liumg's avatar
liumg committed
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
    hline
    echo -e "${BLUE}$1${NC}"
    hline
}

# 检查命令是否存在
command_exists() {
    command -v "$1" >/dev/null 2>&1
}

# 安全执行命令,遇到错误继续执行
safe_run() {
    local cmd="$1"
    local description="${2:-执行命令}"
    
    log "$description: $cmd"
    eval "$cmd" || {
        log_warning "$description 失败,继续执行..."
        return 1
    }
}

# 进度指示器
progress() {
    local message="$1"
    if [ $QUIET_MODE -eq 0 ]; then
        echo -n -e "${BLUE}[...]${NC} $message"
    fi
}

progress_done() {
    if [ $QUIET_MODE -eq 0 ]; then
        echo -e "\r${GREEN}[✓]${NC} $1"
    fi
liumg's avatar
liumg committed
92
93
}

liumg's avatar
liumg committed
94
95
96
97
98
99
100
101
102
103
104
105
106
progress_failed() {
    echo -e "\r${RED}[✗]${NC} $1" >&2
}

# 验证文件存在
check_file() {
    local file="$1"
    if [ ! -f "$file" ]; then
        log_error "文件不存在: $file"
        return 1
    fi
    return 0
}
liumg's avatar
liumg committed
107

liumg's avatar
liumg committed
108
109
110
111
112
113
114
115
# 验证目录存在
check_dir() {
    local dir="$1"
    if [ ! -d "$dir" ]; then
        log_error "目录不存在: $dir"
        return 1
    fi
    return 0
liumg's avatar
liumg committed
116
}