make commit command with message flag
This commit is contained in:
parent
d5d081f743
commit
4698450200
1 changed files with 42 additions and 61 deletions
103
workspaces.py
103
workspaces.py
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue