repoweave 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- repoweave-0.1.0/.gitignore +13 -0
- repoweave-0.1.0/PKG-INFO +13 -0
- repoweave-0.1.0/pyproject.toml +27 -0
- repoweave-0.1.0/src/repoweave/__init__.py +51 -0
repoweave-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: repoweave
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A cross-repo workspace manager
|
|
5
|
+
Project-URL: Repository, https://github.com/cwalv/repoweave
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: git,monorepo,multi-repo,workspace
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Rust
|
|
12
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
13
|
+
Requires-Python: >=3.8
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "repoweave"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "A cross-repo workspace manager"
|
|
9
|
+
license = "MIT"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
keywords = ["workspace", "monorepo", "git", "multi-repo"]
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Development Status :: 3 - Alpha",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Programming Language :: Rust",
|
|
17
|
+
"Topic :: Software Development :: Build Tools",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
[project.urls]
|
|
21
|
+
Repository = "https://github.com/cwalv/repoweave"
|
|
22
|
+
|
|
23
|
+
[project.scripts]
|
|
24
|
+
rwv = "repoweave:main"
|
|
25
|
+
|
|
26
|
+
[tool.hatch.build.targets.wheel]
|
|
27
|
+
packages = ["src/repoweave"]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""
|
|
2
|
+
repoweave - A cross-repo workspace manager.
|
|
3
|
+
|
|
4
|
+
This is a thin Python wrapper that downloads and runs the pre-built
|
|
5
|
+
repoweave (rwv) binary from GitHub Releases. It enables `uvx repoweave`
|
|
6
|
+
and `pipx run repoweave` without requiring a Rust toolchain.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
import platform
|
|
13
|
+
import sys
|
|
14
|
+
import sysconfig
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _find_binary() -> str:
|
|
18
|
+
"""Locate the rwv binary bundled in the package's scripts/data directory."""
|
|
19
|
+
# When installed via pip/pipx/uvx, the binary ends up in the scripts dir
|
|
20
|
+
scripts_dir = sysconfig.get_path("scripts")
|
|
21
|
+
if scripts_dir:
|
|
22
|
+
bin_name = "rwv.exe" if sys.platform == "win32" else "rwv"
|
|
23
|
+
candidate = os.path.join(scripts_dir, bin_name)
|
|
24
|
+
if os.path.isfile(candidate):
|
|
25
|
+
return candidate
|
|
26
|
+
|
|
27
|
+
# Fallback: check next to this file (for development / editable installs)
|
|
28
|
+
pkg_dir = os.path.dirname(os.path.abspath(__file__))
|
|
29
|
+
bin_name = "rwv.exe" if sys.platform == "win32" else "rwv"
|
|
30
|
+
candidate = os.path.join(pkg_dir, "bin", bin_name)
|
|
31
|
+
if os.path.isfile(candidate):
|
|
32
|
+
return candidate
|
|
33
|
+
|
|
34
|
+
raise FileNotFoundError(
|
|
35
|
+
f"Could not find the rwv binary. "
|
|
36
|
+
f"Platform: {platform.system()} {platform.machine()}. "
|
|
37
|
+
f"Please report this issue at https://github.com/cwalv/repoweave/issues"
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def main() -> None:
|
|
42
|
+
"""Entry point for the `rwv` console script."""
|
|
43
|
+
import subprocess
|
|
44
|
+
|
|
45
|
+
binary = _find_binary()
|
|
46
|
+
result = subprocess.run([binary, *sys.argv[1:]])
|
|
47
|
+
raise SystemExit(result.returncode)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
if __name__ == "__main__":
|
|
51
|
+
main()
|