feat: bootstrap icin wscraper otomatik clone ve guncelleme akisini ekle
This commit is contained in:
@@ -26,4 +26,6 @@ WSCRAPER_SERVICE_TOKEN=
|
|||||||
WSCRAPER_SERVICE_HOST=0.0.0.0
|
WSCRAPER_SERVICE_HOST=0.0.0.0
|
||||||
WSCRAPER_SERVICE_PORT=8787
|
WSCRAPER_SERVICE_PORT=8787
|
||||||
WSCRAPER_SERVICE_PYTHON_BIN=python3.12
|
WSCRAPER_SERVICE_PYTHON_BIN=python3.12
|
||||||
|
WSCRAPER_GIT_URL=https://github.com/wisecolt/Bookmark-Tracker.git
|
||||||
|
WSCRAPER_GIT_REF=main
|
||||||
NODE_ENV=development
|
NODE_ENV=development
|
||||||
|
|||||||
223
README.md
223
README.md
@@ -31,12 +31,13 @@ q-buffer, qBittorrent üzerinde torrentleri kontrollü şekilde döngüye almay
|
|||||||
|
|
||||||
`bootstrap.sh` şu işleri tek komutta yapar:
|
`bootstrap.sh` şu işleri tek komutta yapar:
|
||||||
|
|
||||||
|
- eksikse `wscraper` repo'yu `bin/wscraper` altına otomatik clone eder
|
||||||
- Docker servislerini `up --build` ile kaldırır
|
- Docker servislerini `up --build` ile kaldırır
|
||||||
- host `wscraper-service` için Python venv hazırlar
|
- host `wscraper-service` için Python venv hazırlar
|
||||||
- eksik Python paketlerini ve Playwright bağımlılıklarını kurar
|
- eksik Python paketlerini ve Playwright bağımlılıklarını kurar
|
||||||
- `wscraper-service`i başlatır
|
- `wscraper-service`i başlatır
|
||||||
|
|
||||||
`wscraper-service` kurulumu her çalıştırmada sıfırdan yapılmaz. Kurulum daha önce tamamlandıysa script sadece kontrol eder ve eksik yoksa yeniden kurmaz.
|
`wscraper-service` kurulumu her çalıştırmada sıfırdan yapılmaz. Kurulum daha önce tamamlandıysa script sadece kontrol eder ve eksik yoksa yeniden kurmaz. `wscraper` repo da aynı şekilde idempotent yönetilir: repo eksikse clone edilir, varsa tekrar clone edilmez.
|
||||||
|
|
||||||
### İlk Kurulumda wscraper Yapılandırması
|
### İlk Kurulumda wscraper Yapılandırması
|
||||||
|
|
||||||
@@ -46,43 +47,45 @@ Bu bölüm ilk kez `q-buffer` kuranlar içindir. Sık karışan nokta şu:
|
|||||||
- `bin/wscraper-service/server.py`, `q-buffer` backend'in çağırdığı host servisidir
|
- `bin/wscraper-service/server.py`, `q-buffer` backend'in çağırdığı host servisidir
|
||||||
- yani `wscraper` dizininde yalnızca `server.py` yok; asıl tracker adapter kodları `bin/wscraper/src/wscraper/...` altındadır
|
- yani `wscraper` dizininde yalnızca `server.py` yok; asıl tracker adapter kodları `bin/wscraper/src/wscraper/...` altındadır
|
||||||
|
|
||||||
Mevcut geçici kurulum modeli:
|
Geçerli kurulum modeli:
|
||||||
|
|
||||||
- önce `q-buffer` repo clone edilir
|
- önce `q-buffer` repo clone edilir
|
||||||
- sonra `wscraper` repo ayrıca clone edilir
|
- `bootstrap.sh`, `bin/wscraper` eksikse `wscraper` repo'yu otomatik clone eder
|
||||||
- clone edilen `wscraper` kodu `q-buffer/bin/wscraper` altına yerleştirilir
|
- repo zaten varsa olduğu gibi bırakır
|
||||||
|
- sadece açıkça `--update-wscraper` verirseniz mevcut checkout `git pull --ff-only` ile güncellenir
|
||||||
Yani yeni bir makinede yalnızca `q-buffer` clone etmek şu an yeterli değildir; `wscraper` kaynak kodunun da ayrıca gelmesi gerekir.
|
|
||||||
|
|
||||||
İlk kurulum adımları:
|
İlk kurulum adımları:
|
||||||
|
|
||||||
1. `q-buffer` repo'yu clone edin.
|
1. `q-buffer` repo'yu clone edin.
|
||||||
2. `wscraper` repo'yu ayrıca clone edin ve `q-buffer/bin/wscraper` altına yerleştirin.
|
2. `.env.example` dosyasını `.env` olarak kopyalayın.
|
||||||
3. `.env.example` dosyasını `.env` olarak kopyalayın.
|
3. qBittorrent ve uygulama auth ayarlarını doldurun.
|
||||||
4. qBittorrent ve uygulama auth ayarlarını doldurun.
|
4. watcher servis ayarlarını kontrol edin:
|
||||||
5. watcher servis ayarlarını kontrol edin:
|
|
||||||
- `WSCRAPER_SERVICE_BASE_URL=http://host.docker.internal:8787`
|
- `WSCRAPER_SERVICE_BASE_URL=http://host.docker.internal:8787`
|
||||||
- `WSCRAPER_SERVICE_TOKEN=` boş bırakılabilir
|
- `WSCRAPER_SERVICE_TOKEN=` boş bırakılabilir
|
||||||
- `WSCRAPER_SERVICE_HOST=0.0.0.0`
|
- `WSCRAPER_SERVICE_HOST=0.0.0.0`
|
||||||
- `WSCRAPER_SERVICE_PORT=8787`
|
- `WSCRAPER_SERVICE_PORT=8787`
|
||||||
- `WSCRAPER_SERVICE_PYTHON_BIN=python3.12`
|
- `WSCRAPER_SERVICE_PYTHON_BIN=python3.12`
|
||||||
6. `q-buffer/bin/wscraper` altında şu dosyaların geldiğini doğrulayın:
|
- `WSCRAPER_GIT_URL=https://github.com/wisecolt/Bookmark-Tracker.git`
|
||||||
- `pyproject.toml`
|
- `WSCRAPER_GIT_REF=main`
|
||||||
- `setup.py`
|
5. Host makinede uygun Python sürümü olduğundan emin olun:
|
||||||
- `src/wscraper/cli.py`
|
|
||||||
- `src/wscraper/sites/happyfappy.py`
|
|
||||||
- `src/wscraper/sites/privatehd.py`
|
|
||||||
7. Host makinede uygun Python sürümü olduğundan emin olun:
|
|
||||||
- `python3.12 --version`
|
- `python3.12 --version`
|
||||||
- yoksa `python3.11` veya `python3.10`
|
- yoksa `python3.11` veya `python3.10`
|
||||||
8. Repo root'ta şu komutu çalıştırın:
|
6. Repo root'ta şu komutu çalıştırın:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./scripts/bootstrap.sh --dev-mode
|
./scripts/bootstrap.sh --dev-mode
|
||||||
```
|
```
|
||||||
|
|
||||||
|
7. İlk bootstrap tamamlandıktan sonra `q-buffer/bin/wscraper` altında şu dosyaların geldiğini doğrulayın:
|
||||||
|
- `pyproject.toml`
|
||||||
|
- `setup.py`
|
||||||
|
- `src/wscraper/cli.py`
|
||||||
|
- `src/wscraper/sites/happyfappy.py`
|
||||||
|
- `src/wscraper/sites/privatehd.py`
|
||||||
|
|
||||||
Bu komut şunları yapar:
|
Bu komut şunları yapar:
|
||||||
|
|
||||||
|
- `bin/wscraper` yoksa `WSCRAPER_GIT_URL` ve `WSCRAPER_GIT_REF` ile repo'yu clone eder
|
||||||
- Docker `web` ve `server` servislerini `up --build` ile başlatır
|
- Docker `web` ve `server` servislerini `up --build` ile başlatır
|
||||||
- host'ta `.runtime/wscraper-service/.venv` oluşturur
|
- host'ta `.runtime/wscraper-service/.venv` oluşturur
|
||||||
- `scrapling[fetchers]` kurar
|
- `scrapling[fetchers]` kurar
|
||||||
@@ -105,10 +108,192 @@ Kullanılabilir bayraklar:
|
|||||||
```bash
|
```bash
|
||||||
./scripts/bootstrap.sh --dev-mode
|
./scripts/bootstrap.sh --dev-mode
|
||||||
./scripts/bootstrap.sh --prod-mode
|
./scripts/bootstrap.sh --prod-mode
|
||||||
|
./scripts/bootstrap.sh --dev-mode --skip-wscraper-fetch
|
||||||
|
./scripts/bootstrap.sh --dev-mode --update-wscraper
|
||||||
./scripts/bootstrap.sh --dev-mode --skip-wscraper-install
|
./scripts/bootstrap.sh --dev-mode --skip-wscraper-install
|
||||||
./scripts/bootstrap.sh --dev-mode --restart-wscraper
|
./scripts/bootstrap.sh --dev-mode --restart-wscraper
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### bootstrap.sh Bayrakları
|
||||||
|
|
||||||
|
`bootstrap.sh` şu anda tek giriş komutudur. Aynı script hem Docker servislerini kaldırır hem de host tarafındaki `wscraper-service` sürecini yönetir. Bu yüzden bayrakların neyi etkilediğini net bilmek önemlidir.
|
||||||
|
|
||||||
|
#### `--dev-mode`
|
||||||
|
|
||||||
|
Geliştirme ortamını başlatır.
|
||||||
|
|
||||||
|
Ne yapar:
|
||||||
|
- `docker compose -f docker-compose.dev.yml up --build` çalıştırır
|
||||||
|
- development compose dosyasındaki `web` ve `server` servislerini ayağa kaldırır
|
||||||
|
- host makinede `wscraper-service` sürecini hazırlar ve başlatır
|
||||||
|
|
||||||
|
Ne zaman kullanılır:
|
||||||
|
- günlük geliştirme akışında
|
||||||
|
- watcher veya UI/backend değişikliği yaparken
|
||||||
|
- ilk lokal kurulumda
|
||||||
|
|
||||||
|
Örnek:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `--prod-mode`
|
||||||
|
|
||||||
|
Production benzeri çalışma modunu başlatır.
|
||||||
|
|
||||||
|
Ne yapar:
|
||||||
|
- `docker compose -f docker-compose.yml up --build -d` çalıştırır
|
||||||
|
- servisleri detached modda ayağa kaldırır
|
||||||
|
- host makinede `wscraper-service` sürecini hazırlar ve başlatır
|
||||||
|
|
||||||
|
Ne zaman kullanılır:
|
||||||
|
- kalıcı çalışan kurulumda
|
||||||
|
- UI terminale bağlı kalmasın istendiğinde
|
||||||
|
- production veya staging benzeri testlerde
|
||||||
|
|
||||||
|
Örnek:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --prod-mode
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `--skip-wscraper-fetch`
|
||||||
|
|
||||||
|
`bin/wscraper` repo yönetimini tamamen atlar.
|
||||||
|
|
||||||
|
Ne yapar:
|
||||||
|
- `bin/wscraper` yoksa clone etmeye çalışmaz
|
||||||
|
- varsa update etmeye çalışmaz
|
||||||
|
- `WSCRAPER_GIT_URL` ve `WSCRAPER_GIT_REF` değerlerini kullanmaz
|
||||||
|
|
||||||
|
Ne yapmaz:
|
||||||
|
- `wscraper-service` Python kurulumunu atlamaz
|
||||||
|
- `wscraper-service` başlatmayı atlamaz
|
||||||
|
- Docker servislerini atlamaz
|
||||||
|
|
||||||
|
Ne zaman kullanılır:
|
||||||
|
- `bin/wscraper` repo’sunu manuel yönetiyorsanız
|
||||||
|
- farklı bir branch üzerinde çalışıyorsanız
|
||||||
|
- bootstrap’in `git clone/pull` davranışına dokunmasını istemiyorsanız
|
||||||
|
|
||||||
|
Örnek:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode --skip-wscraper-fetch
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `--update-wscraper`
|
||||||
|
|
||||||
|
Mevcut `bin/wscraper` checkout’unu günceller.
|
||||||
|
|
||||||
|
Ne yapar:
|
||||||
|
- `bin/wscraper` yoksa önce clone eder
|
||||||
|
- repo varsa `git pull --ff-only` dener
|
||||||
|
- yalnızca fast-forward güncellemeye izin verir
|
||||||
|
|
||||||
|
Güvenlik davranışı:
|
||||||
|
- `bin/wscraper` içinde local değişiklik varsa script durur
|
||||||
|
- merge/rebase yapmaz
|
||||||
|
- mevcut branch’i zorla değiştirmez
|
||||||
|
|
||||||
|
Ne zaman kullanılır:
|
||||||
|
- `wscraper` repo’daki son değişiklikleri almak istediğinizde
|
||||||
|
- watcher tracker güncellemeleri geldiyse
|
||||||
|
- `q-buffer` ile birlikte `wscraper`ı da senkron tutmak istediğinizde
|
||||||
|
|
||||||
|
Örnek:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode --update-wscraper
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `--skip-wscraper-install`
|
||||||
|
|
||||||
|
Host makinedeki `wscraper-service` Python kurulum kontrolünü atlar.
|
||||||
|
|
||||||
|
Ne yapar:
|
||||||
|
- `.runtime/wscraper-service/.venv` doğrulamasını atlar
|
||||||
|
- `pip install` ve `scrapling install` çalıştırmaz
|
||||||
|
|
||||||
|
Ne yapmaz:
|
||||||
|
- `wscraper-service` başlatmayı engellemez
|
||||||
|
- `bin/wscraper` repo kontrolünü engellemez
|
||||||
|
- Docker servislerini engellemez
|
||||||
|
|
||||||
|
Ne zaman kullanılır:
|
||||||
|
- Python ortamının zaten doğru kurulu olduğundan eminseniz
|
||||||
|
- kurulum adımını kısaltmak istiyorsanız
|
||||||
|
- ağ erişimi geçici olarak sorunluysa ve mevcut venv’i kullanmak istiyorsanız
|
||||||
|
|
||||||
|
Risk:
|
||||||
|
- mevcut venv eksik veya bozuksa servis daha sonra start aşamasında hata verebilir
|
||||||
|
|
||||||
|
Örnek:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode --skip-wscraper-install
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `--restart-wscraper`
|
||||||
|
|
||||||
|
Çalışan `wscraper-service` sürecini zorla yeniden başlatır.
|
||||||
|
|
||||||
|
Ne yapar:
|
||||||
|
- mevcut PID dosyasını okuyup çalışan host service’i durdurur
|
||||||
|
- sonra yeni bir `wscraper-service` süreci başlatır
|
||||||
|
|
||||||
|
Ne zaman kullanılır:
|
||||||
|
- `bin/wscraper-service/server.py` değiştiyse
|
||||||
|
- tracker adapter kodu değiştiyse
|
||||||
|
- eski host process cache/state taşıyor gibi görünüyorsa
|
||||||
|
|
||||||
|
Örnek:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode --restart-wscraper
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bayrak Kombinasyonları
|
||||||
|
|
||||||
|
En sık kullanılan kombinasyonlar:
|
||||||
|
|
||||||
|
- Normal geliştirme:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode
|
||||||
|
```
|
||||||
|
|
||||||
|
- `wscraper` repo’yu da güncelleyerek geliştirme:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode --update-wscraper
|
||||||
|
```
|
||||||
|
|
||||||
|
- Mevcut `wscraper` checkout’una hiç dokunmadan geliştirme:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode --skip-wscraper-fetch
|
||||||
|
```
|
||||||
|
|
||||||
|
- Host service’i yeniden başlatarak geliştirme:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode --restart-wscraper
|
||||||
|
```
|
||||||
|
|
||||||
|
- Ağsız veya hızlı tekrar başlatma denemesi:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/bootstrap.sh --dev-mode --skip-wscraper-fetch --skip-wscraper-install --restart-wscraper
|
||||||
|
```
|
||||||
|
|
||||||
|
### Önemli Notlar
|
||||||
|
|
||||||
|
- `--update-wscraper` ile `--skip-wscraper-fetch` aynı anda kullanılmamalıdır. Mantıksal olarak biri güncelleme isterken diğeri git işlemlerini kapatır.
|
||||||
|
- `--skip-wscraper-install`, yalnızca host Python ortamının zaten doğru kurulu olduğundan eminseniz kullanılmalıdır.
|
||||||
|
- `--restart-wscraper`, yalnızca host service sürecini etkiler; Docker container’ları yeniden oluşturmaz.
|
||||||
|
|
||||||
Docker tarafında normal ağ erişimi hâlâ gereklidir. DNS problemi yaşarsanız Docker Desktop içinde sabit resolver (`8.8.8.8`, `1.1.1.1`) tanımlayın. Docker DNS doğru ayarlanmamışsa:
|
Docker tarafında normal ağ erişimi hâlâ gereklidir. DNS problemi yaşarsanız Docker Desktop içinde sabit resolver (`8.8.8.8`, `1.1.1.1`) tanımlayın. Docker DNS doğru ayarlanmamışsa:
|
||||||
|
|
||||||
- `pnpm install`
|
- `pnpm install`
|
||||||
@@ -147,6 +332,8 @@ Host servis için kullanılacak ortam değişkenleri:
|
|||||||
- `WSCRAPER_SERVICE_HOST` varsayılan: `0.0.0.0`
|
- `WSCRAPER_SERVICE_HOST` varsayılan: `0.0.0.0`
|
||||||
- `WSCRAPER_SERVICE_PORT` varsayılan: `8787`
|
- `WSCRAPER_SERVICE_PORT` varsayılan: `8787`
|
||||||
- `WSCRAPER_SERVICE_PYTHON_BIN` örnek: `python3.12`
|
- `WSCRAPER_SERVICE_PYTHON_BIN` örnek: `python3.12`
|
||||||
|
- `WSCRAPER_GIT_URL` varsayılan: `https://github.com/wisecolt/Bookmark-Tracker.git`
|
||||||
|
- `WSCRAPER_GIT_REF` varsayılan: `main`
|
||||||
|
|
||||||
Daha detaylı `wscraper` dökümü için:
|
Daha detaylı `wscraper` dökümü için:
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
WSCRAPER_DIR="$ROOT_DIR/bin/wscraper"
|
||||||
RUNTIME_DIR="$ROOT_DIR/.runtime/wscraper-service"
|
RUNTIME_DIR="$ROOT_DIR/.runtime/wscraper-service"
|
||||||
VENV_DIR="$RUNTIME_DIR/.venv"
|
VENV_DIR="$RUNTIME_DIR/.venv"
|
||||||
PID_FILE="$RUNTIME_DIR/wscraper-service.pid"
|
PID_FILE="$RUNTIME_DIR/wscraper-service.pid"
|
||||||
@@ -10,12 +11,14 @@ MARKER_FILE="$RUNTIME_DIR/.setup-complete"
|
|||||||
MODE=""
|
MODE=""
|
||||||
SKIP_INSTALL="false"
|
SKIP_INSTALL="false"
|
||||||
RESTART_WSCRAPER="false"
|
RESTART_WSCRAPER="false"
|
||||||
|
SKIP_FETCH="false"
|
||||||
|
UPDATE_WSCRAPER="false"
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<'EOF'
|
cat <<'EOF'
|
||||||
Usage:
|
Usage:
|
||||||
./scripts/bootstrap.sh --dev-mode [--skip-wscraper-install] [--restart-wscraper]
|
./scripts/bootstrap.sh --dev-mode [--skip-wscraper-fetch] [--update-wscraper] [--skip-wscraper-install] [--restart-wscraper]
|
||||||
./scripts/bootstrap.sh --prod-mode [--skip-wscraper-install] [--restart-wscraper]
|
./scripts/bootstrap.sh --prod-mode [--skip-wscraper-fetch] [--update-wscraper] [--skip-wscraper-install] [--restart-wscraper]
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,6 +33,12 @@ while [[ $# -gt 0 ]]; do
|
|||||||
--skip-wscraper-install)
|
--skip-wscraper-install)
|
||||||
SKIP_INSTALL="true"
|
SKIP_INSTALL="true"
|
||||||
;;
|
;;
|
||||||
|
--skip-wscraper-fetch)
|
||||||
|
SKIP_FETCH="true"
|
||||||
|
;;
|
||||||
|
--update-wscraper)
|
||||||
|
UPDATE_WSCRAPER="true"
|
||||||
|
;;
|
||||||
--restart-wscraper|--restart)
|
--restart-wscraper|--restart)
|
||||||
RESTART_WSCRAPER="true"
|
RESTART_WSCRAPER="true"
|
||||||
;;
|
;;
|
||||||
@@ -65,6 +74,8 @@ WSCRAPER_SERVICE_HOST="${WSCRAPER_SERVICE_HOST:-0.0.0.0}"
|
|||||||
WSCRAPER_SERVICE_PORT="${WSCRAPER_SERVICE_PORT:-8787}"
|
WSCRAPER_SERVICE_PORT="${WSCRAPER_SERVICE_PORT:-8787}"
|
||||||
WSCRAPER_SERVICE_TOKEN="${WSCRAPER_SERVICE_TOKEN:-}"
|
WSCRAPER_SERVICE_TOKEN="${WSCRAPER_SERVICE_TOKEN:-}"
|
||||||
WSCRAPER_SERVICE_PYTHON_BIN="${WSCRAPER_SERVICE_PYTHON_BIN:-}"
|
WSCRAPER_SERVICE_PYTHON_BIN="${WSCRAPER_SERVICE_PYTHON_BIN:-}"
|
||||||
|
WSCRAPER_GIT_URL="${WSCRAPER_GIT_URL:-https://github.com/wisecolt/Bookmark-Tracker.git}"
|
||||||
|
WSCRAPER_GIT_REF="${WSCRAPER_GIT_REF:-main}"
|
||||||
|
|
||||||
detect_python_bin() {
|
detect_python_bin() {
|
||||||
if [[ -n "$WSCRAPER_SERVICE_PYTHON_BIN" ]] && command -v "$WSCRAPER_SERVICE_PYTHON_BIN" >/dev/null 2>&1; then
|
if [[ -n "$WSCRAPER_SERVICE_PYTHON_BIN" ]] && command -v "$WSCRAPER_SERVICE_PYTHON_BIN" >/dev/null 2>&1; then
|
||||||
@@ -89,6 +100,55 @@ detect_python_bin() {
|
|||||||
|
|
||||||
PYTHON_BIN="$(detect_python_bin)"
|
PYTHON_BIN="$(detect_python_bin)"
|
||||||
|
|
||||||
|
ensure_wscraper_repo() {
|
||||||
|
if [[ "$SKIP_FETCH" == "true" ]]; then
|
||||||
|
echo "wscraper repo kontrolu atlandi."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$WSCRAPER_DIR" ]]; then
|
||||||
|
echo "wscraper repo klonlaniyor..."
|
||||||
|
git clone --branch "$WSCRAPER_GIT_REF" "$WSCRAPER_GIT_URL" "$WSCRAPER_DIR"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$WSCRAPER_DIR/.git" ]]; then
|
||||||
|
echo "bin/wscraper dizini var ama git reposu degil. Lutfen duzeltin veya dizini temizleyin." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$UPDATE_WSCRAPER" != "true" ]]; then
|
||||||
|
echo "wscraper repo mevcut, yeniden klonlanmayacak."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local status_output
|
||||||
|
status_output="$(git -C "$WSCRAPER_DIR" status --porcelain)"
|
||||||
|
if [[ -n "$status_output" ]]; then
|
||||||
|
echo "wscraper repo kirli durumda; --update-wscraper uygulanmadi." >&2
|
||||||
|
echo "Lutfen bin/wscraper icindeki degisiklikleri commit edin veya temizleyin." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "wscraper repo guncelleniyor..."
|
||||||
|
git -C "$WSCRAPER_DIR" pull --ff-only
|
||||||
|
}
|
||||||
|
|
||||||
|
validate_wscraper_repo() {
|
||||||
|
local expected_paths=(
|
||||||
|
"$WSCRAPER_DIR/pyproject.toml"
|
||||||
|
"$WSCRAPER_DIR/setup.py"
|
||||||
|
"$WSCRAPER_DIR/src/wscraper/cli.py"
|
||||||
|
)
|
||||||
|
local path
|
||||||
|
for path in "${expected_paths[@]}"; do
|
||||||
|
if [[ ! -e "$path" ]]; then
|
||||||
|
echo "wscraper repo eksik veya bozuk gorunuyor: $path bulunamadi." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
service_running() {
|
service_running() {
|
||||||
if [[ ! -f "$PID_FILE" ]]; then
|
if [[ ! -f "$PID_FILE" ]]; then
|
||||||
return 1
|
return 1
|
||||||
@@ -160,7 +220,7 @@ start_wscraper_service() {
|
|||||||
WSCRAPER_SERVICE_HOST="$WSCRAPER_SERVICE_HOST" \
|
WSCRAPER_SERVICE_HOST="$WSCRAPER_SERVICE_HOST" \
|
||||||
WSCRAPER_SERVICE_PORT="$WSCRAPER_SERVICE_PORT" \
|
WSCRAPER_SERVICE_PORT="$WSCRAPER_SERVICE_PORT" \
|
||||||
WSCRAPER_SERVICE_TOKEN="$WSCRAPER_SERVICE_TOKEN" \
|
WSCRAPER_SERVICE_TOKEN="$WSCRAPER_SERVICE_TOKEN" \
|
||||||
PYTHONPATH="$ROOT_DIR/bin/wscraper/src" \
|
PYTHONPATH="$WSCRAPER_DIR/src" \
|
||||||
"$VENV_DIR/bin/python3" \
|
"$VENV_DIR/bin/python3" \
|
||||||
"$ROOT_DIR/bin/wscraper-service/server.py" \
|
"$ROOT_DIR/bin/wscraper-service/server.py" \
|
||||||
>>"$LOG_FILE" 2>&1 &
|
>>"$LOG_FILE" 2>&1 &
|
||||||
@@ -192,6 +252,8 @@ run_docker() {
|
|||||||
docker compose -f "$ROOT_DIR/docker-compose.yml" up --build -d
|
docker compose -f "$ROOT_DIR/docker-compose.yml" up --build -d
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ensure_wscraper_repo
|
||||||
|
validate_wscraper_repo
|
||||||
install_wscraper_service
|
install_wscraper_service
|
||||||
start_wscraper_service
|
start_wscraper_service
|
||||||
run_docker
|
run_docker
|
||||||
|
|||||||
Reference in New Issue
Block a user