| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | set -e | 
					
						
							|  |  |  | set +x | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-19 16:08:27 -08:00
										 |  |  | trap "cd $(pwd -P)" EXIT | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  | cd "$(dirname "$0")" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-22 13:35:35 -06:00
										 |  |  | source "./utils.sh" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  | if [[ ($1 == '--help') || ($1 == '-h') ]]; then | 
					
						
							| 
									
										
										
										
											2021-08-07 15:32:18 +03:00
										 |  |  |   echo "usage: $(basename "$0") [BLOB-PATH] [--check|ZIP-PATH]" | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |   echo | 
					
						
							| 
									
										
										
										
											2021-08-07 15:32:18 +03:00
										 |  |  |   echo "Upload ZIP-PATH to BLOB-PATH in 'builds' container." | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |   echo | 
					
						
							| 
									
										
										
										
											2019-11-21 15:25:46 -08:00
										 |  |  |   echo "--check      pass |--check| as a second parameter instead of a zip-path to check for" | 
					
						
							| 
									
										
										
										
											2022-02-01 16:09:41 -03:00
										 |  |  |   echo "             existence of BLOB-PATH" | 
					
						
							| 
									
										
										
										
											2019-11-21 15:25:46 -08:00
										 |  |  |   echo | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |   echo "NOTE: \$AZ_ACCOUNT_KEY (azure account name) and \$AZ_ACCOUNT_NAME (azure account name)" | 
					
						
							|  |  |  |   echo "env variables are required to upload builds to CDN." | 
					
						
							|  |  |  |   exit 0 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ (-z $AZ_ACCOUNT_KEY) || (-z $AZ_ACCOUNT_NAME) ]]; then | 
					
						
							|  |  |  |   echo "ERROR: Either \$AZ_ACCOUNT_KEY or \$AZ_ACCOUNT_NAME environment variable is missing." | 
					
						
							|  |  |  |   echo "       'Azure Account Name' and 'Azure Account Key' secrets that are required" | 
					
						
							|  |  |  |   echo "       to upload builds ot Azure CDN." | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-20 01:25:25 -07:00
										 |  |  | if [[ $# < 2 ]]; then | 
					
						
							|  |  |  |   echo "not enought arguments!" | 
					
						
							| 
									
										
										
										
											2021-08-07 15:32:18 +03:00
										 |  |  |   echo "try '$(basename "$0") --help' for more information" | 
					
						
							| 
									
										
										
										
											2019-11-20 18:01:07 -08:00
										 |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2020-01-17 14:23:31 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-20 01:25:25 -07:00
										 |  |  | BLOB_PATH="$1" | 
					
						
							|  |  |  | ZIP_PATH="$2" | 
					
						
							| 
									
										
										
										
											2020-01-17 14:23:31 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-20 01:25:25 -07:00
										 |  |  | if [[ ("$2" == '--check') ]]; then | 
					
						
							| 
									
										
										
										
											2021-08-07 15:32:18 +03:00
										 |  |  |   EXISTS=$(az storage blob exists -c builds --account-key "$AZ_ACCOUNT_KEY" --account-name "$AZ_ACCOUNT_NAME" -n "$BLOB_PATH" --query "exists") | 
					
						
							| 
									
										
										
										
											2019-11-21 15:25:46 -08:00
										 |  |  |   if [[ $EXISTS == "true" ]]; then | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-31 10:13:43 -07:00
										 |  |  | GENERATE_MD5_HASH=$(cat <<EOF | 
					
						
							|  |  |  |   const crypto = require('crypto'); | 
					
						
							|  |  |  |   const fs = require('fs'); | 
					
						
							|  |  |  |   const buffer = fs.readFileSync(process.argv[1]); | 
					
						
							|  |  |  |   console.log(crypto.createHash('md5').update(buffer).digest('base64')); | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MD5_HASH=$(node -e "${GENERATE_MD5_HASH}" "${ZIP_PATH}") | 
					
						
							|  |  |  | echo "MD5 hash: ${MD5_HASH}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-20 18:01:07 -08:00
										 |  |  | if ! [[ -f $ZIP_PATH ]]; then | 
					
						
							| 
									
										
										
										
											2020-04-20 02:38:13 -07:00
										 |  |  |   echo "ERROR: ${ZIP_PATH} does not exist" | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2020-04-20 02:38:13 -07:00
										 |  |  | if [[ "${ZIP_PATH}" != *.zip && "${ZIP_PATH}" != *.gz ]]; then | 
					
						
							|  |  |  |   echo "ERROR: ${ZIP_PATH} is not an archive (must have a .zip or .gz extension)" | 
					
						
							| 
									
										
										
										
											2019-11-20 18:01:07 -08:00
										 |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2022-04-22 13:35:35 -06:00
										 |  |  | if is_win; then | 
					
						
							| 
									
										
										
										
											2019-11-22 17:36:12 -08:00
										 |  |  |   # Convert POSIX path to MSYS | 
					
						
							| 
									
										
										
										
											2021-08-07 15:32:18 +03:00
										 |  |  |   WIN_PATH=$({ cd $(dirname "$ZIP_PATH") && pwd -W; } | sed 's|/|\\|g') | 
					
						
							|  |  |  |   WIN_PATH="${WIN_PATH}\\$(basename "$ZIP_PATH")" | 
					
						
							| 
									
										
										
										
											2022-01-31 10:13:43 -07:00
										 |  |  |   az storage blob upload -c builds --account-key "$AZ_ACCOUNT_KEY" --account-name "$AZ_ACCOUNT_NAME" -f "$WIN_PATH" -n "$BLOB_PATH" --content-md5 "${MD5_HASH}" | 
					
						
							| 
									
										
										
										
											2019-11-22 17:16:47 -08:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2022-01-31 10:13:43 -07:00
										 |  |  |   az storage blob upload -c builds --account-key "$AZ_ACCOUNT_KEY" --account-name "$AZ_ACCOUNT_NAME" -f "$ZIP_PATH" -n "$BLOB_PATH" --content-md5 "${MD5_HASH}" | 
					
						
							| 
									
										
										
										
											2019-11-22 17:16:47 -08:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2019-11-20 18:01:07 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-20 13:09:04 -06:00
										 |  |  | ZIP_SIZE=$(node -e 'console.log(Math.round(require("fs").statSync(process.argv[1]).size / 1024 / 1024) + "MB")' "${ZIP_PATH}") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-20 18:01:07 -08:00
										 |  |  | echo "UPLOAD SUCCESSFUL!" | 
					
						
							|  |  |  | echo "--  SRC: $ZIP_PATH" | 
					
						
							| 
									
										
										
										
											2022-04-20 13:09:04 -06:00
										 |  |  | echo "-- SIZE: $ZIP_SIZE" | 
					
						
							| 
									
										
										
										
											2019-11-20 18:01:07 -08:00
										 |  |  | echo "--  DST: $BLOB_PATH" | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  | 
 |