code: def main(argv=None):
      
  
      import logging
  
      if argv is None:
          argv = sys.argv
  
      prs = get_option_parser()
      (opts, args) = prs.parse_args(args=argv)
  
      if not opts.quiet:
          _format = None
          _format = "%(levelname)s\t%(message)s"
          # _format = "%(message)s"
          logging.basicConfig(format=_format)
  
      log = logging.getLogger('repos')
  
      if opts.verbose:
          log.setLevel(logging.DEBUG)
      elif opts.quiet:
          log.setLevel(logging.ERROR)
      else:
          log.setLevel(logging.INFO)
      if not opts.scan:
          opts.scan = ['.']
  
      if opts.scan:
          # if not opts.reports:
          #     opts.reports = ['pip']
          if opts.reports or opts.thg_report:
              opts.reports = [s.strip().lower() for s in opts.reports]
              if 'thg' in opts.reports:
                  opts.thg_report = True
                  opts.reports.remove('thg')
              # repos = []
              # for _path in opts.scan:
              #     repos.extend(find_unique_repos(_path))
              log.debug("SCANNING PATHS: %s" % opts.scan)
              repos = chain(*imap(find_unique_repos, opts.scan))
  
              if opts.reports and opts.thg_report:
                  repos = list(repos)
                  # TODO: tee
  
              if opts.reports:
                  for report in opts.reports:
                      list(do_repo_report(repos, report=report))
              if opts.thg_report:
                  do_tortoisehg_report(repos, output=sys.stdout)
  
          else:
              opts.scan = '.'
              list(do_repo_report(
                  find_unique_repos(opts.scan),
                  report='sh'))
      return 0
docs: pyrpo.main: parse commandline options with optparse and run specified
      reports