Manage your ASL charts, play aids and other documents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
asl-charts/make_release.py

61 lines
1.7 KiB

#!/usr/bin/env python3
import sys
import os
import stat
import subprocess
import zipfile
import getopt
# ---------------------------------------------------------------------
# parse the command-line options
output_fname = None
opts,args = getopt.getopt( sys.argv[1:], "o:", ["output="] )
for opt,val in opts:
if opt in ["-o","--output"]:
output_fname = val.strip()
else:
raise RuntimeError( "Unknown argument: {}".format( opt ) )
if not output_fname:
raise RuntimeError( "No output file was specified." )
if os.path.splitext( output_fname )[1] != ".zip":
raise RuntimeError( "Only ZIP files are supported." )
if os.path.isfile( output_fname ):
raise RuntimeError( "Output file exists." )
# initialize
os.chdir( os.path.split( __file__ )[0] )
# compile the program
print( "=== COMPILING ===" )
print()
proc = subprocess.run( [ "make", "clean", "all" ] )
print()
if proc.returncode != 0:
sys.exit( 1 )
# create the release
print( "=== CREATING RELEASE ===" )
print()
with zipfile.ZipFile( output_fname, "w" ) as zip_file:
# add the binaries
os.chdir( "out" )
for fname in os.listdir( "." ):
if os.path.splitext( fname )[1] == ".exe":
flags = os.stat( fname ).st_mode
os.chmod( fname, flags | stat.S_IEXEC )
zip_file.write( fname )
os.chdir( ".." )
# add the license
zip_file.write( "LICENSE.txt" )
# add the data/ and resources/ directories
for dname in ("data","resources"):
for root, dnames, fnames in os.walk( dname ):
for fname in fnames:
zip_file.write( os.path.join( root, fname ) )
# dump the generated release file
os.system( "ls -lh {}".format( output_fname ) )
print()
os.system( "unzip -l {}".format( output_fname ) )