[libcamera-devel] [PATCH 3/8] utils: checkstyle.py: Move commit handling to a separate section

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Mon Dec 28 06:15:16 CET 2020


Hi Laurent,

On Thu, Dec 24, 2020 at 02:28:50PM +0200, Laurent Pinchart wrote:
> 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 at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  utils/checkstyle.py | 120 +++++++++++++++++++++++---------------------
>  1 file changed, 62 insertions(+), 58 deletions(-)
> 
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index 76267d5ea764..4ba65e5a4ff1 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -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)
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel


More information about the libcamera-devel mailing list