Skip to content

Commit 9b867c1

Browse files
committed
add support for paths
1 parent a0019ea commit 9b867c1

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

fastgit/core.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,13 @@ class Git:
3030
def __init__(self, d): self.d = Path(d)
3131

3232
def __call__(self, cmd, *args, split=None, mute_errors=False, **kwargs):
33+
paths = listify(kwargs.pop('__', []))
3334
args = listify(args)
3435
args += concat((f'-{k}',v) for k,v in kwargs.items() if len(k)==1 and v is not True)
3536
args += [f'-{k}' for k,v in kwargs.items() if len(k)==1 and v is True]
3637
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]
3738
args += [f'--{k.replace("_","-")}' for k,v in kwargs.items() if len(k)>1 and v is True]
39+
if paths: args += ['--'] + paths
3840
try: return callgit(self.d, cmd, *args, split=split)
3941
except CalledProcessError as e:
4042
if not mute_errors: print(f'ERROR: Git.__call__ caught exception {e} \n with stderr={e.stderr}')

nbs/00_core.ipynb

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,32 @@
112112
"id": "97f78839",
113113
"metadata": {},
114114
"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+
]
116141
},
117142
{
118143
"cell_type": "code",

0 commit comments

Comments
 (0)