docs: def zipdir(path, ziph, **kwargs):
      """
      Zip up a directory.
  
      :param path:
      :param ziph:
      :param kwargs:
      :return:
      """
      str_arcroot = ""
      for k, v in kwargs.items():
          if k == 'arcroot':  str_arcroot = v
  
      for root, dirs, files in os.walk(path):
          for file in files:
              str_arcfile = os.path.join(root, file)
              if len(str_arcroot):
                  str_arcname = str_arcroot.split('/')[-1] + str_arcfile.split(str_arcroot)[1]
              else:
                  str_arcname = str_arcfile
              try:
                  ziph.write(str_arcfile, arcname = str_arcname)
              except:
                  print("Skipping %s" % str_arcfile)