Minor changes

This commit is contained in:
Tris Forster 2025-12-04 09:19:05 +11:00
parent d745444609
commit e9cc2cc3d0
3 changed files with 51 additions and 3 deletions

View File

@ -29,6 +29,10 @@ def cmd_add_note(config, title, notebook):
if not body: if not body:
notes.edit_file(config, filename) notes.edit_file(config, filename)
notes.run_git(
config, ["add", str(filename.relative_to(config.directory))], quiet=True
)
add_note = group.add_parser("add", aliases=["a"]) add_note = group.add_parser("add", aliases=["a"])
add_note.add_argument("--notebook", "-n", help="add to this notebook [general]") add_note.add_argument("--notebook", "-n", help="add to this notebook [general]")
@ -79,6 +83,9 @@ list_notes.set_defaults(func=cmd_list_notes)
def cmd_edit_note(config, title, notebook: str) -> None: def cmd_edit_note(config, title, notebook: str) -> None:
filename = notes.search_filenames(config, title, notebook) filename = notes.search_filenames(config, title, notebook)
notes.edit_file(config, filename) notes.edit_file(config, filename)
notes.run_git(
config, ["add", str(filename.relative_to(config.directory))], quiet=True
)
edit_note = group.add_parser("edit", aliases=["e"]) edit_note = group.add_parser("edit", aliases=["e"])
@ -98,3 +105,28 @@ show_note = group.add_parser("show", aliases=["s", "cat"])
show_note.add_argument("title", help="note title", nargs="?") show_note.add_argument("title", help="note title", nargs="?")
show_note.add_argument("--notebook", "-n", help="limit to this notebook") show_note.add_argument("--notebook", "-n", help="limit to this notebook")
show_note.set_defaults(func=cmd_show_note) show_note.set_defaults(func=cmd_show_note)
### Git
def cmd_git(config: Config, cmd: list[str]) -> None:
output = notes.run_git(config, cmd)
sys.stdout.write(output)
git = group.add_parser("git", help="run a git command in the note directory")
git.add_argument("cmd", help="git command", nargs="*")
git.set_defaults(func=cmd_git)
### Sync
def cmd_sync(config: Config) -> None:
output = notes.run_git(config, ["pull"])
sys.stdout.write(f"Pull: {output}\n")
output = notes.run_git(config, ["push"])
sys.stdout.write(f"Push: {output}\n")
git = group.add_parser("sync", help="synchronise the notes")
git.set_defaults(func=cmd_sync)

View File

@ -3,6 +3,7 @@ import pathlib
import sys import sys
from pyn.config import Config from pyn.config import Config
from pyn.common import logger
from datetime import datetime from datetime import datetime
from shutil import copyfileobj from shutil import copyfileobj
@ -123,6 +124,7 @@ def search_contents(
if full_line: if full_line:
cmd.append("-x") cmd.append("-x")
logger.debug("Executing: %r", cmd)
try: try:
output = subprocess.check_output(cmd) output = subprocess.check_output(cmd)
for line in output.decode("utf-8").strip().split("\n"): for line in output.decode("utf-8").strip().split("\n"):
@ -132,3 +134,17 @@ def search_contents(
if e.returncode == 1: if e.returncode == 1:
return return
raise raise
def run_git(config: Config, cmd: list[str], quiet: bool = False) -> str:
if not (config.directory / ".git").is_dir():
if quiet:
return ""
raise RuntimeError("Notes not currently tracked")
cmd = ["git", "-C", str(config.directory)] + cmd
try:
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
return output.decode("utf-8").strip()
except subprocess.CalledProcessError as e:
raise RuntimeError(str(e))

View File

@ -35,10 +35,10 @@ def cmd_list_pending(config: Config, notebook: str):
entry = notes.file_entry(config, result.filename) entry = notes.file_entry(config, result.filename)
if entry.notebook != nb: if entry.notebook != nb:
nb = entry.notebook nb = entry.notebook
print(f"\nNotebook: {entry.notebook}") print(f"\nNotebook: \033[32m{entry.notebook}\033[0m")
name = result.filename.name name = result.filename.name
sys.stdout.write(result.snippet) sys.stdout.write(result.snippet)
sys.stdout.write(" " * (cols - len(result.snippet) - len(name))) sys.stdout.write(" " * (cols - len(result.snippet) - len(name) - 1))
sys.stdout.write(name) sys.stdout.write(name)
sys.stdout.write("\n") sys.stdout.write("\n")
@ -62,7 +62,7 @@ def cmd_mark_complete(
item_str = " ".join(item) item_str = " ".join(item)
results = list( results = list(
notes.search_contents( notes.search_contents(
config, f"* [{unchecked}] {item}", notebook, full_line=True config, f"* [{unchecked}] {item_str}", notebook, full_line=True
) )
) )