docs: def main():
      """ Parses the command-line args, and calls run. """
      parser = argparse.ArgumentParser(
          description='A pipeline that generates analysis pipelines.')
      parser.add_argument('input', nargs='?',
                     help='A valid metapipe configuration file.')
      parser.add_argument('-o', '--output',
                     help='An output destination. If none is provided, the '
                     'results will be printed to stdout.',
                     default=sys.stdout)
      parser.add_argument('-t', '--temp',
                     help='A desired metapipe binary file. This is used to store '
                     'temp data between generation and execution. '
                     '(Default: "%(default)s")', default='.metapipe')
      parser.add_argument('-s', '--shell',
                     help='The path to the shell to be used when executing the '
                     'pipeline. (Default: "%(default)s)"',
                     default='/bin/bash')
      parser.add_argument('-r', '--run',
                     help='Run the pipeline as soon as it\'s ready.',
                     action='store_true')
      parser.add_argument('-n', '--name',
                     help='A name for the pipeline.',
                     default='')
      parser.add_argument('-j', '--job-type',
                     help='The destination for calculations (i.e. local, a PBS '
                     'queue on a cluster, etc).\nOptions: {}. '
                     '(Default: "%(default)s)"'.format(JOB_TYPES.keys()),
                     default='local')
      parser.add_argument('-p', '--max-jobs',
                     help='The maximum number of concurrent jobs allowed. '
                     'Defaults to maximum available cores.',
                     default=None)
      parser.add_argument('--report-type',
                     help='The output report type. By default metapipe will '
                     'print updates to the console. \nOptions: {}. '
                     '(Default: "%(default)s)"'.format(QUEUE_TYPES.keys()),
                     default='text')
      parser.add_argument('-v','--version',
                      help='Displays the current version of the application.',
                      action='store_true')
      args = parser.parse_args()
  
      if args.version:
          print('Version: {}'.format(__version__))
          sys.exit(0)
  
      try:
          with open(args.input) as f:
              config = f.read()
      except IOError:
          print('No valid config file found.')
          return -1
  
      run(config, args.max_jobs, args.output, args.job_type, args.report_type,
          args.shell, args.temp, args.run)