code: def run(args):
      
  
      repos = load_config(args.config, args.expand_env, args.force)
  
      jobs = max(args.jobs, 1)
      threads = []
      sem = threading.Semaphore(jobs)
      err_queue = Queue()
  
      for repo_dict in repos:
          if not err_queue.empty():
              break
  
          sem.acquire()
          r = Repo(**repo_dict)
          tname = os.path.basename(repo_dict['cwd'])
  
          if jobs > 1:
              t = threading.Thread(
                  target=aggregate_repo, args=(r, args, sem, err_queue))
              t.daemon = True
              t.name = tname
              threads.append(t)
              t.start()
          else:
              with ThreadNameKeeper():
                  threading.current_thread().name = tname
                  aggregate_repo(r, args, sem, err_queue)
  
      for t in threads:
          t.join()
  
      if not err_queue.empty():
          while True:
              try:
                  exc_type, exc_obj, exc_trace = err_queue.get_nowait()
              except EmptyQueue:
                  break
              traceback.print_exception(exc_type, exc_obj, exc_trace)
          sys.exit(1)
docs: Load YAML and JSON configs and run the command specified
      in args.command