github.com/okex/exchain@v1.8.0/libs/tendermint/scripts/release_management/zip-file.py (about)

     1  #!/usr/bin/env python
     2  
     3  # ZIP one file as "tendermint" into a ZIP like tendermint_VERSION_OS_ARCH.zip
     4  # Use environment variables CIRCLE_TAG, GOOS and GOARCH for easy input parameters.
     5  # Optimized for CircleCI
     6  
     7  import os
     8  import argparse
     9  import zipfile
    10  import hashlib
    11  
    12  
    13  BLOCKSIZE = 65536
    14  
    15  
    16  def zip_asset(file,destination,arcname,version,goos,goarch):
    17    filename = os.path.basename(file)
    18    output = "{0}/{1}_{2}_{3}_{4}.zip".format(destination,arcname,version,goos,goarch)
    19  
    20    with zipfile.ZipFile(output,'w') as f:
    21      f.write(filename=file,arcname=arcname)
    22      f.comment=filename
    23    return output
    24  
    25  
    26  if __name__ == "__main__":
    27    parser = argparse.ArgumentParser()
    28    parser.add_argument("--file", default="build/tendermint_{0}_{1}".format(os.environ.get('GOOS'),os.environ.get('GOARCH')), help="File to zip")
    29    parser.add_argument("--destination", default="build", help="Destination folder for files")
    30    parser.add_argument("--version", default=os.environ.get('CIRCLE_TAG'), help="Version number for binary, e.g.: v1.0.0")
    31    parser.add_argument("--goos", default=os.environ.get('GOOS'), help="GOOS parameter")
    32    parser.add_argument("--goarch", default=os.environ.get('GOARCH'), help="GOARCH parameter")
    33    args = parser.parse_args()
    34  
    35    if args.version is None:
    36      raise parser.error("argument --version is required")
    37    if args.goos is None:
    38      raise parser.error("argument --goos is required")
    39    if args.goarch is None:
    40      raise parser.error("argument --goarch is required")
    41  
    42    file = zip_asset(args.file,args.destination,"tendermint",args.version,args.goos,args.goarch)
    43    print(file)
    44