From bcf625d2b0002b016913e9c99550d45cff8cd73c Mon Sep 17 00:00:00 2001 From: C <0xicl33n@gmail.com> Date: Mon, 5 Jan 2026 16:23:44 -0800 Subject: [PATCH] add stats, versioning --- .version | 1 + config/gunicorn.conf.py | 20 ++++++++++++++++---- pyproject.toml | 3 ++- setup.py | 2 +- src/stats.py | 11 +++++++++++ studspider.py | 2 ++ 6 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 .version diff --git a/.version b/.version new file mode 100644 index 0000000..9325c3c --- /dev/null +++ b/.version @@ -0,0 +1 @@ +0.3.0 \ No newline at end of file diff --git a/config/gunicorn.conf.py b/config/gunicorn.conf.py index 54585e6..fcd4568 100644 --- a/config/gunicorn.conf.py +++ b/config/gunicorn.conf.py @@ -1,8 +1,18 @@ import multiprocessing import os +import git import src.banner as banner +def get_git_commit(): + """Get first 6 characters of current git commit hash""" + try: + repo = git.Repo(search_parent_directories=True) + return repo.head.commit.hexsha[:6] + except Exception: + return "unknown" + + # Server socket bind = "127.0.0.1:7433" # nginx will proxy to this backlog = 2048 @@ -71,11 +81,13 @@ def on_reload(server): def when_ready(server): - print(banner.generate("studspider v0.1")) + commit_hash = get_git_commit() + print(f"{banner.generate("studspider v0.3.0")} - {commit_hash}") print("Built for PLAY-WELL TEKNOLOGIES by contact@studspider.sh\n\n") - print(f"STUDSPIDER HOOK v0.1 RUNNING ON {bind}") - print(f"WORKERS: {workers}") - print(f"WORKING CLASS: {worker_class}\n") + print(f"BOOTING ON:\t{bind}") + print(f"WORKERS:\t{workers}") + print(f"WORKER TYPE:\t{worker_class}") + print(f"{'=' * 60}\n") def worker_int(worker): diff --git a/pyproject.toml b/pyproject.toml index a3d524d..a7bfb50 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "studpider" -version = "0.1.0" +version = "0.3.0" description = "" authors = [{ name = "CF", email = "ph0sgene@pm.me" }] requires-python = ">=3.13,<3.14" @@ -22,6 +22,7 @@ dependencies = [ "uvicorn>=0.40.0", "gunicorn>=23.0.0", "async-lru>=2.0.4", + "gitpython>=3.1.0", ] [build-system] diff --git a/setup.py b/setup.py index 2dfd5c5..bfdbeb9 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup( name="studspider", - version="0.1", + version="0.3.0", description="Bricket + Square integration application", author="CF", author_email="chris-forst@pm.me", diff --git a/src/stats.py b/src/stats.py index d7d2380..59a207d 100644 --- a/src/stats.py +++ b/src/stats.py @@ -4,11 +4,22 @@ Queries Square catalog to collect metrics about LEGO inventory quality. """ import json +import git from typing import Dict, Any from square import AsyncSquare from . import get_sq_env from . import abricksetapi + +def get_git_commit() -> str: + """Get first 6 characters of current git commit hash""" + try: + repo = git.Repo(search_parent_directories=True) + return repo.head.commit.hexsha[:6] + except Exception: + return "unknown" + + # Initialize Square client client = AsyncSquare(token=get_sq_env.SQUARE_TOKEN, environment=get_sq_env.environment) diff --git a/studspider.py b/studspider.py index 00efa79..bd594af 100644 --- a/studspider.py +++ b/studspider.py @@ -83,6 +83,8 @@ async def get_stats(): return { "status": "success", + "version": "0.3.0", + "git_commit": stats.get_git_commit(), "stats": daily_stats, "completion_rate": round(completion_rate, 1), "brickset_cache": cache_stats,