#!/usr/bin/env bash # Linux / macOS / Git Bash: same .venv as gpu-rent → python -m gpu_rent.civitai_dataset # Default (no args): discover + scrape --target 2000 + split set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$ROOT" load_vars_file() { local file="$1" [[ -f "$file" ]] || return 0 while IFS= read -r line || [[ -n "$line" ]]; do line="${line#"${line%%[![:space:]]*}"}" line="${line%"${line##*[![:space:]]}"}" [[ -z "$line" || "$line" == \#* ]] && continue if [[ "$line" == [eE][xX][pP][oO][rR][tT][[:space:]]* ]]; then line="${line#*[eE][xX][pP][oO][rR][tT]}" line="${line#"${line%%[![:space:]]*}"}" fi [[ "$line" != *=* ]] && continue local key="${line%%=*}" local val="${line#*=}" key="${key%"${key##*[![:space:]]}"}" key="${key#"${key%%[![:space:]]*}"}" val="${val#"${val%%[![:space:]]*}"}" val="${val%"${val##*[![:space:]]}"}" if [[ ${#val} -ge 2 ]]; then local q="${val:0:1}" if [[ ( "$q" == '"' || "$q" == "'" ) && "${val: -1}" == "$q" ]]; then val="${val:1:${#val}-2}" fi fi [[ -z "$key" ]] && continue if [[ -z "${!key+x}" || -z "${!key}" ]]; then export "$key=$val" fi done <"$file" } ok_py() { local exe="$1" shift || true command -v "$exe" >/dev/null 2>&1 || return 1 "$exe" "$@" -c "import sys; raise SystemExit(0 if sys.version_info >= (3, 11) else 1)" >/dev/null 2>&1 } if ok_py python3.12; then PY=(python3.12) elif ok_py python3.11; then PY=(python3.11) elif ok_py python3; then PY=(python3) elif ok_py python; then PY=(python) elif ok_py py -3.12; then PY=(py -3.12) elif ok_py py -3.11; then PY=(py -3.11) else echo "civitai-dataset: нужен Python 3.11+" >&2 exit 1 fi if [[ -x "$ROOT/.venv/Scripts/python.exe" ]]; then VENV_PY="$ROOT/.venv/Scripts/python.exe" elif [[ -x "$ROOT/.venv/bin/python" ]]; then VENV_PY="$ROOT/.venv/bin/python" else echo "civitai-dataset: создаю .venv" "${PY[@]}" -m venv "$ROOT/.venv" if [[ -x "$ROOT/.venv/Scripts/python.exe" ]]; then VENV_PY="$ROOT/.venv/Scripts/python.exe" else VENV_PY="$ROOT/.venv/bin/python" fi fi STAMP="$ROOT/.venv/.gpu-rent-installed" if [[ ! -f "$STAMP" || "$ROOT/pyproject.toml" -nt "$STAMP" ]]; then echo "civitai-dataset: ставлю пакет в .venv" "$VENV_PY" -m pip install -U pip "$VENV_PY" -m pip install -e "$ROOT" date -u +"%Y-%m-%dT%H:%M:%SZ" >"$STAMP" fi if [[ ! -f "$ROOT/.env" && -f "$ROOT/env.example" ]]; then cp "$ROOT/env.example" "$ROOT/.env" echo "civitai-dataset: created .env - fill CIVITAI_API_TOKEN" fi load_vars_file "$ROOT/gpu-rent.vars" ARGS=("$@") if [[ ${#ARGS[@]} -eq 0 ]]; then ARGS=(all) fi exec "$VENV_PY" -m gpu_rent.civitai_dataset "${ARGS[@]}"