| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-16 16:25:42 -07:00
										 |  |  | # WARNING: FIREBASE_TOKEN should NOT be printed. | 
					
						
							|  |  |  | set +x -eu -o pipefail | 
					
						
							| 
									
										
										
										
											2017-06-15 10:10:28 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-22 16:47:53 -07:00
										 |  |  | readonly thisDir=$(cd $(dirname $0); pwd) | 
					
						
							| 
									
										
										
										
											2017-06-30 10:08:33 -07:00
										 |  |  | readonly parentDir=$(dirname $thisDir) | 
					
						
							| 
									
										
										
										
											2017-06-15 11:26:25 -07:00
										 |  |  | readonly TOKEN=${ANGULAR_PAYLOAD_FIREBASE_TOKEN:-} | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  | readonly PROJECT_NAME="angular-payload-size" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-30 10:08:33 -07:00
										 |  |  | source ${thisDir}/_payload-limits.sh | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | failed=false | 
					
						
							|  |  |  | payloadData="" | 
					
						
							|  |  |  | for filename in dist/*.bundle.js; do | 
					
						
							|  |  |  |   size=$(stat -c%s "$filename") | 
					
						
							|  |  |  |   label=$(echo "$filename" | sed "s/.*\///" | sed "s/\..*//") | 
					
						
							|  |  |  |   payloadData="$payloadData\"uncompressed/$label\": $size, " | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-06 21:12:51 -07:00
										 |  |  |   gzip -7 $filename -c >> "${filename}7.gz" | 
					
						
							|  |  |  |   size7=$(stat -c%s "${filename}7.gz") | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  |   payloadData="$payloadData\"gzip7/$label\": $size7, " | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-06 21:12:51 -07:00
										 |  |  |   gzip -9 $filename -c >> "${filename}9.gz" | 
					
						
							|  |  |  |   size9=$(stat -c%s "${filename}9.gz") | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  |   payloadData="$payloadData\"gzip9/$label\": $size9, " | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if [[ $size -gt ${limitUncompressed[$label]} ]]; then | 
					
						
							|  |  |  |     failed=true | 
					
						
							|  |  |  |     echo "Uncompressed $label size is $size which is greater than ${limitUncompressed[$label]}" | 
					
						
							|  |  |  |   elif [[ $size7 -gt ${limitGzip7[$label]} ]]; then | 
					
						
							|  |  |  |     failed=true | 
					
						
							|  |  |  |     echo "Gzip7 $label size is $size7 which is greater than ${limitGzip7[$label]}" | 
					
						
							|  |  |  |   elif [[ $size9 -gt ${limitGzip9[$label]} ]]; then | 
					
						
							|  |  |  |     failed=true | 
					
						
							|  |  |  |     echo "Gzip9 $label size is $size9 which is greater than ${limitGzip9[$label]}" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Add Timestamp | 
					
						
							|  |  |  | timestamp=$(date +%s) | 
					
						
							|  |  |  | payloadData="$payloadData\"timestamp\": $timestamp, " | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-15 10:10:28 -07:00
										 |  |  | # Add change source: application, dependencies, or 'application+dependencies' | 
					
						
							| 
									
										
										
										
											2017-06-16 18:21:45 -07:00
										 |  |  | yarnChanged=false | 
					
						
							| 
									
										
										
										
											2017-06-30 10:08:33 -07:00
										 |  |  | allChangedFiles=$(git diff --name-only $TRAVIS_COMMIT_RANGE $parentDir | wc -l) | 
					
						
							|  |  |  | allChangedFileNames=$(git diff --name-only $TRAVIS_COMMIT_RANGE $parentDir) | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-16 18:21:45 -07:00
										 |  |  | if [[ $allChangedFileNames == *"yarn.lock"* ]]; then | 
					
						
							|  |  |  |   yarnChanged=true | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ $allChangedFiles -eq 1 ]] && [[ "$yarnChanged" = true ]]; then | 
					
						
							|  |  |  |   # only yarn.lock changed | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  |   change='dependencies' | 
					
						
							| 
									
										
										
										
											2017-06-16 18:21:45 -07:00
										 |  |  | elif [[ $allChangedFiles -gt 1 ]] && [[ "$yarnChanged" = true ]]; then | 
					
						
							|  |  |  |   change='application+dependencies' | 
					
						
							|  |  |  | elif [[ $allChangedFiles -gt 0 ]]; then | 
					
						
							| 
									
										
										
										
											2017-06-15 11:26:25 -07:00
										 |  |  |   change='application' | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2017-06-22 10:14:09 -07:00
										 |  |  |   # Nothing changed in aio/ | 
					
						
							|  |  |  |   exit 0 | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  | fi | 
					
						
							|  |  |  | payloadData="$payloadData\"change\": \"$change\"" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | payloadData="{${payloadData}}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo $payloadData | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-15 11:26:25 -07:00
										 |  |  | if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then | 
					
						
							| 
									
										
										
										
											2017-06-30 17:12:59 +03:00
										 |  |  |   readonly safeBranchName=$(echo $TRAVIS_BRANCH | sed -e 's/\./_/g') | 
					
						
							|  |  |  |   readonly dbPath=/payload/aio/$safeBranchName/$TRAVIS_COMMIT | 
					
						
							|  |  |  |   firebase database:update --data "$payloadData" --project $PROJECT_NAME --confirm --token "$TOKEN" $dbPath | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-15 11:26:25 -07:00
										 |  |  | if [[ $failed = true ]]; then | 
					
						
							| 
									
										
										
										
											2017-05-23 17:20:56 -07:00
										 |  |  |   exit 1 | 
					
						
							|  |  |  | fi |