From 7bd08eb44c94764e807333067926759ef24fe165 Mon Sep 17 00:00:00 2001 From: caandt Date: Fri, 3 Jan 2025 13:30:46 -0500 Subject: [PATCH] patch ki --- overlays/default.nix | 4 +-- overlays/ki.diff | 68 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 58 insertions(+), 14 deletions(-) diff --git a/overlays/default.nix b/overlays/default.nix index 7b80b84..36c4c82 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -11,9 +11,7 @@ env.NIX_LDFLAGS = "-lXcursor"; }); ki = super.ki.overrideAttrs (old: { - postInstall = '' - patch $out/bin/ki < ${./ki.diff} - ''; + patches = old.patches ++ [./ki.diff]; }); }) ]; diff --git a/overlays/ki.diff b/overlays/ki.diff index 895dd0e..abd88bc 100644 --- a/overlays/ki.diff +++ b/overlays/ki.diff @@ -1,11 +1,57 @@ ---- a/bin/ki -+++ b/bin/ki -@@ -1,6 +1,8 @@ - import re - import sys - from ki import ki -+import ki.maybes as M; M.empty_kirepo = lambda root: (M.F.mksubdir(root, M.Path(M.KI)), M.F.mksubdir(M.EmptyDir(root), M.Path(M.MEDIA))) -+import pathlib as P; PTD = P.Path.__truediv__; P.Path.__truediv__ = lambda a, b: P.Path('/dev/null') if '.gitattributes' in str(PTD(a, b)) else PTD(a, b) - if __name__ == "__main__": - sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) - sys.exit(ki()) +diff --git a/ki/__init__.py b/ki/__init__.py +index 3f29c1a..1d5c101 100644 +--- a/ki/__init__.py ++++ b/ki/__init__.py +@@ -405,7 +405,7 @@ def parse_note(parser: Lark, transformer: NoteTransformer, delta: Delta) -> Deck + deck=deck, + model=flatnote.model, + tags=flatnote.tags, +- fields=flatnote.fields, ++ fields={k: v.rstrip() for k, v in flatnote.fields.items()}, + ) + + +@@ -1510,14 +1510,15 @@ def _pull2(kirepo: KiRepo, col: Collection) -> Collection: + + + @ki.command() ++@click.option('-f', '--force', is_flag=True) + @beartype +-def push() -> None: ++def push(force: bool) -> None: + """Push commits from the currrent ki repository into an Anki collection.""" +- _push() ++ _push(force) + + + @beartype +-def _push() -> PushResult: ++def _push(force: bool = False) -> PushResult: + """Execute a push op.""" + # pylint: disable=too-many-locals + # Check that we are inside a ki repository, and load collection. +@@ -1527,7 +1528,10 @@ def _push() -> PushResult: + hashes: List[str] = kirepo.hashes_file.read_text(encoding=UTF8).split("\n") + hashes = list(filter(lambda l: l != "", hashes)) + if md5sum not in hashes[-1]: +- raise UpdatesRejectedError(kirepo.col_file) ++ if force: ++ echo('overwriting...') ++ else: ++ raise UpdatesRejectedError(kirepo.col_file) + + head_kirepo: KiRepo = cp_ki(M.head_ki(kirepo), f"{HEAD_SUFFIX}-{md5sum}") + remote_root: EmptyDir = F.mksubdir(F.mkdtemp(), REMOTE_SUFFIX / md5sum) +diff --git a/ki/maybes.py b/ki/maybes.py +index 38c5573..45458f5 100644 +--- a/ki/maybes.py ++++ b/ki/maybes.py +@@ -470,8 +470,6 @@ def empty_kirepo(root: EmptyDir) -> Tuple[EmptyDir, EmptyDir]: + """Initialize subdirs for a ki repo.""" + kidir = F.mksubdir(root, Path(KI)) + mediadir = F.mksubdir(EmptyDir(root), Path(MEDIA)) +- workflowsdir = F.mksubdir(EmptyDir(root), Path(".github/workflows")) +- _ = F.copyfile(F.chk(Path(__file__).parent / "jekyll-gh-pages.yml"), F.chk(workflowsdir / "jekyll-gh-pages.yml.example")) + return kidir, mediadir + +