|
112 | 112 | "id": "97f78839", |
113 | 113 | "metadata": {}, |
114 | 114 | "outputs": [], |
115 | | - "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" |
| 115 | + "source": [ |
| 116 | + "#| export\n", |
| 117 | + "class Git:\n", |
| 118 | + " def __init__(self, d): self.d = Path(d)\n", |
| 119 | + "\n", |
| 120 | + " def __call__(self, cmd, *args, split=None, mute_errors=False, **kwargs):\n", |
| 121 | + " paths = listify(kwargs.pop('__', []))\n", |
| 122 | + " args = listify(args)\n", |
| 123 | + " args += concat((f'-{k}',v) for k,v in kwargs.items() if len(k)==1 and v is not True)\n", |
| 124 | + " args += [f'-{k}' for k,v in kwargs.items() if len(k)==1 and v is True]\n", |
| 125 | + " 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", |
| 126 | + " args += [f'--{k.replace(\"_\",\"-\")}' for k,v in kwargs.items() if len(k)>1 and v is True]\n", |
| 127 | + " if paths: args += ['--'] + paths\n", |
| 128 | + " try: return callgit(self.d, cmd, *args, split=split)\n", |
| 129 | + " except CalledProcessError as e:\n", |
| 130 | + " if not mute_errors: print(f'ERROR: Git.__call__ caught exception {e} \\n with stderr={e.stderr}')\n", |
| 131 | + "\n", |
| 132 | + " def __getattr__(self, nm):\n", |
| 133 | + " if nm.startswith('_'): raise AttributeError(nm)\n", |
| 134 | + " return partial(self, nm.replace('_','-'))\n", |
| 135 | + "\n", |
| 136 | + " def top(self): return self.rev_parse('--show-toplevel', mute_errors=True)\n", |
| 137 | + " \n", |
| 138 | + " @property\n", |
| 139 | + " def exists(self): return self.top() is not None" |
| 140 | + ] |
116 | 141 | }, |
117 | 142 | { |
118 | 143 | "cell_type": "code", |
|
0 commit comments