getworktree 0.1.0__tar.gz → 0.1.1.dev3__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.
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/PKG-INFO +2 -3
- getworktree-0.1.1.dev3/getworktree/cli.py +104 -0
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/getworktree.egg-info/PKG-INFO +2 -3
- getworktree-0.1.1.dev3/getworktree.egg-info/entry_points.txt +2 -0
- getworktree-0.1.1.dev3/getworktree.egg-info/requires.txt +2 -0
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/setup.py +15 -5
- getworktree-0.1.0/getworktree/cli.py +0 -2
- getworktree-0.1.0/getworktree.egg-info/entry_points.txt +0 -2
- getworktree-0.1.0/getworktree.egg-info/requires.txt +0 -3
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/LICENSE +0 -0
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/README.md +0 -0
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/getworktree/__init__.py +0 -0
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/getworktree.egg-info/SOURCES.txt +0 -0
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/getworktree.egg-info/dependency_links.txt +0 -0
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/getworktree.egg-info/top_level.txt +0 -0
- {getworktree-0.1.0 → getworktree-0.1.1.dev3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: getworktree
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1.dev3
|
|
4
4
|
Summary: Isolated git worktree developer loops and AI agent workspaces.
|
|
5
5
|
Home-page: https://github.com
|
|
6
6
|
Author: Worktree Team
|
|
@@ -18,8 +18,7 @@ Classifier: Topic :: Software Development :: Version Control :: Git
|
|
|
18
18
|
Requires-Python: >=3.9
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist: rich>=13.0.0
|
|
21
|
+
Requires-Dist: typer[all]>=0.9.0
|
|
23
22
|
Requires-Dist: requests>=2.28.0
|
|
24
23
|
Dynamic: author
|
|
25
24
|
Dynamic: author-email
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import typer
|
|
2
|
+
from rich.console import Console
|
|
3
|
+
from rich.panel import Panel
|
|
4
|
+
from rich.text import Text
|
|
5
|
+
|
|
6
|
+
# Initialize a central styling console for high-utility layout parsing
|
|
7
|
+
console = Console()
|
|
8
|
+
|
|
9
|
+
# Package Metadata matching our PyPI footprint
|
|
10
|
+
__version__ = "0.1.1"
|
|
11
|
+
|
|
12
|
+
# Initialize Typer App with clean configuration defaults
|
|
13
|
+
app = typer.Typer(
|
|
14
|
+
name="wt",
|
|
15
|
+
help="Isolated git worktree developer loops and autonomous AI agent workspaces.",
|
|
16
|
+
add_completion=True,
|
|
17
|
+
rich_markup_mode="rich"
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
def print_welcome_banner():
|
|
21
|
+
"""Renders a highly scannable, developer-focused ASCII brand panel."""
|
|
22
|
+
banner_text = Text()
|
|
23
|
+
banner_text.append("🌳 Worktree CLI ", style="bold green")
|
|
24
|
+
banner_text.append(f"v{__version__}\n", style="dim cyan")
|
|
25
|
+
banner_text.append("Isolated Git Workspaces & Self-Healing Agent Loops", style="italic zinc-400")
|
|
26
|
+
|
|
27
|
+
console.print(
|
|
28
|
+
Panel(
|
|
29
|
+
banner_text,
|
|
30
|
+
border_style="green",
|
|
31
|
+
expand=False,
|
|
32
|
+
padding=(1, 4)
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def version_callback(value: bool):
|
|
37
|
+
"""Callback function to handle explicit version printing flags."""
|
|
38
|
+
if value:
|
|
39
|
+
console.print(f"[bold green]Worktree CLI[/bold green] v{__version__}")
|
|
40
|
+
raise typer.Exit()
|
|
41
|
+
|
|
42
|
+
@app.callback(invoke_without_command=True)
|
|
43
|
+
def main(
|
|
44
|
+
ctx: typer.Context,
|
|
45
|
+
verbose: bool = typer.Option(
|
|
46
|
+
False,
|
|
47
|
+
"--verbose", "-v",
|
|
48
|
+
help="Enable extensive internal engineering telemetry logging."
|
|
49
|
+
),
|
|
50
|
+
version: bool | None = typer.Option(
|
|
51
|
+
None,
|
|
52
|
+
"--version",
|
|
53
|
+
callback=version_callback,
|
|
54
|
+
is_eager=True,
|
|
55
|
+
help="Print the current version of the Worktree CLI and exit."
|
|
56
|
+
)
|
|
57
|
+
):
|
|
58
|
+
"""Global configuration wrapper managing shared application context."""
|
|
59
|
+
# Stash verbose settings inside the runtime context dict for downstream commands
|
|
60
|
+
ctx.ensure_object(dict)
|
|
61
|
+
ctx.obj["verbose"] = verbose
|
|
62
|
+
|
|
63
|
+
# If the developer types just 'wt' without a subcommand, render banner and help
|
|
64
|
+
if ctx.invoked_subcommand is None:
|
|
65
|
+
print_welcome_banner()
|
|
66
|
+
console.print(ctx.get_help())
|
|
67
|
+
raise typer.Exit()
|
|
68
|
+
elif verbose:
|
|
69
|
+
console.print("[dim yellow][TELEMETRY] Global verbose tracking layer active.[/dim yellow]")
|
|
70
|
+
|
|
71
|
+
@app.command(name="init")
|
|
72
|
+
def init_workspace(ctx: typer.Context):
|
|
73
|
+
"""Provision a secure local hidden folder path and tracking schemas."""
|
|
74
|
+
verbose = ctx.obj.get("verbose", False)
|
|
75
|
+
console.print("\n[bold blue]⏳ Provisioning secure environment configurations...[/bold blue]")
|
|
76
|
+
console.print("[dim zinc-400]Target tracking issue: #2[/dim zinc-400]")
|
|
77
|
+
if verbose:
|
|
78
|
+
console.print("[dim yellow][TELEMETRY] Initialization hook loaded successfully.[/dim yellow]")
|
|
79
|
+
# Core system verification and file tree generation logic hooks here in Issue #2
|
|
80
|
+
|
|
81
|
+
@app.command(name="loop")
|
|
82
|
+
def execute_loop(
|
|
83
|
+
ctx: typer.Context,
|
|
84
|
+
step_command: str = typer.Argument(
|
|
85
|
+
...,
|
|
86
|
+
help="The target terminal execution hook (e.g. 'pytest tests/')"
|
|
87
|
+
),
|
|
88
|
+
max_loops: int = typer.Option(
|
|
89
|
+
5,
|
|
90
|
+
"--max-loops", "-m",
|
|
91
|
+
help="Maximum iterative self-healing agent repair sequences."
|
|
92
|
+
)
|
|
93
|
+
):
|
|
94
|
+
"""Execute a self-healing background automation sequence against a target pipeline."""
|
|
95
|
+
verbose = ctx.obj.get("verbose", False)
|
|
96
|
+
console.print("\n[bold green]🌳 Initializing isolated background context thread...[/bold green]")
|
|
97
|
+
console.print(f"[bold white]Target Execution Hook:[/bold white] `{step_command}`")
|
|
98
|
+
console.print(f"[dim zinc-400]Maximum loop constraints set to: {max_loops}[/dim zinc-400]")
|
|
99
|
+
if verbose:
|
|
100
|
+
console.print("[dim yellow][TELEMETRY] Sandbox validation pass complete.[/dim yellow]")
|
|
101
|
+
# Background worktree spawning and subprocess piping hooks here in Issue #6
|
|
102
|
+
|
|
103
|
+
if __name__ == "__main__":
|
|
104
|
+
app()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: getworktree
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1.dev3
|
|
4
4
|
Summary: Isolated git worktree developer loops and AI agent workspaces.
|
|
5
5
|
Home-page: https://github.com
|
|
6
6
|
Author: Worktree Team
|
|
@@ -18,8 +18,7 @@ Classifier: Topic :: Software Development :: Version Control :: Git
|
|
|
18
18
|
Requires-Python: >=3.9
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist: rich>=13.0.0
|
|
21
|
+
Requires-Dist: typer[all]>=0.9.0
|
|
23
22
|
Requires-Dist: requests>=2.28.0
|
|
24
23
|
Dynamic: author
|
|
25
24
|
Dynamic: author-email
|
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
from setuptools import setup, find_packages
|
|
2
1
|
import os
|
|
3
2
|
|
|
3
|
+
from setuptools import find_packages, setup
|
|
4
|
+
|
|
4
5
|
# Read the contents of your public README file for the PyPI project page
|
|
5
6
|
theme_dir = os.path.abspath(os.path.dirname(__file__))
|
|
6
7
|
with open(os.path.join(theme_dir, "README.md"), encoding="utf-8") as f:
|
|
7
8
|
long_description = f.read()
|
|
8
9
|
|
|
10
|
+
# Base stable version
|
|
11
|
+
BASE_VERSION = "0.1.1"
|
|
12
|
+
|
|
13
|
+
# Check if running inside GitHub Actions and processing a dev build
|
|
14
|
+
if os.environ.get("WORKTREE_DEV_BUILD") == "true":
|
|
15
|
+
run_number = os.environ.get("GITHUB_RUN_NUMBER", "0")
|
|
16
|
+
VERSION = f"{BASE_VERSION}.dev{run_number}"
|
|
17
|
+
else:
|
|
18
|
+
VERSION = BASE_VERSION
|
|
19
|
+
|
|
9
20
|
setup(
|
|
10
21
|
name="getworktree",
|
|
11
|
-
version=
|
|
22
|
+
version=VERSION,
|
|
12
23
|
author="Worktree Team",
|
|
13
24
|
author_email="hello@getworktree.io",
|
|
14
25
|
description="Isolated git worktree developer loops and AI agent workspaces.",
|
|
@@ -35,8 +46,7 @@ setup(
|
|
|
35
46
|
|
|
36
47
|
# Baseline external libraries your CLI needs to run
|
|
37
48
|
install_requires=[
|
|
38
|
-
"
|
|
39
|
-
"rich>=13.0.0", # For beautiful terminal UI text rendering
|
|
49
|
+
"typer[all]>=0.9.0", # Automatically bundles rich and shellingham out of the box
|
|
40
50
|
"requests>=2.28.0", # For optional API polling / metrics updates
|
|
41
51
|
],
|
|
42
52
|
|
|
@@ -44,7 +54,7 @@ setup(
|
|
|
44
54
|
# Typing 'wt' in the terminal will run the main() function inside getworktree/cli.py
|
|
45
55
|
entry_points={
|
|
46
56
|
"console_scripts": [
|
|
47
|
-
"wt=getworktree.cli:
|
|
57
|
+
"wt=getworktree.cli:app",
|
|
48
58
|
],
|
|
49
59
|
},
|
|
50
60
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|