blob: 3ebd79f4af34293e7fb45392234b43cdbf3d110b [file] [log] [blame]
#!/usr/bin/env 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.
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
set -e
mkdir -p build
# Usage
if [[ $# -ne 1 ]]; then
echo "Usage: ./build.sh <website_output>" 1>&2
exit 3
fi
BUILD_OUTPUT_DIR="$1"
# The command call will fail, but that's OK because we're catching it.
set +e
DOT_EXEC="$(command -v dot)"
if [ "$?" -eq 0 ]; then
echo 'Re-generating SVGs'
set -e
# Generate the SVG, but use sed to inject the license header
"$DOT_EXEC" -Tsvg "$DIR"/static/lifecycle.dot | sed 's/ Generated by graphviz version/\
Licensed 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. See accompanying LICENSE file.\
-->\
<!-- Generated by graphviz version/' > "$DIR"/static/lifecycle.svg
else
echo "Cannot find executable 'dot', SVG's will not be regenerated. Install Graphviz to regenerate SVG's automatically"
fi
set -e
# RAT check
rat_version="0.13"
filename="apache-rat-${rat_version}-bin.tar.gz"
artifact="creadur/apache-rat-${rat_version}/${filename}"
if [ ! -f "$DIR/build/${filename}" ]; then
echo "RAT installation missing, download to build/"
curl -L --fail -o "${DIR}/build/${filename}" "https://www.apache.org/dyn/closer.lua?filename=${artifact}&action=download"
curl -L --fail -o "${DIR}/build/${filename}.sha512" "https://downloads.apache.org/${artifact}.sha512"
fi
if [ ! -d "$DIR/build/apache-rat-${rat_version}" ]; then
echo "Unpacked RAT installation missing, validating download RAT release using checksum"
pushd ${DIR}/build >/dev/null
gpg --print-md SHA512 ${filename} | diff ${filename}.sha512 -
if [[ $? -ne 0 ]]; then
echo "Failed to validate checksum of ${filename}"
# Cleanup before exiting to avoid this stuff hanging around that is untrusted
rm ${DIR}/build/${filename}
rm ${DIR}/build/${filename}.sha512
exit 2
fi
popd >/dev/null
# Only now is it safe to extract this
tar zxf build/${filename} -C build/
fi
echo "Running RAT license check"
output=$(java -jar $DIR/build/apache-rat-${rat_version}/apache-rat-${rat_version}.jar -d $DIR -E rat-excludes.txt)
if [[ ! $(echo "$output" | grep '0 Unknown Licenses') ]]; then
echo 'RAT check appears to have failed, inspect its output:'
echo "$output"
exit 1
else
echo "RAT check appears to have passed"
fi
# The command call will fail, but that's OK because we're catching it.
set +e
HUGO_EXEC="$(command -v hugo)"
if [ "$?" -ne 0 ]; then
echo "Please install hugo and put it to the path"
exit 1
fi
echo -e "\nBuilding website to ${BUILD_OUTPUT_DIR}"
"$HUGO_EXEC" -d "${BUILD_OUTPUT_DIR}"