diff options
Diffstat (limited to 'win32/replace.py')
-rw-r--r-- | win32/replace.py | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/win32/replace.py b/win32/replace.py deleted file mode 100644 index 3aeceb1f..00000000 --- a/win32/replace.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/python -# -# Simple utility script to manipulate -# certain types of strings in a file - -# This can be used in various projects where -# there is the need to replace strings in files, -# and is copied from GLib's $(srcroot)/win32 - -# Author: Fan, Chun-wei -# Date: September 03, 2014 - -import os -import sys -import re -import string -import argparse - -valid_actions = ['remove-prefix', - 'replace-var', - 'replace-str', - 'remove-str'] - -def open_file(filename, mode): - if sys.version_info[0] < 3: - return open(filename, mode=mode) - else: - return open(filename, mode=mode, encoding='utf-8') - -def replace_multi(src, dest, replace_items): - with open_file(src, 'r') as s: - with open_file(dest, 'w') as d: - for line in s: - replace_dict = dict((re.escape(key), value) \ - for key, value in replace_items.items()) - replace_pattern = re.compile("|".join(replace_dict.keys())) - d.write(replace_pattern.sub(lambda m: \ - replace_dict[re.escape(m.group(0))], line)) - -def replace(src, dest, instring, outstring): - replace_item = {instring: outstring} - replace_multi(src, dest, replace_item) - -def check_required_args(args, params): - for param in params: - if getattr(args, param, None) is None: - raise SystemExit('%s: error: --%s argument is required' % (__file__, param)) - -def warn_ignored_args(args, params): - for param in params: - if getattr(args, param, None) is not None: - print('%s: warning: --%s argument is ignored' % (__file__, param)) - -def main(argv): - - parser = argparse.ArgumentParser(description='Process strings in a file.') - parser.add_argument('-a', - '--action', - help='Action to carry out. Can be one of:\n' - 'remove-prefix\n' - 'replace-var\n' - 'replace-str\n' - 'remove-str', - choices=valid_actions) - parser.add_argument('-i', '--input', help='Input file') - parser.add_argument('-o', '--output', help='Output file') - parser.add_argument('--instring', help='String to replace or remove') - parser.add_argument('--var', help='Autotools variable name to replace') - parser.add_argument('--outstring', - help='New String to replace specified string or variable') - parser.add_argument('--removeprefix', help='Prefix of string to remove') - - args = parser.parse_args() - - input_string = '' - output_string = '' - - # We must have action, input, output for all operations - check_required_args(args, ['action','input','output']) - - # Build the arguments by the operation that is to be done, - # to be fed into replace() - - # Get rid of prefixes from a string - if args.action == 'remove-prefix': - check_required_args(args, ['instring','removeprefix']) - warn_ignored_args(args, ['outstring','var']) - input_string = args.removeprefix + args.instring - output_string = args.instring - - # Replace an m4-style variable (those surrounded by @...@) - if args.action == 'replace-var': - check_required_args(args, ['var','outstring']) - warn_ignored_args(args, ['instring','removeprefix']) - input_string = '@' + args.var + '@' - output_string = args.outstring - - # Replace a string - if args.action == 'replace-str': - check_required_args(args, ['instring','outstring']) - warn_ignored_args(args, ['var','removeprefix']) - input_string = args.instring - output_string = args.outstring - - # Remove a string - if args.action == 'remove-str': - check_required_args(args, ['instring']) - warn_ignored_args(args, ['var','outstring','removeprefix']) - input_string = args.instring - output_string = '' - - replace(args.input, args.output, input_string, output_string) - -if __name__ == '__main__': - sys.exit(main(sys.argv)) |