mirror of
https://github.com/zulip/zulip.git
synced 2025-10-26 01:24:02 +00:00
This is preparatory refactoring work for being able to extract the linter as an external project called "zulint".
46 lines
2.2 KiB
Python
Executable File
46 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
from subprocess import check_call
|
|
from typing import List, Dict, Union
|
|
|
|
from zulint.lister import list_files
|
|
|
|
def do_replace(listing, old_string, new_string):
|
|
# type: (Union[Dict[str, List[str]], List[str]], str, str) -> None
|
|
for filename in listing:
|
|
regex = 's/{}/{}/g'.format(old_string, new_string)
|
|
check_call(['sed', '-i', regex, filename])
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description='Replace string in files')
|
|
parser.add_argument('old_string', help="String to replace")
|
|
parser.add_argument('new_string', help="String to replace with")
|
|
parser.add_argument('targets', nargs='*', default=[],
|
|
help='files and directories to include in the result. '
|
|
'If this is not specified, the current directory '
|
|
'is used')
|
|
parser.add_argument('-m', '--modified', action='store_true',
|
|
default=False, help='list only modified files')
|
|
parser.add_argument('-f', '--ftypes', nargs='+', default=[],
|
|
help='list of file types to filter on. All files are '
|
|
'included if this option is absent')
|
|
parser.add_argument('--ext-only', dest='extonly', action='store_true',
|
|
default=False,
|
|
help='only use extension to determine file type')
|
|
parser.add_argument('--exclude', nargs='+', default=[],
|
|
help='list of files and directories to exclude from '
|
|
'results, relative to repo root')
|
|
parser.add_argument('--extless-only', dest='extless_only',
|
|
action='store_true', default=False,
|
|
help='only include extensionless files in output')
|
|
args = parser.parse_args()
|
|
|
|
listing = list_files(targets=args.targets, ftypes=args.ftypes,
|
|
use_shebang=not args.extonly,
|
|
modified_only=args.modified,
|
|
exclude=args.exclude,
|
|
extless_only=args.extless_only)
|
|
|
|
do_replace(listing, args.old_string, args.new_string)
|