code: def publish_proto_in_ipfs(ipfs_client, protodir):
      
      
      if (not os.path.isdir(protodir)):
          raise Exception("Directory %s doesn't exists"%protodir)
  
      files = glob.glob(os.path.join(protodir, "*.proto"))
  
      if (len(files) == 0):
          raise Exception("Cannot find any %s files"%(os.path.join(protodir, "*.proto")) )
  
      # We are sorting files before we add them to the .tar since an archive containing the same files in a different
      # order will produce a different content hash;
      files.sort()
          
      tarbytes  = io.BytesIO()        
      tar       = tarfile.open(fileobj=tarbytes, mode="w")
      for f in files:
          tar.add(f, os.path.basename(f))
      tar.close()
      return ipfs_client.add_bytes(tarbytes.getvalue())
docs: make tar from protodir/*proto, and publish this tar in ipfs
      return base58 encoded ipfs hash