utils: checkstyle.py: Move commit handling to a separate section

To prepare for checkers that operate directly on commits, move the
related classes to a separate section. No functional change is included.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2020-12-24 12:34:55 +02:00
parent 86efa9c7e9
commit 097720840a

View file

@ -190,6 +190,68 @@ def parse_diff(diff):
return hunks
# ------------------------------------------------------------------------------
# Commit, Staged Changes & Amendments
#
class Commit:
def __init__(self, commit):
self.commit = commit
def get_info(self):
# Get the commit title and list of files.
ret = subprocess.run(['git', 'show', '--pretty=oneline', '--name-only',
self.commit],
stdout=subprocess.PIPE).stdout.decode('utf-8')
files = ret.splitlines()
# Returning title and files list as a tuple
return files[0], files[1:]
def get_diff(self, top_level, filename):
return subprocess.run(['git', 'diff', '%s~..%s' % (self.commit, self.commit),
'--', '%s/%s' % (top_level, filename)],
stdout=subprocess.PIPE).stdout.decode('utf-8')
def get_file(self, filename):
return subprocess.run(['git', 'show', '%s:%s' % (self.commit, filename)],
stdout=subprocess.PIPE).stdout.decode('utf-8')
class StagedChanges(Commit):
def __init__(self):
Commit.__init__(self, '')
def get_info(self):
ret = subprocess.run(['git', 'diff', '--staged', '--name-only'],
stdout=subprocess.PIPE).stdout.decode('utf-8')
return "Staged changes", ret.splitlines()
def get_diff(self, top_level, filename):
return subprocess.run(['git', 'diff', '--staged', '--',
'%s/%s' % (top_level, filename)],
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')
# ------------------------------------------------------------------------------
# Helpers
#
@ -564,64 +626,6 @@ class StripTrailingSpaceFormatter(Formatter):
# Style checking
#
class Commit:
def __init__(self, commit):
self.commit = commit
def get_info(self):
# Get the commit title and list of files.
ret = subprocess.run(['git', 'show', '--pretty=oneline', '--name-only',
self.commit],
stdout=subprocess.PIPE).stdout.decode('utf-8')
files = ret.splitlines()
# Returning title and files list as a tuple
return files[0], files[1:]
def get_diff(self, top_level, filename):
return subprocess.run(['git', 'diff', '%s~..%s' % (self.commit, self.commit),
'--', '%s/%s' % (top_level, filename)],
stdout=subprocess.PIPE).stdout.decode('utf-8')
def get_file(self, filename):
return subprocess.run(['git', 'show', '%s:%s' % (self.commit, filename)],
stdout=subprocess.PIPE).stdout.decode('utf-8')
class StagedChanges(Commit):
def __init__(self):
Commit.__init__(self, '')
def get_info(self):
ret = subprocess.run(['git', 'diff', '--staged', '--name-only'],
stdout=subprocess.PIPE).stdout.decode('utf-8')
return "Staged changes", ret.splitlines()
def get_diff(self, top_level, filename):
return subprocess.run(['git', 'diff', '--staged', '--',
'%s/%s' % (top_level, filename)],
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)