Update TN3270 host and port args to be compatible with x3270

This commit is contained in:
Andrew Kay
2023-01-02 11:09:49 -06:00
parent 564102dcf4
commit e33f46e15a

View File

@@ -86,6 +86,28 @@ def _create_session(args, device):
raise ValueError('Unsupported emulator')
def parse_tn3270_host_args(args, parser):
elements = args.host.rsplit(':', 1)
host = elements[0]
port = None
if len(elements) > 1:
try:
port = int(elements[1])
except ValueError:
parser.error(f'argument host: invalid port value: {elements[1]}')
if args.port is not None:
if port is None:
port = args.port
logger.info('The port argument is deprecated and will be removed in the future, use host:port instead.')
else:
logger.warning('The port argument is deprecated and will be removed in the future, port from host:port is being used.')
return (host, port if port is not None else 23)
def _signal_handler(number, frame):
global CONTROLLER
@@ -104,16 +126,17 @@ def main():
parser = argparse.ArgumentParser(description='IBM 3270 terminal controller')
parser.add_argument('serial_port', help='Serial port')
parser.add_argument('serial_port', help='serial port')
subparsers = parser.add_subparsers(dest='emulator', required=True,
description='Emulator')
description='emulator')
tn3270_parser = subparsers.add_parser('tn3270', description='TN3270 emulator',
help='TN3270 emulator')
tn3270_parser.add_argument('host', help='Hostname')
tn3270_parser.add_argument('port', nargs='?', default=23, type=int)
tn3270_parser.add_argument('host', metavar='host[:port]',
help='host and optional port')
tn3270_parser.add_argument('port', nargs='?', type=int, help=argparse.SUPPRESS)
tn3270_parser.add_argument('--codepage', metavar='encoding', default='ibm037',
dest='character_encoding', type=_get_character_encoding)
@@ -122,12 +145,15 @@ def main():
vt100_parser = subparsers.add_parser('vt100', description='VT100 emulator',
help='VT100 emulator')
vt100_parser.add_argument('command', help='Host process')
vt100_parser.add_argument('command', help='host process')
vt100_parser.add_argument('command_args', nargs=argparse.REMAINDER,
help='Host process arguments')
help='host process arguments')
args = parser.parse_args()
if args.emulator == 'tn3270':
(args.host, args.port) = parse_tn3270_host_args(args, parser)
create_device = lambda interface, device_address, poll_response: _create_device(args, interface, device_address, poll_response)
create_session = lambda device: _create_session(args, device)