Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions nbdev/_modidx.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
'nbdev.config._find_nbdev_pyproject': ('api/config.html#_find_nbdev_pyproject', 'nbdev/config.py'),
'nbdev.config._get_info': ('api/config.html#_get_info', 'nbdev/config.py'),
'nbdev.config._git_repo': ('api/config.html#_git_repo', 'nbdev/config.py'),
'nbdev.config._git_root': ('api/config.html#_git_root', 'nbdev/config.py'),
'nbdev.config._has_nbdev': ('api/config.html#_has_nbdev', 'nbdev/config.py'),
'nbdev.config._has_py': ('api/config.html#_has_py', 'nbdev/config.py'),
'nbdev.config._index_mdoc': ('api/config.html#_index_mdoc', 'nbdev/config.py'),
Expand Down
1 change: 0 additions & 1 deletion nbdev/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ async def nbdev_new(
if name:
Path(name).mkdir(exist_ok=True)
os.chdir(name)
kwargs.setdefault('repo', name)
nbdev_create_config.__wrapped__(**kwargs)
cfg = get_config()
if (Path('.git')).exists(): await _update_repo_meta(cfg)
Expand Down
11 changes: 9 additions & 2 deletions nbdev/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,21 @@ def _get_info(owner, repo, default_branch='main', default_kw='nbdev'):
return r.default_branch, default_kw if not getattr(r, 'topics', []) else ' '.join(r.topics), r.description

# %% ../nbs/api/01_config.ipynb #35d5c037
def _fetch_from_git(raise_err=False):
def _git_root(raise_err=False):
"Root of the current git repository, or `None` if there isn't one."
try: return Path(run('git rev-parse --show-toplevel').strip()).resolve()
except OSError:
if raise_err: raise

def _fetch_from_git(raise_err=False, path=None):
"Get information for pyproject.toml from git."
res={}
try:
res['author'] = run('git config --get user.name').strip()
res['author_email'] = run('git config --get user.email').strip()
except OSError as e:
if raise_err: raise e
if path is not None and _git_root(raise_err)!=Path(path).resolve(): return res
try:
url = run('git config --get remote.origin.url')
res['user'],res['repo'] = repo_details(url)
Expand Down Expand Up @@ -123,7 +130,7 @@ def nbdev_create_config(
path.mkdir(exist_ok=True, parents=True)

# Infer from git if not provided
inf,ucfg = _fetch_from_git(),_user_config()
inf,ucfg = _fetch_from_git(path=path),_user_config()
repo = repo or inf.get('repo') or path.resolve().name
user = user or inf.get('user') or ucfg.get('user', '')
if not user: raise ValueError("Could not infer `user` from git. Please pass --user explicitly.")
Expand Down
16 changes: 13 additions & 3 deletions nbs/api/01_config.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -170,14 +170,21 @@
"outputs": [],
"source": [
"#| export\n",
"def _fetch_from_git(raise_err=False):\n",
"def _git_root(raise_err=False):\n",
" \"Root of the current git repository, or `None` if there isn't one.\"\n",
" try: return Path(run('git rev-parse --show-toplevel').strip()).resolve()\n",
" except OSError:\n",
" if raise_err: raise\n",
"\n",
"def _fetch_from_git(raise_err=False, path=None):\n",
" \"Get information for pyproject.toml from git.\"\n",
" res={}\n",
" try:\n",
" res['author'] = run('git config --get user.name').strip()\n",
" res['author_email'] = run('git config --get user.email').strip()\n",
" except OSError as e:\n",
" if raise_err: raise e\n",
" if path is not None and _git_root(raise_err)!=Path(path).resolve(): return res\n",
" try:\n",
" url = run('git config --get remote.origin.url')\n",
" res['user'],res['repo'] = repo_details(url)\n",
Expand All @@ -197,7 +204,10 @@
"outputs": [],
"source": [
"#| hide\n",
"#test_eq(_fetch_from_git(raise_err=True)['lib_name'], 'nbdev')"
"root = _git_root()\n",
"with tempfile.TemporaryDirectory(dir=root) as d, working_directory(d):\n",
" inf = _fetch_from_git(path='.')\n",
" test_is(inf.get('repo'), None)"
]
},
{
Expand Down Expand Up @@ -269,7 +279,7 @@
" path.mkdir(exist_ok=True, parents=True)\n",
" \n",
" # Infer from git if not provided\n",
" inf,ucfg = _fetch_from_git(),_user_config()\n",
" inf,ucfg = _fetch_from_git(path=path),_user_config()\n",
" repo = repo or inf.get('repo') or path.resolve().name\n",
" user = user or inf.get('user') or ucfg.get('user', '')\n",
" if not user: raise ValueError(\"Could not infer `user` from git. Please pass --user explicitly.\")\n",
Expand Down
1 change: 0 additions & 1 deletion nbs/api/13_cli.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,6 @@
" if name:\n",
" Path(name).mkdir(exist_ok=True)\n",
" os.chdir(name)\n",
" kwargs.setdefault('repo', name)\n",
" nbdev_create_config.__wrapped__(**kwargs)\n",
" cfg = get_config()\n",
" if (Path('.git')).exists(): await _update_repo_meta(cfg)\n",
Expand Down