-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_all.sh
More file actions
executable file
·164 lines (150 loc) · 4.21 KB
/
setup_all.sh
File metadata and controls
executable file
·164 lines (150 loc) · 4.21 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!/usr/bin/env bash
# V4.0.0 - Orchestrator version
# Unified environment setup for Von (Python + JavaScript).
#
# DESCRIPTION:
# Orchestrates Python and JavaScript setup using existing scripts:
# setup_py.sh and setup_js.sh. Adds flags for selective steps,
# force reinstall, CI-friendly mode, and Python version selection.
#
# FLAGS:
# --skip-py Skip Python environment setup
# --skip-js Skip JavaScript dependency setup
# --force Force reinstall: passes --reset to setup_py.sh and --force to setup_js.sh
# --ci CI mode: quieter JS install, no browser opening side-effects
# --configure-vscode Forwarded to setup_py.sh to configure VS Code settings
# --python-version V Forwarded to setup_py.sh to target a specific Python minor version
# --skip-mongodb Skip MongoDB installation checks (forwarded to setup_py.sh)
# --help, -h Show this help message
#
# EXAMPLES:
# ./setup_all.sh
# ./setup_all.sh --configure-vscode
# ./setup_all.sh --skip-js
# ./setup_all.sh --skip-py --force
# ./setup_all.sh --ci --python-version 3.12
# ./setup_all.sh --skip-mongodb --configure-vscode
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# Parse arguments
SKIP_PY=0
SKIP_JS=0
FORCE=0
CI=0
CONFIGURE_VSCODE=0
PYTHON_VERSION=""
SKIP_MONGODB=0
while [[ $# -gt 0 ]]; do
case "$1" in
--skip-py)
SKIP_PY=1
shift
;;
--skip-js)
SKIP_JS=1
shift
;;
--force)
FORCE=1
shift
;;
--ci)
CI=1
shift
;;
--configure-vscode)
CONFIGURE_VSCODE=1
shift
;;
--python-version)
PYTHON_VERSION="$2"
shift 2
;;
--skip-mongodb)
SKIP_MONGODB=1
shift
;;
--help|-h)
grep "^# " "$0" | sed 's/^# //'
exit 0
;;
*)
echo -e "${RED}Unknown option: $1${NC}"
echo "Use --help for usage information"
exit 1
;;
esac
done
# Get script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
OVERALL_OK=1
START_TIME=$(date +%s)
function duration() {
local start=$1
local end
end=$(date +%s)
echo $((end - start))
}
echo -e "${CYAN}=== Von Unified Setup ===${NC}"
echo "Root: $SCRIPT_DIR"
# Python Phase
if [[ $SKIP_PY -eq 0 ]]; then
PY_ARGS=""
if [[ $CONFIGURE_VSCODE -eq 1 ]]; then
PY_ARGS="$PY_ARGS --configure-vscode"
fi
if [[ $FORCE -eq 1 ]]; then
PY_ARGS="$PY_ARGS --reset"
fi
if [[ -n "$PYTHON_VERSION" ]]; then
PY_ARGS="$PY_ARGS --python-version $PYTHON_VERSION"
fi
if [[ $SKIP_MONGODB -eq 1 ]]; then
PY_ARGS="$PY_ARGS --skip-mongodb"
fi
echo -e "${CYAN}[1/2] Python setup starting (args:$PY_ARGS)${NC}"
PY_START=$(date +%s)
if "$SCRIPT_DIR/setup_py.sh" $PY_ARGS; then
PY_DURATION=$(duration $PY_START)
echo -e "${GREEN}Python setup completed in ${PY_DURATION}s${NC}"
else
echo -e "${RED}Python setup failed${NC}"
OVERALL_OK=0
fi
else
echo -e "${YELLOW}[1/2] Python setup skipped (--skip-py)${NC}"
fi
# JavaScript Phase
if [[ $SKIP_JS -eq 0 ]]; then
JS_ARGS=""
if [[ $FORCE -eq 1 ]]; then
JS_ARGS="$JS_ARGS --force"
fi
if [[ $CI -eq 1 ]]; then
JS_ARGS="$JS_ARGS --ci"
fi
echo -e "${CYAN}[2/2] JavaScript setup starting (args:$JS_ARGS)${NC}"
JS_START=$(date +%s)
if "$SCRIPT_DIR/setup_js.sh" $JS_ARGS; then
JS_DURATION=$(duration $JS_START)
echo -e "${GREEN}JavaScript setup completed in ${JS_DURATION}s${NC}"
else
echo -e "${RED}JavaScript setup failed${NC}"
OVERALL_OK=0
fi
else
echo -e "${YELLOW}[2/2] JavaScript setup skipped (--skip-js)${NC}"
fi
ELAPSED=$(duration $START_TIME)
if [[ $OVERALL_OK -eq 1 ]]; then
echo -e "${GREEN}=== Unified setup SUCCESS in ${ELAPSED}s ===${NC}"
exit 0
else
echo -e "${RED}=== Unified setup FAILED in ${ELAPSED}s (see above) ===${NC}"
exit 1
fi