Compare commits

...

4 commits

Author SHA1 Message Date
5724c8888d
doc: Improve introduction reading flow
Some checks failed
website / build (push) Has been cancelled
website / deploy (push) Has been cancelled
2025-09-15 10:56:29 +02:00
09d996eb15
doc: Change suggestion for trying script to versioned release
To try the script we should suggest the stable versioned release not the
main trunk.
2025-09-15 10:56:29 +02:00
1652e01885
doc: Add better cli option metavar annotations 2025-09-15 10:56:28 +02:00
5e6ab6854f
ref: Use recommended subprocess method to edit 2025-09-15 10:56:28 +02:00
2 changed files with 25 additions and 18 deletions

View file

@ -8,20 +8,12 @@
A script without bells and whistles. A script without bells and whistles.
Focuses on letting you quickly: Focuses on letting you quickly:
- create notes for taskwarrior tasks - create new notes for taskwarrior tasks
- edit notes for taskwarrior tasks - edit existing notes for taskwarrior tasks
It does both by simply being invoked with `topen <task-id>`. It does both by simply being invoked with `topen <task-id>`.
Provide a taskwarrior task id or uuid and `topen` creates a new note file or lets Or it can be used directly from taskwarrior by being aliased in your `taskrc`:
you edit an existing one. Additionally it adds a small annotation to the task
to let you see that there exists a note file next time you view the task.
Should just work as-is without additional configuration in most modern taskwarrior setups.
Can be configured through environment variables or cli options, see below.
Can be used as-is with the `topen` command or directly from taskwarrior by being aliased in your `taskrc`:
```conf ```conf
alias.note=exec topen alias.note=exec topen
@ -30,8 +22,16 @@ alias.note=exec topen
And you can open any note with your usual taskwarrior workflow, And you can open any note with your usual taskwarrior workflow,
by doing `task note <id>`. by doing `task note <id>`.
Provide a taskwarrior task id or uuid and `topen` creates a new note file or lets
you edit an existing one. Additionally it adds a small annotation to the task
to let you see that there exists a note file next time you view the task.
That's all there is to it. That's all there is to it.
Everything should just work as-is without additional configuration in most modern taskwarrior setups.
But if you want, many settings can be configured through your taskrc file, environment variables, or cli options, see below.
## Installation ## Installation
You can install the script with your favorite python environment manager: You can install the script with your favorite python environment manager:
@ -52,7 +52,7 @@ Or just manually copy the `topen` file to a directory in your PATH.
[tasklib](https://github.com/GothenburgBitFactory/tasklib) is the only dependency aside from the python standard library. [tasklib](https://github.com/GothenburgBitFactory/tasklib) is the only dependency aside from the python standard library.
If you just want to try the script out, If you just want to try the script out,
feel free to do so by invoking it e.g. with `uvx git+https://git.martyoeh.me/Marty/topen.git`. feel free to do so by invoking it e.g. with `uvx topen`.
If you want to install the trunk version instead of a versioned release simply substitute for the git path: If you want to install the trunk version instead of a versioned release simply substitute for the git path:

View file

@ -93,8 +93,7 @@ def get_notes_file(uuid: str, notes_dir: Path, notes_ext: str) -> Path:
def open_editor(file: Path, editor: str) -> None: def open_editor(file: Path, editor: str) -> None:
"""Opens a file with the chosen editor.""" """Opens a file with the chosen editor."""
_ = whisper(f"Editing note: {file}") _ = whisper(f"Editing note: {file}")
proc = subprocess.Popen(f"{editor} {file}", shell=True) _ = subprocess.run(f"{editor} {file}", shell=True)
_ = proc.wait()
def add_annotation_if_missing(task: Task, annotation_content: str) -> None: def add_annotation_if_missing(task: Task, annotation_content: str) -> None:
@ -191,6 +190,7 @@ you view the task.
_ = parser.add_argument( _ = parser.add_argument(
"-d", "-d",
"--notes-dir", "--notes-dir",
metavar="DIR",
help="Location of topen notes files", help="Location of topen notes files",
) )
_ = parser.add_argument( _ = parser.add_argument(
@ -198,15 +198,22 @@ you view the task.
action="store_true", action="store_true",
help="Silence any verbose displayed information", help="Silence any verbose displayed information",
) )
_ = parser.add_argument("--extension", help="Extension of note files") _ = parser.add_argument(
"--extension", metavar="EXT", help="Extension of note files"
)
_ = parser.add_argument( _ = parser.add_argument(
"--annotation", "--annotation",
metavar="NOTE",
help="Annotation content to set within taskwarrior", help="Annotation content to set within taskwarrior",
) )
_ = parser.add_argument("--editor", help="Program to open note files with")
_ = parser.add_argument("--task-rc", help="Location of taskwarrior config file")
_ = parser.add_argument( _ = parser.add_argument(
"--task-data", help="Location of taskwarrior data directory" "--editor", metavar="CMD", help="Program to open note files with"
)
_ = parser.add_argument(
"--task-rc", metavar="FILE", help="Location of taskwarrior config file"
)
_ = parser.add_argument(
"--task-data", metavar="DIR", help="Location of taskwarrior data directory"
) )
p = parser.parse_args() p = parser.parse_args()