#!/usr/bin/python3 # =================================================================== # Enigma Machine Simulation - test enigma rotor # =================================================================== from EnigmaRotor import EnigmaRotor from EnigmaConfig import EnigmaConfig import user_interface as ui import os import sys # ------------------------------------------------------------------- # ---- main - test enigma rotor # ------------------------------------------------------------------- # ---- get configuration file configfile = 'enigma_config.csv' if len(sys.argv) > 1: configfile = sys.argv[1] if not os.path.exists(configfile): print() print(f'Can not find enigma configuration file ({configfile})') print() sys.exit() ec = EnigmaConfig('enigma_config.csv') keys = list(ec.rotors.keys()) rotor = EnigmaRotor(ec,'I',0) while True: print() rotor.display('------Initial configuration ---------',True) # ---- get rotor name while True: print() s1 = ui.get_user_input('Enter new rotor name: ') if not s1: sys.exit() if s1 not in keys: print() print(f'illegal rotor name ({s1})') print(f'legal names are {keys}') continue break # ---- get rotor start while True: print() s2 = ui.get_user_input('Enter new rotor start: ') if not s2: sys.exit() tf,x = ui.is_integer(s2) if not tf: sys.exit() if x < 0 or x >= ec.abclen: print() print(f'illegal rotor start ({s2})') print(f'start must be less than {ec.abclen}') continue break # ---- adjust rotor rotor.reset(s1,x) rotor.display('-----new rotor configurtion -----',True)