docs: def main(params=None):
      """
      Main function to launch usufy.
  
      The function is created in this way so as to let other applications make
      use of the full configuration capabilities of the application. The
      parameters received are used as parsed by this modules `getParser()`.
  
      Args:
      -----
          params: A list with the parameters as grabbed by the terminal. It is
              None when this is called by an entry_point. If it is called by osrf
              the data is already parsed.
  
      Returns:
      --------
          A list of i3visio entities.
      """
      if params == None:
          parser = getParser()
          args = parser.parse_args(params)
      else:
          args = params
          
      results = []
  
      print(general.title(banner.text))
  
      sayingHello = """
       Searchfy | Copyright (C) Yaiza Rubio & Félix Brezo (i3visio) 2014-2018
  
  This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you
  are welcome to redistribute it under certain conditions. For additional info,
  visit <{}>.
  """.format(general.LICENSE_URL)
      print(general.info(sayingHello))
  
      if args.license:
          general.showLicense()
      else:
          # Showing the execution time...
          startTime= dt.datetime.now()
          print(str(startTime) + "\tStarting search in different platform(s)... Relax!\n")
          print(general.emphasis("\tPress <Ctrl + C> to stop...\n"))
          # Performing the search
          try:
              results = performSearch(platformNames=args.platforms, queries=args.queries, process=args.process, excludePlatformNames=args.exclude)
          except KeyboardInterrupt:
              print(general.error("\n[!] Process manually stopped by the user. Workers terminated without providing any result.\n"))
              results = []
  
          # Generating summary files for each ...
          if args.extension:
              # Verifying if the outputPath exists
              if not os.path.exists (args.output_folder):
                  os.makedirs(args.output_folder)
  
              # Grabbing the results
              fileHeader = os.path.join(args.output_folder, args.file_header)
  
              # Iterating through the given extensions to print its values
              for ext in args.extension:
                  # Generating output files
                  general.exportUsufy(results, ext, fileHeader)
  
          # Printing the results if requested
          now = dt.datetime.now()
          print("\n{}\tResults obtained:\n".format(str(now)))
          print(general.success(general.usufyToTextExport(results)))
  
          if args.web_browser:
              general.openResultsInBrowser(results)
  
          now = dt.datetime.now()
          print("\n{date}\tYou can find all the information collected in the following files:".format(date=str(now)))
          for ext in args.extension:
              # Showing the output files
              print("\t" + general.emphasis(fileHeader + "." + ext))
  
          # Showing the execution time...
          endTime= dt.datetime.now()
          print("\n{date}\tFinishing execution...\n".format(date=str(endTime)))
          print("Total time used:\t" + general.emphasis(str(endTime-startTime)))
          print("Average seconds/query:\t" + general.emphasis(str((endTime-startTime).total_seconds()/len(args.platforms))) +" seconds\n")
  
          # Urging users to place an issue on Github...
          print(banner.footer)
  
      if params:
          return results