github.com/kaixiang/packer@v0.5.2-0.20140114230416-1f5786b0d7f1/scripts/dist.sh (about) 1 #!/bin/bash 2 set -e 3 4 # Get the parent directory of where this script is. 5 SOURCE="${BASH_SOURCE[0]}" 6 while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done 7 DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )" 8 9 # Change into that dir because we expect that 10 cd $DIR 11 12 # Determine the version that we're building based on the contents 13 # of packer/version.go. 14 VERSION=$(grep "const Version " packer/version.go | sed -E 's/.*"(.+)"$/\1/') 15 VERSIONDIR="${VERSION}" 16 PREVERSION=$(grep "const VersionPrerelease " packer/version.go | sed -E 's/.*"(.*)"$/\1/') 17 if [ ! -z $PREVERSION ]; then 18 PREVERSION="${PREVERSION}.$(date -u +%s)" 19 VERSIONDIR="${VERSIONDIR}-${PREVERSION}" 20 fi 21 22 # This function waits for all background tasks to complete 23 waitAll() { 24 RESULT=0 25 for job in `jobs -p`; do 26 wait $job 27 if [ $? -ne 0 ]; then 28 RESULT=1 29 fi 30 done 31 32 if [ $RESULT -ne 0 ]; then 33 exit $RESULT 34 fi 35 } 36 37 # Compile the main project 38 ./scripts/compile.sh 39 40 # Make sure that if we're killed, we kill all our subprocseses 41 trap "kill 0" SIGINT SIGTERM EXIT 42 43 # Zip all the packages 44 mkdir -p ./pkg/dist 45 for PLATFORM in $(find ./pkg -mindepth 1 -maxdepth 1 -type d); do 46 PLATFORM_NAME=$(basename ${PLATFORM}) 47 ARCHIVE_NAME="${VERSIONDIR}_${PLATFORM_NAME}" 48 49 if [ $PLATFORM_NAME = "dist" ]; then 50 continue 51 fi 52 53 ( 54 pushd ${PLATFORM} 55 zip ${DIR}/pkg/dist/${ARCHIVE_NAME}.zip ./* 56 popd 57 ) & 58 done 59 60 waitAll 61 62 # Make the checksums 63 pushd ./pkg/dist 64 shasum -a256 * > ./${VERSIONDIR}_SHA256SUMS 65 popd 66 67 exit 0