commit:     4e45c5e9c03cda84ee6ab456ef69ed3b2a75ae43
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 17 06:00:38 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Sep 17 06:00:38 2019 +0000
URL:        https://gitweb.gentoo.org/proj/qa-scripts.git/commit/?id=4e45c5e9

Add a script to print newest commits for each package

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 pkg-newest-commit.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/pkg-newest-commit.py b/pkg-newest-commit.py
new file mode 100755
index 0000000..52372d4
--- /dev/null
+++ b/pkg-newest-commit.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+
+import argparse
+import glob
+import os
+import subprocess
+import sys
+
+
+def main(argv):
+    argp = argparse.ArgumentParser(prog=argv[0])
+    argp.add_argument('package', nargs='*',
+                      help='List of packages to find (defaults to all)')
+    args = argp.parse_args(argv[1:])
+
+    packages = set(args.package)
+    if not packages:
+        with open('profiles/categories') as f:
+            for cat in f:
+                packages.update(x.rstrip('/')
+                        for x in glob.glob('{}/*/'.format(cat.strip())))
+
+    excludes = frozenset([
+        # specify EAPI=0 explicitly
+        '4a409a1ecd75d064e8b471f6131bb1feb83c37a8',
+        # drop $id
+        '61b861acd7b49083dab687e133f30f3331cb7480',
+        # initial git commit
+        '56bd759df1d0c750a065b8c845e93d5dfa6b549d',
+    ])
+
+    os.environ['TZ'] = 'UTC'
+    s = subprocess.Popen(['git', 'log', '--date=iso-local', '--name-only',
+                          '--diff-filter=AM', '--no-renames',
+                          '--pretty=COMMIT|%H|%cd', '**.ebuild'],
+                         stdout=subprocess.PIPE)
+    for l in s.stdout:
+        l = l.decode('utf8').strip()
+        if l.startswith('COMMIT|'):
+            commit_data = l[7:]
+        elif l:
+            pkg = '/'.join(l.split('/', 2)[:2])
+            if pkg in packages:
+                commit, date = commit_data.split('|')
+                if commit in excludes:
+                    continue
+                print('{:.<65} {} {}'.format(pkg + ' ', date, commit))
+                packages.remove(pkg)
+                if not packages:
+                    break
+
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv))

Reply via email to