make commit command with message flag

This commit is contained in:
Waylon Walker 2025-11-25 18:51:09 -06:00
parent d5d081f743
commit 4698450200

View file

@ -868,7 +868,6 @@ def choose_files_for_wip(repo_path: Path, changes: List[Tuple[str, str]]) -> Lis
return selected_files
@app.command("wip")
def wip_workspace(
ctx: typer.Context,
@ -895,9 +894,48 @@ def wip_workspace(
if not ws_dir.exists():
console.print(f"[red]Workspace '{ws_dir.name}' does not exist at {ws_dir}[/red]")
raise typer.Exit(1)
title, _desc = read_workspace_readme(ws_dir)
commit_message = f"wip: {title or ws_dir.name}"
commit_workspace(ctx, workspace, message=commit_message)
@app.command("commit")
def commit_workspace(
ctx: typer.Context,
workspace: Optional[str] = typer.Option(
None,
"--workspace",
"-w",
help=(
"Workspace directory name to WIP-commit. "
"If omitted, uses the workspace containing the current directory."
),
),
message: Optional[str] = typer.Option(
None,
"--message",
"-m",
help="Commit message to use.",
),
):
"""
For each repo in the workspace:
- Show list of changed files.
- Ask whether to stage all, none, or pick some files.
- Stage chosen files.
"""
if not message:
console.print(
"[red]No commit message provided. Exiting.[/red]",
file=sys.stderr,
)
raise typer.Exit(1)
_settings, _repos_dir, workspaces_dir = get_ctx_paths(ctx)
ws_dir = find_workspace_dir(workspaces_dir, workspace)
if not ws_dir.exists():
console.print(f"[red]Workspace '{ws_dir.name}' does not exist at {ws_dir}[/red]")
raise typer.Exit(1)
title, _desc = read_workspace_readme(ws_dir)
worktrees: List[Path] = []
for child in sorted(p for p in ws_dir.iterdir() if p.is_dir()):
@ -938,14 +976,14 @@ def wip_workspace(
continue
# Commit
code, _out, err = run_cmd(["git", "commit", "-m", commit_message], cwd=wt)
code, _out, err = run_cmd(["git", "commit", "-m", message], cwd=wt)
if code != 0:
console.print(
f"[red]Failed to commit in {wt.name}:[/red]\n{err}"
)
else:
console.print(
f" [green]Created WIP commit in {wt.name}:[/green] '{commit_message}'"
f" [green]Created WIP commit in {wt.name}:[/green] '{message}'"
)
@ -1290,62 +1328,5 @@ def attach(
app.add_typer(tmux_app)
# @app.command()
# def main(
# dir: Optional[Path] = typer.Argument(
# None,
# help="Base directory containing projects. If omitted, auto-attach or --start behavior.",
# ),
# start: bool = typer.Option(
# False,
# "--start",
# help="Start a new session based on the current directory.",
# ),
# ):
# # Replicate initial "DIR=$1" and attach-or-start logic
# # If no args and no --start
# if dir is None and not start:
# if not_in_tmux():
# # Try to attach to an existing session
# attach_proc = run_tmux(["attach"])
# if attach_proc.returncode == 0:
# # Successfully attached; exit like the bash script
# raise typer.Exit(1)
# # If attach failed, fall through to start mode
# start = True
# else:
# # In tmux and no dir/start: nothing to do
# raise typer.Exit(1)
#
# # Figure out session_name and path_name
# if start:
# path_name = Path.cwd()
# session_name = path_name.name.replace(".", "_")
# else:
# if dir is None:
# typer.echo("[ta] DIR argument is required unless --start is used.", err=True)
# raise typer.Exit(1)
#
# dir = dir.expanduser().resolve()
# project = pick_project(dir)
# if not project:
# # cancelled or error
# raise typer.Exit(1)
#
# session_name = project.replace(".", "_")
# path_name = (dir / project).resolve()
#
# typer.echo(f'session name is "{session_name}"')
# typer.echo(f"path name is {path_name}")
#
# if not session_name:
# raise typer.Exit(1)
#
# # Try main attach/create flow; on failure, fall back
# ok = create_if_needed_and_attach(session_name, path_name, start_mode=start)
# if not ok:
# attach_to_first_session()
#
if __name__ == "__main__":
app()