summaryrefslogtreecommitdiff
path: root/utils/checkstyle.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/checkstyle.py')
-rwxr-xr-xutils/checkstyle.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index e7c3ae27..5ac14508 100755
--- a/utils/checkstyle.py
+++ b/utils/checkstyle.py
@@ -496,6 +496,26 @@ class StagedChanges(Commit):
stdout=subprocess.PIPE).stdout.decode('utf-8')
+class Amendment(StagedChanges):
+ def __init__(self):
+ StagedChanges.__init__(self)
+
+ def get_info(self):
+ # Create a title using HEAD commit
+ ret = subprocess.run(['git', 'show', '--pretty=oneline', '--no-patch'],
+ stdout=subprocess.PIPE).stdout.decode('utf-8')
+ title = 'Amendment of ' + ret.strip()
+ # Extract the list of modified files
+ ret = subprocess.run(['git', 'diff', '--staged', '--name-only', 'HEAD~'],
+ stdout=subprocess.PIPE).stdout.decode('utf-8')
+ return title, ret.splitlines()
+
+ def get_diff(self, top_level, filename):
+ return subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',
+ '%s/%s' % (top_level, filename)],
+ stdout=subprocess.PIPE).stdout.decode('utf-8')
+
+
def check_file(top_level, commit, filename):
# Extract the line numbers touched by the commit.
diff = commit.get_diff(top_level, filename)
@@ -628,6 +648,8 @@ def main(argv):
help='Code formatter. Default to clang-format if not specified.')
parser.add_argument('--staged', '-s', action='store_true',
help='Include the changes in the index. Defaults to False')
+ parser.add_argument('--amend', '-a', action='store_true',
+ help='Include changes in the index and the previous patch combined. Defaults to False')
parser.add_argument('revision_range', type=str, default=None, nargs='?',
help='Revision range (as defined by git rev-parse). Defaults to HEAD if not specified.')
args = parser.parse_args(argv[1:])
@@ -666,8 +688,10 @@ def main(argv):
commits = []
if args.staged:
commits.append(StagedChanges())
+ if args.amend:
+ commits.append(Amendment())
- # If not --staged
+ # If none of --staged or --amend was passed
if len(commits) == 0:
# And no revisions were passed, then default to HEAD
if not args.revision_range: