def convert(): """ Perform file format conversion. """ import program import disk import error # set conversion output # first arg, if given, is mode; second arg, if given, is outfile mode = config.get('convert') infile = (config.get(0) or config.get('run') or config.get('load')) outfile = config.get(1) # keep uppercase first letter mode = mode[0].upper() if mode else 'A' # load & save in different format try: prog_infile = None if infile: prog_infile = open_native_or_dos_filename(infile) elif plat.has_stdin: # use StringIO buffer for seekability in_buffer = StringIO(sys.stdin.read()) prog_infile = disk.create_file_object(in_buffer, filetype='ABP', mode='I') if prog_infile: with prog_infile: program.load(prog_infile) prog_outfile = None if outfile: # on save from command-line, use exact file name prog_outfile = disk.create_file_object(open(outfile, 'wb'), filetype=mode, mode='O') elif plat.has_stdout: prog_outfile = disk.create_file_object(sys.stdout, filetype=mode, mode='O') if prog_outfile: with prog_outfile: program.save(prog_outfile) except error.RunError as e: logging.error(e.message) except EnvironmentError as e: logging.error(str(e))
def open_native_or_dos_filename(infile): """ If the specified file exists, open it; if not, try as DOS file name. """ import devices import disk import cassette import error try: # first try exact file name return disk.create_file_object(open(os.path.expandvars(os.path.expanduser(infile)), 'r'), filetype='BPA', mode='I') except EnvironmentError as e: # otherwise, accept capitalised versions and default extension return devices.open_file(0, infile, filetype='BPA', mode='I')
def convert(): """ Perform file format conversion. """ import program import disk import error # set conversion output # first arg, if given, is mode; second arg, if given, is outfile mode = config.get('convert') infile = (config.get(0) or config.get('run') or config.get('load')) outfile = config.get(1) # keep uppercase first letter mode = mode[0].upper() if mode else 'A' # load & save in different format try: prog_infile = None if infile: prog_infile = open_native_or_dos_filename(infile) elif plat.has_stdin: # use StringIO buffer for seekability in_buffer = StringIO(sys.stdin.read()) prog_infile = disk.create_file_object(in_buffer, filetype='ABP', mode='I') if prog_infile: with prog_infile: program.load(prog_infile) prog_outfile = None if outfile: # on save from command-line, use exact file name prog_outfile = disk.create_file_object(open(outfile, 'wb'), filetype=mode, mode='O') elif plat.has_stdout: prog_outfile = disk.create_file_object(sys.stdout, filetype=mode, mode='O') if prog_outfile: with prog_outfile: program.save(prog_outfile) except error.RunError as e: logging.error(error.get_message(e.err)) except EnvironmentError as e: logging.error(str(e))
def open_native_or_dos_filename(infile): """ If the specified file exists, open it; if not, try as DOS file name. """ import devices import disk import cassette import error try: # first try exact file name return disk.create_file_object(open( os.path.expandvars(os.path.expanduser(infile)), 'rb'), filetype='BPA', mode='I') except EnvironmentError as e: # otherwise, accept capitalised versions and default extension return devices.open_file(0, infile, filetype='BPA', mode='I')