mirror of https://github.com/rwf2/Rocket.git
Properly handle paths with spaces in shell scripts.
This commit is contained in:
parent
b5c2187249
commit
2d72928ba1
|
@ -1,11 +1,11 @@
|
||||||
#! /usr/bin/env bash
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
SCRIPT_PATH=$(cd "$(dirname "$0")" ; pwd -P)
|
SCRIPT_PATH=$(cd "$(dirname "$0")" ; pwd -P)
|
||||||
DATABASE_URL=${SCRIPT_PATH}/db/db.sql
|
DATABASE_URL="${SCRIPT_PATH}/db/db.sql"
|
||||||
|
|
||||||
pushd $SCRIPT_PATH > /dev/null
|
pushd "${SCRIPT_PATH}" > /dev/null
|
||||||
# clear an existing database
|
# clear an existing database
|
||||||
rm -f $DATABASE_URL
|
rm -f "${DATABASE_URL}"
|
||||||
|
|
||||||
# install the diesel CLI tools if they're not installed
|
# install the diesel CLI tools if they're not installed
|
||||||
if ! command -v diesel >/dev/null 2>&1; then
|
if ! command -v diesel >/dev/null 2>&1; then
|
||||||
|
@ -13,7 +13,7 @@ pushd $SCRIPT_PATH > /dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# create db/db.sql
|
# create db/db.sql
|
||||||
diesel migration --database-url=$DATABASE_URL run > /dev/null
|
diesel migration --database-url="${DATABASE_URL}" run > /dev/null
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
|
||||||
echo "export DATABASE_URL=$DATABASE_URL"
|
echo "export DATABASE_URL=\"${DATABASE_URL}\""
|
||||||
|
|
|
@ -7,12 +7,12 @@ set -e
|
||||||
|
|
||||||
# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
|
# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
source $SCRIPT_DIR/config.sh
|
source "${SCRIPT_DIR}/config.sh"
|
||||||
|
|
||||||
function mk_doc() {
|
function mk_doc() {
|
||||||
local dir=$1
|
local dir=$1
|
||||||
local flag=$2
|
local flag=$2
|
||||||
pushd $dir > /dev/null 2>&1
|
pushd "${dir}" > /dev/null 2>&1
|
||||||
echo ":: Documenting '${dir}'..."
|
echo ":: Documenting '${dir}'..."
|
||||||
cargo doc --no-deps --all-features
|
cargo doc --no-deps --all-features
|
||||||
popd > /dev/null 2>&1
|
popd > /dev/null 2>&1
|
||||||
|
@ -22,9 +22,9 @@ function mk_doc() {
|
||||||
cargo clean
|
cargo clean
|
||||||
cargo update
|
cargo update
|
||||||
|
|
||||||
mk_doc $LIB_DIR
|
mk_doc "${LIB_DIR}"
|
||||||
mk_doc $CODEGEN_DIR
|
mk_doc "${CODEGEN_DIR}"
|
||||||
mk_doc $CONTRIB_DIR
|
mk_doc "${CONTRIB_DIR}"
|
||||||
|
|
||||||
# Blank index, for redirection.
|
# Blank index, for redirection.
|
||||||
touch ${DOC_DIR}/index.html
|
touch "${DOC_DIR}/index.html"
|
||||||
|
|
|
@ -7,7 +7,7 @@ set -e
|
||||||
|
|
||||||
# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
|
# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
source $SCRIPT_DIR/config.sh
|
source "${SCRIPT_DIR}/config.sh"
|
||||||
|
|
||||||
if ! [ -z "$(git status --porcelain)" ]; then
|
if ! [ -z "$(git status --porcelain)" ]; then
|
||||||
echo "There are uncommited changes! Aborting."
|
echo "There are uncommited changes! Aborting."
|
||||||
|
@ -17,14 +17,14 @@ fi
|
||||||
# Ensure everything passes before trying to publish.
|
# Ensure everything passes before trying to publish.
|
||||||
echo ":::: Running test suite..."
|
echo ":::: Running test suite..."
|
||||||
cargo clean
|
cargo clean
|
||||||
${SCRIPT_DIR}/test.sh
|
bash "${SCRIPT_DIR}/test.sh"
|
||||||
|
|
||||||
# Temporarily remove the dependency on codegen from core so crates.io verifies.
|
# Temporarily remove the dependency on codegen from core so crates.io verifies.
|
||||||
sed -i.bak 's/rocket_codegen.*//' ${LIB_DIR}/Cargo.toml
|
sed -i.bak 's/rocket_codegen.*//' "${LIB_DIR}/Cargo.toml"
|
||||||
|
|
||||||
# Publish all the things.
|
# Publish all the things.
|
||||||
for dir in "${LIB_DIR}" "${CODEGEN_DIR}" "${CONTRIB_DIR}"; do
|
for dir in "${LIB_DIR}" "${CODEGEN_DIR}" "${CONTRIB_DIR}"; do
|
||||||
pushd ${dir}
|
pushd "${dir}"
|
||||||
echo ":::: Publishing '${dir}..."
|
echo ":::: Publishing '${dir}..."
|
||||||
# We already checked things ourselves. Don't spend time reverifying.
|
# We already checked things ourselves. Don't spend time reverifying.
|
||||||
cargo publish --no-verify --allow-dirty
|
cargo publish --no-verify --allow-dirty
|
||||||
|
@ -32,4 +32,4 @@ for dir in "${LIB_DIR}" "${CODEGEN_DIR}" "${CONTRIB_DIR}"; do
|
||||||
done
|
done
|
||||||
|
|
||||||
# Restore the original core Cargo.toml.
|
# Restore the original core Cargo.toml.
|
||||||
mv ${LIB_DIR}/Cargo.toml.bak ${LIB_DIR}/Cargo.toml
|
mv "${LIB_DIR}/Cargo.toml.bak" "${LIB_DIR}/Cargo.toml"
|
||||||
|
|
|
@ -3,7 +3,7 @@ set -e
|
||||||
|
|
||||||
# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
|
# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
source $SCRIPT_DIR/config.sh
|
source "${SCRIPT_DIR}/config.sh"
|
||||||
|
|
||||||
# Add Cargo to PATH.
|
# Add Cargo to PATH.
|
||||||
export PATH=${HOME}/.cargo/bin:${PATH}
|
export PATH=${HOME}/.cargo/bin:${PATH}
|
||||||
|
@ -11,14 +11,14 @@ export PATH=${HOME}/.cargo/bin:${PATH}
|
||||||
# Checks that the versions for Cargo projects $@ all match
|
# Checks that the versions for Cargo projects $@ all match
|
||||||
function check_versions_match() {
|
function check_versions_match() {
|
||||||
local last_version=""
|
local last_version=""
|
||||||
for dir in $@; do
|
for dir in "${@}"; do
|
||||||
local cargo_toml="${dir}/Cargo.toml"
|
local cargo_toml="${dir}/Cargo.toml"
|
||||||
if ! [ -f "${cargo_toml}" ]; then
|
if ! [ -f "${cargo_toml}" ]; then
|
||||||
echo "Cargo configuration file '${cargo_toml}' does not exist."
|
echo "Cargo configuration file '${cargo_toml}' does not exist."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local version=$(grep version ${cargo_toml} | head -n 1 | cut -d' ' -f3)
|
local version=$(grep version "${cargo_toml}" | head -n 1 | cut -d' ' -f3)
|
||||||
if [ -z "${last_version}" ]; then
|
if [ -z "${last_version}" ]; then
|
||||||
last_version="${version}"
|
last_version="${version}"
|
||||||
elif ! [ "${version}" = "${last_version}" ]; then
|
elif ! [ "${version}" = "${last_version}" ]; then
|
||||||
|
@ -31,7 +31,7 @@ function check_versions_match() {
|
||||||
# Ensures there are no tabs in any file.
|
# Ensures there are no tabs in any file.
|
||||||
function ensure_tab_free() {
|
function ensure_tab_free() {
|
||||||
local tab=$(printf '\t')
|
local tab=$(printf '\t')
|
||||||
local matches=$(grep -I -R "${tab}" $ROOT_DIR | egrep -v '/target|/.git|LICENSE')
|
local matches=$(grep -I -R "${tab}" "${ROOT_DIR}" | egrep -v '/target|/.git|LICENSE')
|
||||||
if ! [ -z "${matches}" ]; then
|
if ! [ -z "${matches}" ]; then
|
||||||
echo "Tab characters were found in the following:"
|
echo "Tab characters were found in the following:"
|
||||||
echo "${matches}"
|
echo "${matches}"
|
||||||
|
@ -41,7 +41,7 @@ function ensure_tab_free() {
|
||||||
|
|
||||||
# Ensures there are no files with trailing whitespace.
|
# Ensures there are no files with trailing whitespace.
|
||||||
function ensure_trailing_whitespace_free() {
|
function ensure_trailing_whitespace_free() {
|
||||||
local matches=$(egrep -I -R " +$" $ROOT_DIR | egrep -v "/target|/.git")
|
local matches=$(egrep -I -R " +$" "${ROOT_DIR}" | egrep -v "/target|/.git")
|
||||||
if ! [ -z "${matches}" ]; then
|
if ! [ -z "${matches}" ]; then
|
||||||
echo "Trailing whitespace was found in the following:"
|
echo "Trailing whitespace was found in the following:"
|
||||||
echo "${matches}"
|
echo "${matches}"
|
||||||
|
@ -50,23 +50,21 @@ function ensure_trailing_whitespace_free() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function bootstrap_examples() {
|
function bootstrap_examples() {
|
||||||
for file in ${EXAMPLES_DIR}/*; do
|
while read -r file; do
|
||||||
if [ -d "${file}" ]; then
|
bootstrap_script="${file}/bootstrap.sh"
|
||||||
bootstrap_script="${file}/bootstrap.sh"
|
if [ -x "${bootstrap_script}" ]; then
|
||||||
if [ -x "${bootstrap_script}" ]; then
|
echo " Bootstrapping ${file}..."
|
||||||
echo " Bootstrapping ${file}..."
|
|
||||||
|
|
||||||
env_vars=$(${bootstrap_script})
|
env_vars=$(bash "${bootstrap_script}")
|
||||||
bootstrap_result=$?
|
bootstrap_result=$?
|
||||||
if [ $bootstrap_result -ne 0 ]; then
|
if [ $bootstrap_result -ne 0 ]; then
|
||||||
echo " Running bootstrap script (${bootstrap_script}) failed!"
|
echo " Running bootstrap script (${bootstrap_script}) failed!"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
eval $env_vars
|
eval $env_vars
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done < <(find "${EXAMPLES_DIR}" -maxdepth 1 -type d)
|
||||||
}
|
}
|
||||||
|
|
||||||
echo ":: Ensuring all crate versions match..."
|
echo ":: Ensuring all crate versions match..."
|
||||||
|
@ -81,7 +79,7 @@ ensure_trailing_whitespace_free
|
||||||
echo ":: Updating dependencies..."
|
echo ":: Updating dependencies..."
|
||||||
cargo update
|
cargo update
|
||||||
|
|
||||||
echo ":: Boostrapping examples..."
|
echo ":: Bootstrapping examples..."
|
||||||
bootstrap_examples
|
bootstrap_examples
|
||||||
|
|
||||||
echo ":: Building and testing libraries..."
|
echo ":: Building and testing libraries..."
|
||||||
|
|
Loading…
Reference in New Issue