You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ko...@apache.org on 2022/01/26 03:04:51 UTC
[couchdb] 01/03: Remove emilio-related Python script
This is an automated email from the ASF dual-hosted git repository.
kocolosk pushed a commit to branch random-bits-of-cleanup
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit be33934271cce93ff2826e5efe03707cb7876be5
Author: Adam Kocoloski <ko...@apache.org>
AuthorDate: Tue Jan 25 20:14:57 2022 -0500
Remove emilio-related Python script
The Emilio style checker was removed in #3674.
---
bin/warnings_in_scope | 125 --------------------------------------------------
1 file changed, 125 deletions(-)
diff --git a/bin/warnings_in_scope b/bin/warnings_in_scope
deleted file mode 100755
index 2a85421..0000000
--- a/bin/warnings_in_scope
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/usr/bin/env python3
-import os
-import subprocess
-from pathlib import Path
-import optparse
-import sys
-import re
-
-def run(command, cwd=None):
- try:
- return subprocess.Popen(
- command, shell=True, cwd=cwd,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- except OSError as err:
- raise OSError("Error in command '{0}': {1}".format(command, err))
-
-def parse_location(line):
- # take substring between @@
- # take second part of it
- location = line.split(b'@@')[1].strip().split(b' ')[1]
- tokens = location.split(b',')
- if len(tokens) == 1:
- return (int(tokens[0][1:]), 1)
- elif len(tokens) == 2:
- return (int(tokens[0][1:]), int(tokens[1]))
-
-def changed_files(directory, scope):
- result = {}
- proc = run('git diff --no-prefix --unified={0}'.format(scope), cwd=str(directory))
- file_path = None
- for line in iter(proc.stdout.readline, b''):
- if line.startswith(b'diff --git '):
- # this would be problematic if directory has space in the name
- file_name = line.split(b' ')[3].strip()
- file_path = str(directory.joinpath(str(file_name, 'utf-8')))
- result[file_path] = set()
- continue
- if line.startswith(b'@@'):
- start_pos, number_of_lines = parse_location(line)
- for line_number in range(start_pos, start_pos + number_of_lines):
- result[file_path].add(line_number)
- return result
-
-def print_changed(file_name, line_number):
- print('{0}:{1}'.format(str(file_name), str(line_number)))
-
-def changes(dirs, scope):
- result = {}
- for directory in dirs:
- result.update(changed_files(directory, scope))
- return result
-
-def repositories(root):
- for directory in Path(root).rglob('.git'):
- if not directory.is_dir():
- continue
- yield directory.parent
-
-def setup_argparse():
- parser = optparse.OptionParser(description="Filter output to remove unrelated warning")
- parser.add_option(
- "-r",
- "--regexp",
- dest="regexp",
- default='(?P<file_name>[^:]+):(?P<line>\d+).*',
- help="Regexp used to extract file_name and line number",
- )
- parser.add_option(
- "-s",
- "--scope",
- dest="scope",
- default=0,
- help="Number of lines surrounding the change we consider relevant",
- )
- parser.add_option(
- "-p",
- "--print-only",
- action="store_true",
- dest="print_only",
- default=False,
- help="Print changed lines only",
- )
- return parser.parse_args()
-
-def filter_stdin(regexp, changes):
- any_matches = False
- for line in iter(sys.stdin.readline, ''):
- matches = re.match(regexp, line)
- if matches:
- file_name = matches.group('file_name')
- line_number = int(matches.group('line'))
- if file_name in changes and line_number in changes[file_name]:
- print(line, end='')
- any_matches = True
- return any_matches
-
-def validate_regexp(regexp):
- index = regexp.groupindex
- if 'file_name' in index and 'line' in index:
- return True
- else:
- raise TypeError("Regexp must define following groups:\n - file_name\n - line")
-
-def main():
- opts, args = setup_argparse()
- if opts.print_only:
- for file_name, changed_lines in changes(repositories('.'), opts.scope).items():
- for line_number in changed_lines:
- print_changed(file_name, line_number)
- return 0
- else:
- regexp = re.compile(opts.regexp)
- validate_regexp(regexp)
- if filter_stdin(regexp, changes(repositories('.'), opts.scope)):
- return 1
- else:
- return 0
-
-if __name__ == "__main__":
- try:
- sys.exit(main())
- except KeyboardInterrupt:
- pass
-