Hi.

Motivation example:
$ git commit-mklog -a -b 'PR other/106370,PR other/12345'

Preserving a space from git gcc-mklog hook to contrib/mklog.py seems
pretty challenging. Thus I recommend preserving extra mklog args via
env where it's encoded in JSON format.

Thoughts?
Thanks,
Martin

contrib/ChangeLog:

        * git-commit-mklog.py: Do not parse -b argument.
        Pass mklog_args as json environment variable.
        * mklog.py: Parse GCC_MKLOG_ARGS and append it to sys.argv.
        * prepare-commit-msg: Do not append GCC_MKLOG_ARGS to args.
---
 contrib/git-commit-mklog.py | 9 +++++----
 contrib/mklog.py            | 5 +++++
 contrib/prepare-commit-msg  | 2 +-
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/contrib/git-commit-mklog.py b/contrib/git-commit-mklog.py
index eda3fc4a892..c7e90c8262f 100755
--- a/contrib/git-commit-mklog.py
+++ b/contrib/git-commit-mklog.py
@@ -24,6 +24,7 @@
 # to mklog.py script.
 
 import argparse
+import json
 import os
 import subprocess
 
@@ -32,8 +33,7 @@ if __name__ == '__main__':
     myenv = os.environ.copy()
 
     parser = argparse.ArgumentParser(description='git-commit-mklog wrapped')
-    parser.add_argument('-b', '--pr-numbers', action='store',
-                        type=lambda arg: arg.split(','), nargs='?',
+    parser.add_argument('-b', '--pr-numbers',
                         help='Add the specified PRs (comma separated)')
     parser.add_argument('-p', '--fill-up-bug-titles', action='store_true',
                         help='Download title of mentioned PRs')
@@ -44,12 +44,13 @@ if __name__ == '__main__':
     myenv['GCC_FORCE_MKLOG'] = '1'
     mklog_args = []
     if args.pr_numbers:
-        mklog_args.append(f'-b {",".join(args.pr_numbers)}')
+        mklog_args += ['-b', args.pr_numbers]
     if args.fill_up_bug_titles:
         mklog_args.append('-p')
 
     if mklog_args:
-        myenv['GCC_MKLOG_ARGS'] = ' '.join(mklog_args)
+        # wrap mklog arguments with JSON
+        myenv['GCC_MKLOG_ARGS'] = json.dumps(mklog_args)
 
     if args.co:
         for author in args.co.split(','):
diff --git a/contrib/mklog.py b/contrib/mklog.py
index cd5ef0bcc74..fe530ebf773 100755
--- a/contrib/mklog.py
+++ b/contrib/mklog.py
@@ -28,6 +28,7 @@
 
 import argparse
 import datetime
+import json
 import os
 import re
 import subprocess
@@ -336,6 +337,10 @@ def skip_line_in_changelog(line):
 
 
 if __name__ == '__main__':
+    extra_args = os.getenv('GCC_MKLOG_ARGS')
+    if extra_args:
+        sys.argv += json.loads(extra_args)
+
     parser = argparse.ArgumentParser(description=help_message)
     parser.add_argument('input', nargs='?',
                         help='Patch file (or missing, read standard input)')
diff --git a/contrib/prepare-commit-msg b/contrib/prepare-commit-msg
index 5da878458cd..969847df6f4 100755
--- a/contrib/prepare-commit-msg
+++ b/contrib/prepare-commit-msg
@@ -78,4 +78,4 @@ else
     tee="cat"
 fi
 
-git $cmd | $tee | git gcc-mklog $GCC_MKLOG_ARGS -c "$COMMIT_MSG_FILE"
+git $cmd | $tee | git gcc-mklog -c "$COMMIT_MSG_FILE"
-- 
2.37.1

Reply via email to