summaryrefslogtreecommitdiff
path: root/pbr/packaging.py
diff options
context:
space:
mode:
Diffstat (limited to 'pbr/packaging.py')
-rw-r--r--pbr/packaging.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/pbr/packaging.py b/pbr/packaging.py
index a55daed..02b741a 100644
--- a/pbr/packaging.py
+++ b/pbr/packaging.py
@@ -95,10 +95,14 @@ def _pip_install(links, requires, root=None, option_dict=dict()):
throw_on_error=True, buffer=False)
-def read_git_mailmap(git_dir, mailmap='.mailmap'):
- mailmap = os.path.join(git_dir, mailmap)
+def read_git_mailmap(root_dir=None, mailmap='.mailmap'):
+ if not root_dir:
+ root_dir = _run_shell_command('git rev-parse --show-toplevel')
+
+ mailmap = os.path.join(root_dir, mailmap)
if os.path.exists(mailmap):
return _parse_mailmap(open(mailmap, 'r').readlines())
+
return dict()
@@ -242,7 +246,7 @@ def write_git_changelog(git_dir=None, dest_dir=os.path.curdir,
if git_dir:
git_log_cmd = 'git --git-dir=%s log' % git_dir
changelog = _run_shell_command(git_log_cmd)
- mailmap = read_git_mailmap(git_dir)
+ mailmap = read_git_mailmap()
with open(new_changelog, "wb") as changelog_file:
changelog_file.write(canonicalize_emails(
changelog, mailmap).encode('utf-8'))
@@ -278,7 +282,7 @@ def generate_authors(git_dir=None, dest_dir='.', option_dict=dict()):
for signed in signed_entries.split("\n") if signed])
changelog = "\n".join((changelog, new_entries))
- mailmap = read_git_mailmap(git_dir)
+ mailmap = read_git_mailmap()
with open(new_authors, 'wb') as new_authors_fh:
if os.path.exists(old_authors):
with open(old_authors, "rb") as old_authors_fh:
@@ -427,11 +431,11 @@ _script_text = """# PBR Generated from %(group)r
import sys
-from %(module_name)s import %(func)s
+from %(module_name)s import %(import_target)s
if __name__ == "__main__":
- sys.exit(%(func)s())
+ sys.exit(%(invoke_target)s())
"""
@@ -441,10 +445,15 @@ def override_get_script_args(
header = easy_install.get_script_header("", executable, is_wininst)
for group in 'console_scripts', 'gui_scripts':
for name, ep in dist.get_entry_map(group).items():
+ if not ep.attrs or len(ep.attrs) > 2:
+ raise ValueError("Script targets must be of the form "
+ "'func' or 'Class.class_method'.")
script_text = _script_text % dict(
group=group,
module_name=ep.module_name,
- func=ep.attrs[0])
+ import_target=ep.attrs[0],
+ invoke_target='.'.join(ep.attrs),
+ )
yield (name, header+script_text)