code: def run(self):
          
          client = None
  
          if self.cmd_args.subcommand in self.API_SUBCOMMAND:
              email, api_key = TagCubeCLI.get_credentials(self.cmd_args)
              client = TagCubeClient(email, api_key, verbose=self.cmd_args.verbose)
  
          subcommands = {'auth': do_auth_test,
                         'scan': do_scan_start,
                         'batch': do_batch_scan,
                         'version': do_version}
  
          try:
              subcommands.get(self.cmd_args.subcommand)(client, self.cmd_args)
  
          except ConnectionError, ce:
              msg = 'Failed to connect to TagCube REST API: "%s"'
              cli_logger.error(msg % ce)
              return 3
  
          except TagCubeAPIException, tae:
              cli_logger.error('%s' % tae)
              return 4
  
          return 0
docs: This method handles the user's command line arguments, for example, if
          the user specified a path file we'll open it and read the contents.
          Finally it will run the scan using TagCubeClient.scan(...)
  
          :return: The exit code for our process