fix: system_all_log.html ReferenceError and other updates
This commit is contained in:
101
gommi_mac.sh
Executable file
101
gommi_mac.sh
Executable file
@@ -0,0 +1,101 @@
|
||||
#!/bin/bash
|
||||
|
||||
# pyenv 초기화 (Warp/iTerm 등 비-인터랙티브 셸에서도 작동하도록)
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
if command -v pyenv &> /dev/null; then
|
||||
eval "$(pyenv init -)"
|
||||
eval "$(pyenv virtualenv-init -)" 2>/dev/null
|
||||
fi
|
||||
|
||||
# Python 3.14 + gevent fork 경고 억제
|
||||
export GEVENT_NOWAITPID=1
|
||||
export PYTHONWARNINGS="ignore::DeprecationWarning"
|
||||
|
||||
# Ctrl+C (SIGINT) 한 번에 종료되도록 설정
|
||||
cleanup() {
|
||||
echo ""
|
||||
echo "Stopping FlaskFarm..."
|
||||
# Python 프로세스 종료
|
||||
if [ -n "$PYTHON_PID" ]; then
|
||||
kill -TERM $PYTHON_PID 2>/dev/null
|
||||
sleep 0.5
|
||||
kill -9 $PYTHON_PID 2>/dev/null
|
||||
fi
|
||||
# 모든 자식 프로세스 종료
|
||||
pkill -P $$ 2>/dev/null
|
||||
exit 0
|
||||
}
|
||||
trap cleanup SIGINT SIGTERM
|
||||
|
||||
CONFIGFILE="data/config_mac.yaml"
|
||||
COUNT=0
|
||||
|
||||
# 🌐 Camoufox 브라우저 캐시 경로 설정 및 유지
|
||||
# macOS에서는 /Users/yommi/Library/Caches/camoufox가 기본값이나, 프로젝트 data 폴더로 강제 리다이렉션
|
||||
CAMOUFOX_DEFAULT_DIR="$HOME/Library/Caches/camoufox"
|
||||
CAMOUFOX_PERSISTENT_DIR="$(pwd)/data/.camoufox"
|
||||
|
||||
# 심볼릭 링크를 통해 data 폴더와 동기화
|
||||
if [ ! -L "$CAMOUFOX_DEFAULT_DIR" ]; then
|
||||
echo "Configuring Camoufox persistence link..."
|
||||
mkdir -p "$CAMOUFOX_PERSISTENT_DIR"
|
||||
if [ -d "$CAMOUFOX_DEFAULT_DIR" ] && [ ! -L "$CAMOUFOX_DEFAULT_DIR" ]; then
|
||||
cp -R "$CAMOUFOX_DEFAULT_DIR/" "$CAMOUFOX_PERSISTENT_DIR/" 2>/dev/null
|
||||
rm -rf "$CAMOUFOX_DEFAULT_DIR"
|
||||
fi
|
||||
mkdir -p "$(dirname "$CAMOUFOX_DEFAULT_DIR")"
|
||||
ln -s "$CAMOUFOX_PERSISTENT_DIR" "$CAMOUFOX_DEFAULT_DIR"
|
||||
fi
|
||||
|
||||
# 🔧 서버 시작 전에 플러그인 업데이트 및 브라우저 확인
|
||||
update_plugins() {
|
||||
# Camoufox 브라우저 체크 (실제 설치된 폴더 확인)
|
||||
if [ ! -d "$CAMOUFOX_DEFAULT_DIR/Camoufox.app" ]; then
|
||||
echo "Fetching Camoufox binaries to $CAMOUFOX_PERSISTENT_DIR..."
|
||||
camoufox fetch
|
||||
fi
|
||||
|
||||
PLUGINS_DIR="data/plugins"
|
||||
if [ -d "$PLUGINS_DIR" ]; then
|
||||
for dir in "$PLUGINS_DIR"/*/; do
|
||||
if [ -d "$dir/.git" ]; then
|
||||
echo "Updating plugin: $dir"
|
||||
git -C "$dir" reset --hard HEAD 2>/dev/null
|
||||
git -C "$dir" pull 2>/dev/null & # 병렬 실행
|
||||
fi
|
||||
done
|
||||
wait # 모든 git pull 완료 대기
|
||||
fi
|
||||
}
|
||||
|
||||
# 첫 실행 시 또는 --update 옵션일 때만
|
||||
if [ "$COUNT" = "0" ]; then
|
||||
update_plugins
|
||||
fi
|
||||
|
||||
while true;
|
||||
do
|
||||
echo "------------------------------------------------"
|
||||
echo "Starting FlaskFarm Python Process (COUNT: ${COUNT})"
|
||||
echo "Config: ${CONFIGFILE}"
|
||||
echo "------------------------------------------------"
|
||||
|
||||
python main.py --repeat ${COUNT} --config ${CONFIGFILE} &
|
||||
PYTHON_PID=$!
|
||||
wait $PYTHON_PID
|
||||
RESULT=$?
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "PYTHON EXIT CODE : ${RESULT}"
|
||||
echo "------------------------------------------------"
|
||||
|
||||
if [ "$RESULT" = "1" ]; then
|
||||
echo 'Restarting... (RESULT=1)'
|
||||
update_plugins
|
||||
else
|
||||
echo "Exiting... (RESULT=${RESULT})"
|
||||
break
|
||||
fi
|
||||
COUNT=$(expr $COUNT + 1)
|
||||
done
|
||||
Reference in New Issue
Block a user