luv-cli 0.0.1__tar.gz → 0.0.2__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: luv-cli
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary: Launch Claude Code agents on GitHub repos with isolated workspaces and optional Docker dev environments
5
5
  Project-URL: Homepage, https://github.com/exospherehost/luv
6
6
  Project-URL: Repository, https://github.com/exospherehost/luv
@@ -398,6 +398,23 @@ def cmd_clean(force: bool = False) -> None:
398
398
  print("luv: nothing to clean")
399
399
 
400
400
 
401
+ def find_latest_clone(repo: str) -> Path | None:
402
+ """Return the highest-numbered local {repo}-{N} folder, or None."""
403
+ if not PRS_DIR.exists():
404
+ return None
405
+ best: Path | None = None
406
+ best_num = -1
407
+ for entry in PRS_DIR.iterdir():
408
+ if not entry.is_dir():
409
+ continue
410
+ parts = entry.name.rsplit("-", 1)
411
+ if len(parts) == 2 and parts[0] == repo and parts[1].isdigit():
412
+ n = int(parts[1])
413
+ if n > best_num:
414
+ best, best_num = entry, n
415
+ return best
416
+
417
+
401
418
  def open_existing(org: str, repo: str, number: int, prompt: str | None, nav_mode: bool = False, resume_mode: bool = False) -> None:
402
419
  """Open an existing work folder or remote branch by number."""
403
420
  clone_dir = PRS_DIR / f"{repo}-{number}"
@@ -506,6 +523,8 @@ Commands:
506
523
  luv [org/]<repo> <number> [prompt] reopen an existing work folder by number
507
524
  luv -l <PR URL> [prompt] open any GitHub PR by URL
508
525
  luv [org/]<repo> -pr <number> [prompt] open a GitHub PR by repo + number
526
+ luv [org/]<repo> -n open shell in latest local clone
527
+ luv [org/]<repo> -r resume Claude in latest local clone
509
528
  luv --clean [-f] delete fully-pushed work folders
510
529
 
511
530
  Org resolution:
@@ -569,6 +588,18 @@ Docker:
569
588
  org = resolve_org(explicit_org)
570
589
  prompt = " ".join(args[1:]) if len(args) > 1 else None
571
590
 
591
+ # luv <repo> -n/-r → open latest local clone (no new workspace)
592
+ if (nav_mode or resume_mode) and not prompt:
593
+ clone_dir = find_latest_clone(repo)
594
+ if clone_dir is None:
595
+ die(f"no local clones of '{repo}' found in {PRS_DIR}")
596
+ print(f"luv: opening latest clone {clone_dir.name}")
597
+ if nav_mode:
598
+ navigate(clone_dir)
599
+ else:
600
+ resume(clone_dir)
601
+ return
602
+
572
603
  # 1. Verify repo exists
573
604
  r = run(["gh", "api", f"repos/{org}/{repo}"])
574
605
  if r.returncode != 0:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "luv-cli"
7
- version = "0.0.1"
7
+ version = "0.0.2"
8
8
  description = "Launch Claude Code agents on GitHub repos with isolated workspaces and optional Docker dev environments"
9
9
  requires-python = ">=3.10"
10
10
  license = "MIT"
File without changes
File without changes