NAME
  pyenigma.py - encrypt/decrypt text according to Enigma machine key settings
SYNOPSIS
  pyenigma.py [-h] [-k KEY_FILE] [-d DAY] [-r ROTOR [ROTOR ...]]
              [-i RING_SETTING [RING_SETTING ...]]
              [-p PLUGBOARD [PLUGBOARD ...]] [-u REFLECTOR] [-s START]
              [-t TEXT] [-f FILE] [-x REPLACE_CHAR] [-z] [-v]
DESCRIPTION
  pyenigma.py is a command line for processing Enigma messages.
  Enigma settings can either be specified by command-line arguments,
  or read from a key file. If reading from a key file, the line labeled
  with the current day number is used unless the --day argument is provided.

  Text to process can be supplied 3 ways:
    * if --text=TEXT is present TEXT is processed
    * if --file=FILE is present the contents of FILE are processed
    * otherwise the text is read from standard input

  Please see documentation for the description of the file format.
OPTIONS
  -h, --help                                                                            show this help message and exit
  -k KEY_FILE, --key-file KEY_FILE                                                      path to key file for daily settings
  -d DAY, --day DAY                                                                     use the settings for day DAY when reading key file
  -r ROTOR [ROTOR ...], --rotors ROTOR [ROTOR ...]                                      rotor list ordered from left to right; e.g III IV I
  -i RING_SETTING [RING_SETTING ...], --ring-settings RING_SETTING [RING_SETTING ...]   ring setting list from left to right; e.g. A A J
  -p PLUGBOARD [PLUGBOARD ...], --plugboard PLUGBOARD [PLUGBOARD ...]                   plugboard settings
  -u REFLECTOR, --reflector REFLECTOR                                                   reflector name
  -s START, --start START                                                               starting position
  -t TEXT, --text TEXT                                                                  text to process
  -f FILE, --file FILE                                                                  input file to process
  -x REPLACE_CHAR, --replace-char REPLACE_CHAR                                          if the input text contains chars not found on the
                                                                                        enigma keyboard, replace with this char [default: X]
  -z, --delete-chars                                                                    if the input text contains chars not found on the
                                                                                        enigma keyboard, delete them from the input
  -v, --verbose                                                                         provide verbose output; include final rotor positions

EXAMPLE
  Try these commands to specify settings from the command line:

    $ pyenigma.py \-r III IV V \-i 1 2 3 \-p AB CD EF GH IJ KL MN \-u B \-s XYZ
    $ pyenigma.py \-r Beta III IV V \-i A B C D \-p 1/2 3/4 5/6 \-u B\-Thin \-s WXYZ

  This command will load Enigma settings from a file:

    $ pyenigma.py \-\-key-file=enigma.keys \-s XYZ \-t HELLOXWORLDX

AUTHOR
  Brian Neal <bgneal@gmail.com>
