diff options
Diffstat (limited to 'bin/tools')
-rw-r--r-- | bin/tools/generate_authors.php | 36 | ||||
-rw-r--r-- | bin/tools/generate_authors.py | 47 |
2 files changed, 36 insertions, 47 deletions
diff --git a/bin/tools/generate_authors.php b/bin/tools/generate_authors.php new file mode 100644 index 000000000..18018686e --- /dev/null +++ b/bin/tools/generate_authors.php @@ -0,0 +1,36 @@ +<?php +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2016 + */ + +$cmd = 'git --no-pager shortlog -nse HEAD'; +exec($cmd, $contributors); + +// extract data from git output into an array +$regex = '/^\s*(?P<commit_count>\d+)\s*(?P<name>.*\w)\s*<(?P<email>[^\s]+)>$/'; +$contributors = array_map(function ($contributor) use ($regex) { + preg_match($regex, $contributor, $result); + return $result; +}, $contributors); + +// filter out bots +$contributors = array_filter($contributors, function ($contributor) { + return strpos($contributor['name'], 'Jenkins') !== 0; +}); + +// turn tuples into markdown +$markdownLines = array_map(function ($contrib) { + return '* [' . $contrib['name'] . '](mailto:' . $contrib['email'] . ')'; +}, $contributors); + +// add headline +array_unshift($markdownLines, '# Authors'); + +$markdown = implode("\n", $markdownLines); +file_put_contents('AUTHORS.md', $markdown); diff --git a/bin/tools/generate_authors.py b/bin/tools/generate_authors.py deleted file mode 100644 index 9354b9fec..000000000 --- a/bin/tools/generate_authors.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import re -import os.path - -contribs = subprocess.check_output(['git', '--no-pager', 'shortlog', '-nse', 'HEAD']) -contrib_lines = contribs.decode('utf-8').split('\n') - -format_regex = r'^\s*(?P<commit_count>\d+)\s*(?P<name>.*\w)\s*<(?P<email>[^\s]+)>$' - -def tuple_to_markdown(tuple): - return ('* [%s](mailto:%s)' % (tuple[0], tuple[1])) - -def line_to_tuple(line): - result = re.search(format_regex, line) - if result: - return ( - result.group('commit_count'), - result.group('name'), - result.group('email') - ) - else: - return () - -tuples = map(line_to_tuple, contrib_lines) -tuples = filter(lambda x: len(x) > 0, tuples) # filter out empty results -tuples = filter(lambda x: 'Jenkins' not in x[1], tuples) # filter out jenkins -#tuples = sorted(tuples, key=lambda x: x[0], reverse=True) -tuples = map(lambda x: (x[1], x[2]), tuples) -authors = map(tuple_to_markdown, tuples) -authors = '\n'.join(authors) - -header = '# Authors' -contents = '%s\n%s' % (header, authors) - -# write contents into contributors file -base_dir_diff = 2 -current_dir = os.path.dirname(os.path.realpath(__file__)) -base_dir = current_dir - -for x in range(base_dir_diff): - base_dir = os.path.join(base_dir, os.pardir) - -contributors_file = os.path.join(base_dir, 'AUTHORS.md') -with open(contributors_file, 'w') as f: - f.write(contents) |