scripts/aws_deploy.py (52 lines of code) (raw):

import errno import os import shutil import subprocess import sys """Script to upload RapiD to S3 bucket Usage: python3 aws_deploy.py Assumptions: 1) You have the aws cli installed, and it can get access to credentials 1a) This can be anything specified here: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html 1b) For github actions, you should have AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY set as secrets, with AWS_DEFAULT_REGION in the environment 2) You have installed python 3. 3) You are running from within the iD directory. 4) Environment variable RAPID_S3_BUCKET_NAME is defined (default: world.ai.rapid) 5) Environment variable RAPID_WEB_ROOT is defined (default: https://mapwith.ai/) 6) Environment variable NODE_VERSION is defined See .github/workflows/build.yml for usage there """ def deploy(): print("Calculating build hash and distdir...") output = subprocess.run( ["git", "rev-parse", "--short", "HEAD"], capture_output=True ) hash = output.stdout.decode("utf-8").strip() print("\ngithash: " + hash) identifier = os.environ["IDENTIFIER"] distdir = os.environ["DISTDIR"] print("\ndistdir: " + distdir) # Blow away the previous dir, if any. if os.path.exists(distdir): print(f"Previous distribution dir {distdir} found, removing.") shutil.rmtree(distdir) print(f"\nCreating dist folder {distdir}") try: os.mkdir(distdir) except OSError as err: if err.errno == errno.EEXIST: print(f"{distdir} already exists") elif err.errno == errno.EACCES: print(f"{distdir} permission denied") raise print("\nCopying dist folder") subprocess.check_call(args=f"cp -a ./dist/* {distdir}", shell=True) print("\nPrepping rapid.html with correct asset, css, and javascript paths") index = "dist/index.html" newindex = os.path.join(distdir, "index.html") with open(index, "r") as input: with open(newindex, "w+") as output: # These directives aren't all necessary for the latest RapiD; some are useful in older versions of the index.html. for s in input: s = ( s.replace("dist/iD.css", f"/rapid/{distdir}/iD.css") .replace("'dist/iD.js'", f"'/rapid/{distdir}/iD.js'") .replace("'iD.js'", f"'/rapid/{distdir}/iD.js'") .replace("'dist/iD.legacy.js'", f"'/rapid/{distdir}/iD.legacy.js'") .replace( "var id = iD.coreContext();", f"var id = iD.coreContext().assetPath('/rapid/{distdir}/');", ) .replace(".assetPath('')", f".assetPath('/rapid/{distdir}/')") .replace("href='iD.css'", f"href='/rapid/{distdir}/iD.css'") .replace("'iD.min.js'", f"'/rapid/{distdir}/iD.min.js'") .replace("'iD.legacy.js'", f"'/rapid/{distdir}/iD.legacy.js'") ) output.write(s) if __name__ == "__main__": deploy()