-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·133 lines (101 loc) · 2.64 KB
/
Copy pathinstall.sh
File metadata and controls
executable file
·133 lines (101 loc) · 2.64 KB
1
2
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/usr/bin/env bash
set -e
# ============================================================
# DevOps Toolset Installer (Production-Grade)
# ============================================================
SCRIPT_MODE="${SCRIPT_MODE:-install}"
REPO_URL="https://github.com/ASHKARAN/toolset.git"
INSTALL_DIR="/usr/local/lib/devops-toolset"
BIN_DIR="/usr/local/bin"
VERSION_FILE="$INSTALL_DIR/.version"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
print_success(){ echo -e "${GREEN}[✓] $1${NC}"; }
print_error(){ echo -e "${RED}[✗] $1${NC}"; }
print_info(){ echo -e "${BLUE}[i] $1${NC}"; }
print_warn(){ echo -e "${YELLOW}[!] $1${NC}"; }
require_root() {
if [ "$EUID" -ne 0 ]; then
print_error "Please run as root (sudo)"
exit 1
fi
}
check_requirements() {
if ! command -v git &>/dev/null; then
print_error "git is required"
exit 1
fi
}
create_wrapper() {
local name="$1"
cat > "$BIN_DIR/$name" <<EOF
#!/usr/bin/env bash
exec $INSTALL_DIR/setup.sh "\$@"
EOF
chmod +x "$BIN_DIR/$name"
print_success "Created command: $name"
}
install_toolset() {
require_root
check_requirements
print_info "Installing DevOps Toolset..."
tmpdir=$(mktemp -d)
git clone --depth=1 "$REPO_URL" "$tmpdir"
rm -rf "$INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
cp -r "$tmpdir/"* "$INSTALL_DIR/"
chmod +x "$INSTALL_DIR/setup.sh"
chmod +x "$INSTALL_DIR/install.sh"
chmod +x "$INSTALL_DIR/scripts/"*.sh
rm -rf "$tmpdir"
create_wrapper devops
create_wrapper toolset
create_wrapper devops-setup
date > "$VERSION_FILE"
print_success "Installation complete."
print_info "Run: sudo devops"
}
update_toolset() {
require_root
if [ ! -d "$INSTALL_DIR/.git" ]; then
print_warn "No git repository found. Reinstalling..."
install_toolset
return
fi
print_info "Updating DevOps Toolset..."
cd "$INSTALL_DIR"
git fetch origin
git reset --hard origin/main
chmod +x setup.sh
chmod +x install.sh
chmod +x scripts/*.sh
date > "$VERSION_FILE"
print_success "Update complete."
}
uninstall_toolset() {
require_root
print_info "Uninstalling DevOps Toolset..."
rm -rf "$INSTALL_DIR"
rm -f "$BIN_DIR/devops"
rm -f "$BIN_DIR/toolset"
rm -f "$BIN_DIR/devops-setup"
print_success "Uninstalled successfully."
}
case "$SCRIPT_MODE" in
install)
install_toolset
;;
update)
update_toolset
;;
uninstall)
uninstall_toolset
;;
*)
print_error "Unknown mode: $SCRIPT_MODE"
exit 1
;;
esac