summaryrefslogtreecommitdiffstats
path: root/keystone/openstack
diff options
context:
space:
mode:
authorBhuvan Arumugam <bhuvan@apache.org>2012-04-21 02:13:45 -0700
committerBhuvan Arumugam <bhuvan@apache.org>2012-04-30 07:40:48 -0700
commit6c3d9c42cc9f04ba99d89de7830675f6b59e2d25 (patch)
tree7f9eef1567879ddc70b4f3fbdce8102a199b9fe9 /keystone/openstack
parentd65147bda724d6b38df934686647284932c3c46f (diff)
downloadkeystone-6c3d9c42cc9f04ba99d89de7830675f6b59e2d25.tar.gz
keystone-6c3d9c42cc9f04ba99d89de7830675f6b59e2d25.tar.xz
keystone-6c3d9c42cc9f04ba99d89de7830675f6b59e2d25.zip
Auto generate AUTHORS file for keystone component.
Bug: 976267 Now that git commits are gated by CLA, we shouldn't enforce committers to add an entry in AUTHORS file. The AUTHORS file should be generated automatically, based on git commits. This commit fixes the problem. * AUTHORS Remove this file. * .gitignore Add AUTHORS file. * keystone/openstack/common/setup.py generate_authors(): New method to create AUTHORS file. If AUTHORS.in file exists, append it's content to AUTHORS file. * setup.py Import the new method. local_sdist.run(): Generate AUTHORS file before creating the package. * tests/test_authors.py Remove this test case. Change-Id: Id3ca59382e417d054d14f7735f30595bfbe2df48
Diffstat (limited to 'keystone/openstack')
-rw-r--r--keystone/openstack/common/setup.py28
1 files changed, 24 insertions, 4 deletions
diff --git a/keystone/openstack/common/setup.py b/keystone/openstack/common/setup.py
index 9eabfcca..231b3384 100644
--- a/keystone/openstack/common/setup.py
+++ b/keystone/openstack/common/setup.py
@@ -37,8 +37,8 @@ def parse_mailmap(mailmap='.mailmap'):
def canonicalize_emails(changelog, mapping):
- """ Takes in a string and an email alias mapping and replaces all
- instances of the aliases in the string with their real email
+ """Takes in a string and an email alias mapping and replaces all
+ instances of the aliases in the string with their real email.
"""
for alias, email in mapping.iteritems():
changelog = changelog.replace(alias, email)
@@ -97,7 +97,7 @@ def _run_shell_command(cmd):
def write_vcsversion(location):
- """ Produce a vcsversion dict that mimics the old one produced by bzr
+ """Produce a vcsversion dict that mimics the old one produced by bzr.
"""
if os.path.isdir('.git'):
branch_nick_cmd = 'git branch | grep -Ei "\* (.*)" | cut -f2 -d" "'
@@ -118,10 +118,30 @@ version_info = {
def write_git_changelog():
- """ Write a changelog based on the git changelog """
+ """Write a changelog based on the git changelog."""
if os.path.isdir('.git'):
git_log_cmd = 'git log --stat'
changelog = _run_shell_command(git_log_cmd)
mailmap = parse_mailmap()
with open("ChangeLog", "w") as changelog_file:
changelog_file.write(canonicalize_emails(changelog, mailmap))
+
+
+def generate_authors():
+ """Create AUTHORS file using git commits."""
+ jenkins_email = 'jenkins@review.openstack.org'
+ old_authors = 'AUTHORS.in'
+ new_authors = 'AUTHORS'
+ if os.path.isdir('.git'):
+ # don't include jenkins email address in AUTHORS file
+ git_log_cmd = "git log --format='%aN <%aE>' | sort -u | " \
+ "grep -v " + jenkins_email
+ changelog = _run_shell_command(git_log_cmd)
+ mailmap = parse_mailmap()
+ new_authors_fh = open(new_authors, "w")
+ new_authors_fh.write(canonicalize_emails(changelog, mailmap))
+ if os.path.exists(old_authors):
+ new_authors_fh.write("\n")
+ with open(old_authors, "r") as old_authors_fh:
+ new_authors_fh.write(''.join(old_authors_fh.readlines()))
+ new_authors_fh.close()