diff --git a/fastgit/core.py b/fastgit/core.py index 84eec35..c5fc0d9 100644 --- a/fastgit/core.py +++ b/fastgit/core.py @@ -31,10 +31,12 @@ def __init__(self, d): self.d = Path(d) def __call__(self, cmd, *args, split=None, mute_errors=False, **kwargs): args = listify(args) - args += concat((f'-{k}',v) for k,v in kwargs.items() if len(k)==1) - args += [f'--{k}={v}' for k,v in kwargs.items() if len(k)>1] + args += concat((f'-{k}',v) for k,v in kwargs.items() if len(k)==1 and v is not True) + args += [f'-{k}' for k,v in kwargs.items() if len(k)==1 and v is True] + args += [f'--{k.replace("_","-")}={v}' for k,v in kwargs.items() if len(k)>1 and v is not True and v is not False] + args += [f'--{k.replace("_","-")}' for k,v in kwargs.items() if len(k)>1 and v is True] try: return callgit(self.d, cmd, *args, split=split) - except CalledProcessError as e: + except CalledProcessError as e: if not mute_errors: print(f'ERROR: Git.__call__ caught exception {e} \n with stderr={e.stderr}') def __getattr__(self, nm): diff --git a/nbs/00_core.ipynb b/nbs/00_core.ipynb index b4ca3e2..85d4e55 100644 --- a/nbs/00_core.ipynb +++ b/nbs/00_core.ipynb @@ -112,28 +112,7 @@ "id": "97f78839", "metadata": {}, "outputs": [], - "source": [ - "#| export\n", - "class Git:\n", - " def __init__(self, d): self.d = Path(d)\n", - "\n", - " def __call__(self, cmd, *args, split=None, mute_errors=False, **kwargs):\n", - " args = listify(args)\n", - " args += concat((f'-{k}',v) for k,v in kwargs.items() if len(k)==1)\n", - " args += [f'--{k}={v}' for k,v in kwargs.items() if len(k)>1]\n", - " try: return callgit(self.d, cmd, *args, split=split)\n", - " except CalledProcessError as e: \n", - " if not mute_errors: print(f'ERROR: Git.__call__ caught exception {e} \\n with stderr={e.stderr}')\n", - "\n", - " def __getattr__(self, nm):\n", - " if nm.startswith('_'): raise AttributeError(nm)\n", - " return partial(self, nm.replace('_','-'))\n", - "\n", - " def top(self): return self.rev_parse('--show-toplevel', mute_errors=True)\n", - " \n", - " @property\n", - " def exists(self): return self.top() is not None" - ] + "source": "#| export\nclass Git:\n def __init__(self, d): self.d = Path(d)\n\n def __call__(self, cmd, *args, split=None, mute_errors=False, **kwargs):\n args = listify(args)\n args += concat((f'-{k}',v) for k,v in kwargs.items() if len(k)==1 and v is not True)\n args += [f'-{k}' for k,v in kwargs.items() if len(k)==1 and v is True]\n args += [f'--{k.replace(\"_\",\"-\")}={v}' for k,v in kwargs.items() if len(k)>1 and v is not True and v is not False]\n args += [f'--{k.replace(\"_\",\"-\")}' for k,v in kwargs.items() if len(k)>1 and v is True]\n try: return callgit(self.d, cmd, *args, split=split)\n except CalledProcessError as e:\n if not mute_errors: print(f'ERROR: Git.__call__ caught exception {e} \\n with stderr={e.stderr}')\n\n def __getattr__(self, nm):\n if nm.startswith('_'): raise AttributeError(nm)\n return partial(self, nm.replace('_','-'))\n\n def top(self): return self.rev_parse('--show-toplevel', mute_errors=True)\n \n @property\n def exists(self): return self.top() is not None" }, { "cell_type": "code", @@ -185,4 +164,4 @@ "metadata": {}, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file