|
#!/usr/bin/env python
|
|
|
|
# ZIP one file as "tendermint" into a ZIP like tendermint_VERSION_OS_ARCH.zip
|
|
# Use environment variables CIRCLE_TAG, GOOS and GOARCH for easy input parameters.
|
|
# Optimized for CircleCI
|
|
|
|
import os
|
|
import argparse
|
|
import zipfile
|
|
import hashlib
|
|
|
|
|
|
BLOCKSIZE = 65536
|
|
|
|
|
|
def zip_asset(file,destination,arcname,version,goos,goarch):
|
|
filename = os.path.basename(file)
|
|
output = "{0}/{1}_{2}_{3}_{4}.zip".format(destination,arcname,version,goos,goarch)
|
|
|
|
with zipfile.ZipFile(output,'w') as f:
|
|
f.write(filename=file,arcname=arcname)
|
|
f.comment=filename
|
|
return output
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--file", default="build/tendermint_{0}_{1}".format(os.environ.get('GOOS'),os.environ.get('GOARCH')), help="File to zip")
|
|
parser.add_argument("--destination", default="build", help="Destination folder for files")
|
|
parser.add_argument("--version", default=os.environ.get('CIRCLE_TAG'), help="Version number for binary, e.g.: v1.0.0")
|
|
parser.add_argument("--goos", default=os.environ.get('GOOS'), help="GOOS parameter")
|
|
parser.add_argument("--goarch", default=os.environ.get('GOARCH'), help="GOARCH parameter")
|
|
args = parser.parse_args()
|
|
|
|
if args.version is None:
|
|
raise parser.error("argument --version is required")
|
|
if args.goos is None:
|
|
raise parser.error("argument --goos is required")
|
|
if args.goarch is None:
|
|
raise parser.error("argument --goarch is required")
|
|
|
|
file = zip_asset(args.file,args.destination,"tendermint",args.version,args.goos,args.goarch)
|
|
print(file)
|
|
|