From 40b567a62991b5807c2502b8506566feaf12789e Mon Sep 17 00:00:00 2001
From: phi <phi.friday@gmail.com>
Date: Thu, 26 Dec 2024 21:25:00 +0900
Subject: [PATCH] fix: use subprocess

---
 .pre-commit-hooks.yaml           |  4 ++--
 pyproject.toml                   |  6 +++++-
 src/sync_uv_pre_commit/script.py | 15 +++++++++++++++
 3 files changed, 22 insertions(+), 3 deletions(-)
 create mode 100644 src/sync_uv_pre_commit/script.py

diff --git a/.pre-commit-hooks.yaml b/.pre-commit-hooks.yaml
index 136aceb..917cc60 100644
--- a/.pre-commit-hooks.yaml
+++ b/.pre-commit-hooks.yaml
@@ -1,8 +1,8 @@
 - id: sync-uv-pre-commit
   name: Sync uv and pre commit
   description: Sync uv and pre commit
-  language: script
-  entry: "uv run script.py"
+  language: python
+  entry: sync_uv_pre_commit
   minimum_pre_commit_version: "3.5.0"
   require_serial: true
   always_run: true
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 3592db6..b90bd46 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -12,13 +12,17 @@ classifiers = [
     "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: Implementation :: CPython",
 ]
-scripts = { generate_cli_script = "sync_uv_pre_commit.render:generate_script" }
 dependencies = [
     "packaging",
     "pre-commit>=3.5.0",
     "tomlkit>=0.13.2",
     "typing-extensions>=4.12.2",
 ]
+
+[project.scripts]
+generate_cli_script = "sync_uv_pre_commit.render:generate_script"
+sync_uv_pre_commit = "sync_uv_pre_commit.script:main"
+
 [dependency-groups]
 dev = [
     "ruff==0.8.4",
diff --git a/src/sync_uv_pre_commit/script.py b/src/sync_uv_pre_commit/script.py
new file mode 100644
index 0000000..0577461
--- /dev/null
+++ b/src/sync_uv_pre_commit/script.py
@@ -0,0 +1,15 @@
+from __future__ import annotations
+
+import subprocess
+from pathlib import Path
+
+WORKSPACE = Path(__file__).parent.parent.parent
+
+
+def main() -> None:  # noqa: D103
+    subprocess.run(  # noqa: S603
+        ["uv", "run", str(WORKSPACE / "script.py")],  # noqa: S607
+        check=True,
+        capture_output=True,
+        text=True,
+    )