123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #!/bin/bash
- BUILD_TARGET=""
- BUILD_FEATURES=()
- while getopts "t:f:" opt; do
- case $opt in
- t)
- BUILD_TARGET=$OPTARG
- ;;
- f)
- BUILD_FEATURES+=($OPTARG)
- ;;
- ?)
- echo "Usage: $(basename $0) [-t <target-triple>] [-f <feature>]"
- ;;
- esac
- done
- BUILD_FEATURES+=${BUILD_EXTRA_FEATURES}
- ROOT_DIR=$( cd $( dirname $0 ) && pwd )
- VERSION=$(grep -E '^version' "${ROOT_DIR}/../Cargo.toml" | awk '{print $3}' | sed 's/"//g')
- HOST_TRIPLE=$(rustc -Vv | grep 'host:' | awk '{print $2}')
- echo "Started build release ${VERSION} for ${HOST_TRIPLE} (target: ${BUILD_TARGET}) with features \"${BUILD_FEATURES}\"..."
- if [[ "${BUILD_TARGET}" != "" ]]; then
- if [[ "${BUILD_FEATURES}" != "" ]]; then
- cargo build --release --features "${BUILD_FEATURES}" --target "${BUILD_TARGET}"
- else
- cargo build --release --target "${BUILD_TARGET}"
- fi
- else
- if [[ "${BUILD_FEATURES}" != "" ]]; then
- cargo build --release --features "${BUILD_FEATURES}"
- else
- cargo build --release
- fi
- fi
- if [[ "$?" != "0" ]]; then
- exit 1;
- fi
- if [[ "${BUILD_TARGET}" == "" ]]; then
- BUILD_TARGET=$HOST_TRIPLE
- fi
- TARGET_SUFFIX=""
- if [[ "${BUILD_TARGET}" == *"-windows-"* ]]; then
- TARGET_SUFFIX=".exe"
- fi
- TARGET="good-mitm${TARGET_SUFFIX}"
- RELEASE_FOLDER="${ROOT_DIR}/release"
- RELEASE_PACKAGE_NAME="good-mitm-${VERSION}-${BUILD_TARGET}"
- mkdir -p "${RELEASE_FOLDER}"
- # Into release folder
- if [[ "${BUILD_TARGET}" != "" ]]; then
- cd "${ROOT_DIR}/../target/${BUILD_TARGET}/release"
- else
- cd "${ROOT_DIR}/../target/release"
- fi
- if [[ "${BUILD_TARGET}" == *"-windows-"* ]]; then
- # For Windows, use zip
- RELEASE_PACKAGE_FILE_NAME="${RELEASE_PACKAGE_NAME}.zip"
- RELEASE_PACKAGE_FILE_PATH="${RELEASE_FOLDER}/${RELEASE_PACKAGE_FILE_NAME}"
- zip "${RELEASE_PACKAGE_FILE_PATH}" "${TARGET}"
- if [[ $? != "0" ]]; then
- exit 1
- fi
- # Checksum
- cd "${RELEASE_FOLDER}"
- shasum -a 256 "${RELEASE_PACKAGE_FILE_NAME}" > "${RELEASE_PACKAGE_FILE_NAME}.sha256"
- else
- # For others, Linux, OS X, uses tar.xz
- # For Darwin, .DS_Store and other related files should be ignored
- if [[ "$(uname -s)" == "Darwin" ]]; then
- export COPYFILE_DISABLE=1
- fi
- RELEASE_PACKAGE_FILE_NAME="${RELEASE_PACKAGE_NAME}.tar.xz"
- RELEASE_PACKAGE_FILE_PATH="${RELEASE_FOLDER}/${RELEASE_PACKAGE_FILE_NAME}"
- tar -cJf "${RELEASE_PACKAGE_FILE_PATH}" "${TARGET}"
- if [[ $? != "0" ]]; then
- exit 1
- fi
- # Checksum
- cd "${RELEASE_FOLDER}"
- shasum -a 256 "${RELEASE_PACKAGE_FILE_NAME}" > "${RELEASE_PACKAGE_FILE_NAME}.sha256"
- fi
- echo "Finished build release ${RELEASE_PACKAGE_FILE_PATH}"
|