diff --git a/tools/zos/sdwrap.py b/tools/zos/sdwrap.py index 5253d945f40892..3c5af9d01f1efb 100755 --- a/tools/zos/sdwrap.py +++ b/tools/zos/sdwrap.py @@ -1,82 +1,68 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import argparse import sys def wrap(args): - l = args.input.readline(72) firstline = True - while l: - if l[-1] == '\n': + while (line := args.input.read(72)): + if line.endswith('\n'): if firstline: - outstr = "{}".format(l) + outstr = f"{line}" else: - outstr = " {}".format(l) + outstr = f" {line}" firstline = True - l = args.input.readline(72) else: if firstline: - outstr = "{:<71}*\n".format(l[:-1]) + outstr = f"{line:<71}*\n" firstline = False else: - outstr = " {:<70}*\n".format(l[:-1]) - l = l[-1] + args.input.readline(70) + outstr = f" {line:<70}*\n" + line = line[-1] + args.input.read(70) args.output.write(outstr) - return 0 def unwrap(args): - l = args.input.readline() firstline = True - while l: - if len(l) > 80: + for line in args.input: + if len(line) > 80: print("Error: input line invalid (longer than 80 characters)", file=sys.stderr) return 1 - if not firstline and l[0] != ' ': - print("Error: continuation line not start with blank", file=sys.stderr) + if not firstline and line[0] != ' ': + print("Error: continuation line does not start with a blank", file=sys.stderr) return 1 - if len(l) > 71 and l[71] == '*': + if len(line) > 71 and line[71] == '*': if firstline: - args.output.write(l[:71]) + args.output.write(line[:71]) firstline = False else: - args.output.write(l[1:71]) + args.output.write(line[1:71]) else: if firstline: - args.output.write(l) + args.output.write(line) else: - args.output.write(l[1:]) + args.output.write(line[1:]) firstline = True - l = args.input.readline() return 0 -def Main(): +def main(): parser = argparse.ArgumentParser(description="Wrap sidedeck source to card formats") - parser.add_argument("-u", "--unwrap", - help="Unwrap sidedeck cards to source formats instead", action="store_true", - default=False) - parser.add_argument("-i", "--input", help="input filename, default to stdin", - action="store", default=None) - parser.add_argument("-o", "--output", help="output filename, default to stdout", - action="store", default=None) + parser.add_argument("-u", "--unwrap", help="Unwrap sidedeck cards to source formats instead", action="store_true") + parser.add_argument("-i", "--input", help="Input filename, defaults to stdin", default=None) + parser.add_argument("-o", "--output", help="Output filename, defaults to stdout", default=None) args = parser.parse_args() - if args.input is None: - args.input = sys.stdin - else: - args.input = open(args.input, 'r') - - if args.output is None: - args.output = sys.stdout - else: - args.output = open(args.output, 'w') + with open(args.input, 'r') if args.input else sys.stdin as infile, \ + open(args.output, 'w') if args.output else sys.stdout as outfile: - if args.unwrap: - return unwrap(args) + args.input = infile + args.output = outfile - return wrap(args) + if args.unwrap: + return unwrap(args) + return wrap(args) if __name__ == '__main__': - sys.exit(Main()) + sys.exit(main())