| 
									
										
										
										
											2019-10-22 16:57:13 +03:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | set -eu -o pipefail | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-21 14:04:45 +02:00
										 |  |  | readonly safeBranchName="$(echo $1 | sed 's/^pull\//pr/' | sed 's/[^A-Za-z0-9_.-]/_/g')" | 
					
						
							|  |  |  | readonly shortLastSha="$(git rev-parse --short $2)" | 
					
						
							| 
									
										
										
										
											2019-10-22 16:57:13 +03:00
										 |  |  | readonly inputDir="$PROJECT_ROOT/$3" | 
					
						
							|  |  |  | readonly outputDir="$PROJECT_ROOT/$4" | 
					
						
							| 
									
										
										
										
											2019-11-21 14:04:45 +02:00
										 |  |  | readonly fileSuffix="-$safeBranchName-$shortLastSha.tgz" | 
					
						
							| 
									
										
										
										
											2019-10-22 16:57:13 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | echo "Creating compressed archives for packages in '$inputDir'." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Create or clean-up the output directory. | 
					
						
							|  |  |  | echo "  Preparing output directory: $outputDir" | 
					
						
							|  |  |  | rm -rf "$outputDir" | 
					
						
							|  |  |  | mkdir -p "$outputDir" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-11 16:55:16 +02:00
										 |  |  | # If there are more than one packages in `$inputDir`... | 
					
						
							|  |  |  | if [[ $(ls -1 "$inputDir" | wc -l) -gt 1 ]]; then | 
					
						
							|  |  |  |   # Create a compressed archive containing all packages. | 
					
						
							|  |  |  |   # (This is useful for copying all packages into `node_modules/` (without changing `package.json`).) | 
					
						
							|  |  |  |   outputFileName=all$fileSuffix | 
					
						
							|  |  |  |   echo "  Creating archive with all packages --> '$outputFileName'..." | 
					
						
							|  |  |  |   tar --create --gzip --directory "$inputDir" --file "$outputDir/$outputFileName" --transform s/^\./packages/ . | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2019-10-22 16:57:13 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Create a compressed archive for each package. | 
					
						
							|  |  |  | # (This is useful for referencing the path/URL to the resulting archive in `package.json`.) | 
					
						
							|  |  |  | for dir in $inputDir/* | 
					
						
							|  |  |  | do | 
					
						
							|  |  |  |   packageName=`basename "$dir"` | 
					
						
							|  |  |  |   outputFileName="$packageName$fileSuffix" | 
					
						
							|  |  |  |   outputFilePath="$outputDir/$outputFileName" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "  Processing package '$packageName' --> '$outputFileName'..." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   tar --create --gzip --directory "$dir" --file "$outputFilePath" --transform s/^\./package/ . | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo "Done creating compressed archives." |