From b83c14a5a82de64992144f24d819b8421cc417cf Mon Sep 17 00:00:00 2001 From: Frederic Lepied Date: Thu, 22 Nov 2001 14:28:37 +0000 Subject: first version --- gprintify.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100755 gprintify.py (limited to 'gprintify.py') diff --git a/gprintify.py b/gprintify.py new file mode 100755 index 0000000..134e9ef --- /dev/null +++ b/gprintify.py @@ -0,0 +1,89 @@ +#!/usr/bin/python +#--------------------------------------------------------------- +# Project : Mandrake Linux +# Module : spec-helper +# File : gprintify.py +# Version : $Id$ +# Author : Frederic Lepied +# Created On : Tue Feb 6 18:39:14 2001 +# Purpose : rewrite "bla $TOTO bla" in "bla %s bla" $TOTO +# in echo/failure/success/passed/daemon/action +# and replqce echo by gprintf. +#--------------------------------------------------------------- + +import sys +import re + +echo_regex=re.compile('^(.*)echo +(-[en]+)?') +string_regex=re.compile('^(.*?)\$?"([^"]*?)"([^>\|\[\]]*|.*\|\|.*)$') +var_regex=re.compile('(\$[a-zA-Z0-9_{}]+(?:\[\$[a-zA-Z0-9_{}]+\])?}?)') +init_func_regex=re.compile('(.*(daemon|action|success|failure|passed)\s*.*)') + +def process_start(start): + res=echo_regex.findall(start) + if res: + if 'n' in res[0][1]: + return [res[0][0] + 'gprintf "', '"', ''] + else: + return [res[0][0] + 'gprintf "', '\\n"', ''] + res=init_func_regex.search(start) + if res: + return [res.group(0) + '"', '"', ''] + return None + +def process_vars(str, trail): + var_res=var_regex.findall(str) + if var_res: + ret=var_regex.sub('%s', str) + trail + for v in var_res: + ret = ret + ' ' + v + return ret + else: + return str + trail + +def process_line(line): + res=string_regex.findall(line) + if res: + res=res[0] + start=process_start(res[0]) + if not start: + return line + str=process_vars(res[1], start[1]) + if res[2][-1] == "\n": + end = res[2][:-1] + else: + end=res[2] + final=start[0] + str + start[2] + + res=string_regex.findall(end) + if res: + res=res[0] + start=process_start(res[0]) + if not start: + return final + end + '\n' + str=process_vars(res[1], start[1]) + end=res[2] + return final + start[0] + str + start[2] + end + '\n' + else: + return final + end + '\n' + else: + return line + +def process_file(filename): + fd=open(filename, 'r') + lines=fd.readlines() + fd.close() + + fd=open(filename, 'w') + for l in lines: + fd.write(process_line(l)) + fd.close() + +def main(args): + for f in args: + process_file(f) + +if __name__ == '__main__': + main(sys.argv[1:]) + +# gprintify.py ends here -- cgit v1.2.1