diff options
Diffstat (limited to 'pbr/packaging.py')
-rw-r--r-- | pbr/packaging.py | 23 |
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) |