add readme and prompt
This commit is contained in:
parent
3f6b953416
commit
575e51eaa9
2 changed files with 130 additions and 0 deletions
80
prompt.md
Normal file
80
prompt.md
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
Create a workspace management tool.
|
||||
|
||||
I want a cli written to manage workspaces in a directory
|
||||
|
||||
cli features
|
||||
|
||||
* list workspaces
|
||||
* workspace name
|
||||
* workspace description (read from the readme, everything after the h1 title)
|
||||
* included repos, with ascii/int ahead/behind/dirty indicators
|
||||
* add repos to a workspace (default workspace to current workspace)
|
||||
* use iterfzf to pick repo
|
||||
* list all directories in repos_dir as a repo
|
||||
* checkout a worktree on branch with the name of the workspace into the
|
||||
workspace with the repo_name
|
||||
* list repos and branch on a current workspace
|
||||
* repo name (should also be directory name)
|
||||
* use ascii/int ahead/behind/dirty indicators for git status
|
||||
* create new workspace
|
||||
* ask for a name and description
|
||||
* name will be the directory name
|
||||
* make a readme with format `# <name>\n\n<description>`
|
||||
|
||||
|
||||
configuration
|
||||
|
||||
* get workspaces_name from flag / settings / environment variable / default
|
||||
WORKSPACES_DIR
|
||||
* workspaces_name defaults to git
|
||||
* repos_dir = ~/workspaces_name
|
||||
* workspaces_dir = ~/workspaces_name + ".workspaces"
|
||||
* workspaces will be two sibling directories,
|
||||
* allow me to specify the workspaces name ex: work, personal, git, with a
|
||||
flag to any command, fallback to env WORKSPACES_DIR, fallback to default
|
||||
* repos_dir with all repos I work on, I will keep it clean default to ~/git
|
||||
* workspaces_dir that I do work from that contains the workspace and a
|
||||
collection of worktrees checked out from the repo in the repos_dir default
|
||||
to ~/git.workspaces
|
||||
|
||||
fuzzy picker
|
||||
|
||||
* iterfzf is a python library that comes with fzf for fuzzy picking things
|
||||
``` python
|
||||
from iterfzf import iterfzf
|
||||
metadata = { "key": "value" }
|
||||
tables = metadata.tables.keys()
|
||||
table_name = iterfzf(tables, prompt="pick a table")
|
||||
```
|
||||
|
||||
directory layout
|
||||
|
||||
repos_dir
|
||||
repo1
|
||||
repo2
|
||||
repo3
|
||||
...
|
||||
workspaces_dir
|
||||
workspace1
|
||||
readme.md
|
||||
repo1 (worktree)
|
||||
repo2 (worktree)
|
||||
workspace2
|
||||
readme.md
|
||||
repo2 (worktree)
|
||||
repo3 (worktree)
|
||||
...
|
||||
|
||||
use the format for uv scripts as shown below. use typer for the cli, rich
|
||||
console and rich table for cli output, pydantic-settings for settings.
|
||||
|
||||
#!/usr/bin/env -S uv run --quiet --script
|
||||
# /// script
|
||||
# requires-python = ">=3.12"
|
||||
# dependencies = [
|
||||
# "typer",
|
||||
# "rich",
|
||||
# "pydantic",
|
||||
# "pydantic-settings",
|
||||
# ]
|
||||
# ///
|
||||
Loading…
Add table
Add a link
Reference in a new issue