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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: getworktree
3
- Version: 0.1.0
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: click>=8.0.0
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.0
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: click>=8.0.0
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,2 @@
1
+ [console_scripts]
2
+ wt = getworktree.cli:app
@@ -0,0 +1,2 @@
1
+ typer[all]>=0.9.0
2
+ requests>=2.28.0
@@ -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="0.1.0",
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
- "click>=8.0.0", # For clean CLI command formatting
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:main",
57
+ "wt=getworktree.cli:app",
48
58
  ],
49
59
  },
50
60
  )
@@ -1,2 +0,0 @@
1
- def main():
2
- print("Hello World!")
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- wt = getworktree.cli:main
@@ -1,3 +0,0 @@
1
- click>=8.0.0
2
- rich>=13.0.0
3
- requests>=2.28.0
File without changes
File without changes
File without changes