blob: f2439a82837347ff68754f8f2b3f7f806aec4cab [file] [log] [blame]
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
if [ "$DEBUG" == 'true' ]; then
set -xe
else
set -e
fi
cd "${0%/*}"
VERSION=$(<VERSION.txt)
usage() {
echo "Usage: $0 {test|docs|dist|sign|clean|docker-test|podman-test|rat}"
exit 1
}
(( $# == 0 )) && usage
while (( "$#" ))
do
target="$1"
shift
case "$target" in
test)
(dotnet build --configuration Release Proton.sln)
(LANG=en_US.UTF-8 dotnet test --configuration Release --no-build Proton.sln)
;;
rat)
mvn apache-rat:check -pl :qpid-proton-dotnet
;;
docs)
# builds the docs for publication
if [[ -z "${DOCS_OUTPUT_DIR}" ]]; then
mkdir -p dist
DOC_DIR=dist/qpid-proton-dotnet-docs-$VERSION
rm -rf ${DOC_DIR}
else
DOC_DIR=${DOCS_OUTPUT_DIR}
fi
# build documentation
(env DOXYGEN_OUTPUT_PATH=${DOC_DIR} doxygen Proton.dox)
cp README.md LICENSE NOTICE ${DOC_DIR}
echo "Wrote documentation to directory: $DOC_DIR"
;;
dist)
# build source tarball for upload to apache dist staging
mkdir -p dist
SRC_DIR=qpid-proton-dotnet-src-$VERSION
BIN_DIR=qpid-proton-dotnet-bin-$VERSION
DOC_DIR=qpid-proton-dotnet-docs-$VERSION
rm -rf "dist/${SRC_DIR}"
rm -rf "dist/${BIN_DIR}"
rm -rf "dist/${DOC_DIR}"
rm -rf "dist/${VERSION}"
if [ -d .git ]; then
mkdir -p "dist/${SRC_DIR}"
mkdir -p "dist/${BIN_DIR}"
mkdir -p "dist/${DOC_DIR}"
mkdir -p "dist/${VERSION}"
git archive HEAD | tar -x -C "dist/${SRC_DIR}"
else
echo "Not a GIT repo .. cannot continue"
exit 255
fi
# runs RAT on artifacts
mvn -N apache-rat:check
(cd dist; tar czf "../dist/${VERSION}/${SRC_DIR}.tar.gz" "${SRC_DIR}")
# pack NuGet packages
dotnet pack --configuration Release Proton.sln
# Move binary artifacts to dist lib folder
mkdir -p "dist/${BIN_DIR}/lib"
cp -R src/Proton/bin/Release/* dist/${BIN_DIR}/lib/
cp -R src/Proton.Client/bin/Release/* dist/${BIN_DIR}/lib/
# add the binary LICENSE and NOTICE to the tarball
cp README.md LICENSE NOTICE dist/${BIN_DIR}
(cd dist; tar czf "../dist/${VERSION}/${BIN_DIR}.tar.gz" "${BIN_DIR}")
# build documentation release archive
(env DOXYGEN_OUTPUT_PATH="dist/${DOC_DIR}" doxygen Proton.dox)
cp README.md LICENSE NOTICE dist/${DOC_DIR}
(cd dist; tar czf "../dist/${VERSION}/${DOC_DIR}.tar.gz" "${DOC_DIR}")
;;
sign)
set +x
echo -n "Enter password: "
stty -echo
read -r password
stty echo
for f in $(find dist//${VERSION} -type f \
\! -name '*.sha512' \! -name '*.sha256' \
\! -name '*.asc' \! -name '*.txt' \
-name '*.tar.gz');
do
(cd "${f%/*}" && shasum -a 512 "${f##*/}") > "$f.sha512"
gpg --passphrase "$password" --armor --output "$f.asc" --detach-sig "$f"
done
set -x
;;
clean)
dotnet clean
rm -rf src/{Proton,Proton.Client,Proton.TestPeer}/{obj,bin}
rm -rf test/{Proton.Tests,Proton.Client.Tests,Proton.TestPeer.Tests}/{obj,bin}
rm -rf dist
rm -rf target
;;
docker-test)
tar -cf- docker/Dockerfile |
docker build -t proton-test -f docker/Dockerfile -
docker run --rm -v "${PWD}:/proton${DOCKER_MOUNT_FLAG}" -w "/proton" --env "JAVA=${JAVA:-11}" proton-test /proton/docker/run-tests.sh
;;
podman-test)
tar -cf- docker/Dockerfile |
podman build -t proton-test -f docker/Dockerfile -
podman run --rm -v "${PWD}:/proton${DOCKER_MOUNT_FLAG}:Z,U" -w "/proton" --env "JAVA=${JAVA:-11}" proton-test /proton/docker/run-tests.sh
;;
*)
usage
;;
esac
done