docs: def main(arguments=None):
      """
      *The main function used when ``cl_utils.py`` is run as a single script from the cl, or when installed as a cl command*
      """
      # setup the command-line util settings
      su = tools(
          arguments=arguments,
          docString=__doc__,
          logLevel="WARNING",
          options_first=False,
          projectName="transientNamer"
      )
      arguments, settings, log, dbConn = su.setup()
  
      # tab completion for raw_input
      readline.set_completer_delims(' \t\n;')
      readline.parse_and_bind("tab: complete")
      readline.set_completer(tab_complete)
  
      # unpack remaining cl arguments using `exec` to setup the variable names
      # automatically
      for arg, val in arguments.iteritems():
          if arg[0] == "-":
              varname = arg.replace("-", "") + "Flag"
          else:
              varname = arg.replace("<", "").replace(">", "")
          if isinstance(val, str) or isinstance(val, unicode):
              exec(varname + " = '%s'" % (val,))
          else:
              exec(varname + " = %s" % (val,))
          if arg == "--dbConn":
              dbConn = val
          log.debug('%s = %s' % (varname, val,))
  
      ## START LOGGING ##
      startTime = times.get_now_sql_datetime()
      log.info(
          '--- STARTING TO RUN THE cl_utils.py AT %s' %
          (startTime,))
  
      if search or new or cone:
          if ra:
              tns = transientNamer.search(
                  log=log,
                  ra=ra,
                  dec=dec,
                  radiusArcsec=arcsecRadius,
                  comments=withCommentsFlag
              )
          if name:
              tns = transientNamer.search(
                  log=log,
                  name=name,
                  comments=withCommentsFlag
              )
          if discInLastDays:
              tns = transientNamer.search(
                  log=log,
                  discInLastDays=discInLastDays,
                  comments=withCommentsFlag
              )
  
          # Recursively create missing directories
          if outputFlag and not os.path.exists(outputFlag):
              os.makedirs(outputFlag)
  
          if tableNamePrefix:
              sources, phot, spec, files = tns.mysql(
                  tableNamePrefix=tableNamePrefix, dirPath=outputFlag)
              numSources = len(sources.split("\n")) - 1
          elif not render or render == "table":
              sources, phot, spec, files = tns.table(dirPath=outputFlag)
              numSources = len(sources.split("\n")) - 4
          elif render == "csv":
              sources, phot, spec, files = tns.csv(dirPath=outputFlag)
              numSources = len(sources.split("\n")) - 1
          elif render == "json":
              sources, phot, spec, files = tns.json(dirPath=outputFlag)
              numSources = len(sources.split("{")) - 1
          elif render == "yaml":
              sources, phot, spec, files = tns.yaml(dirPath=outputFlag)
              numSources = len(sources.split("\n-"))
          elif render == "markdown":
              sources, phot, spec, files = tns.markdown(dirPath=outputFlag)
              numSources = len(sources.split("\n")) - 2
  
          if numSources == 1:
              print "%(numSources)s transient found" % locals()
          elif numSources > 1:
              print "%(numSources)s transients found" % locals()
  
          if not outputFlag:
              print "\n# Matched Transients"
              print sources
              print "\n# Transient Photometry"
              print phot
              print "\n# Transient Spectra"
              print spec
              print "\n# Transient Supplementary Files"
              print files
              print "\n# Original TNS Search URL"
              print tns.url
          # CALL FUNCTIONS/OBJECTS
  
      if "dbConn" in locals() and dbConn:
          dbConn.commit()
          dbConn.close()
      ## FINISH LOGGING ##
      endTime = times.get_now_sql_datetime()
      runningTime = times.calculate_time_difference(startTime, endTime)
      log.info('-- FINISHED ATTEMPT TO RUN THE cl_utils.py AT %s (RUNTIME: %s) --' %
               (endTime, runningTime, ))
  
      return