Skip to content

Commit

Permalink
Properly handle paths with spaces in shell scripts.
Browse files Browse the repository at this point in the history
  • Loading branch information
lucaskolstad authored and SergioBenitez committed Sep 8, 2017
1 parent b5c2187 commit 2d72928
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 36 deletions.
10 changes: 5 additions & 5 deletions examples/todo/bootstrap.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
#! /usr/bin/env bash

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
rm -f $DATABASE_URL
rm -f "${DATABASE_URL}"

# install the diesel CLI tools if they're not installed
if ! command -v diesel >/dev/null 2>&1; then
cargo install diesel_cli --no-default-features --features=sqlite > /dev/null
fi

# 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

echo "export DATABASE_URL=$DATABASE_URL"
echo "export DATABASE_URL=\"${DATABASE_URL}\""
12 changes: 6 additions & 6 deletions scripts/mk-docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ set -e

# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $SCRIPT_DIR/config.sh
source "${SCRIPT_DIR}/config.sh"

function mk_doc() {
local dir=$1
local flag=$2
pushd $dir > /dev/null 2>&1
pushd "${dir}" > /dev/null 2>&1
echo ":: Documenting '${dir}'..."
cargo doc --no-deps --all-features
popd > /dev/null 2>&1
Expand All @@ -22,9 +22,9 @@ function mk_doc() {
cargo clean
cargo update

mk_doc $LIB_DIR
mk_doc $CODEGEN_DIR
mk_doc $CONTRIB_DIR
mk_doc "${LIB_DIR}"
mk_doc "${CODEGEN_DIR}"
mk_doc "${CONTRIB_DIR}"

# Blank index, for redirection.
touch ${DOC_DIR}/index.html
touch "${DOC_DIR}/index.html"
10 changes: 5 additions & 5 deletions scripts/publish.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ set -e

# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $SCRIPT_DIR/config.sh
source "${SCRIPT_DIR}/config.sh"

if ! [ -z "$(git status --porcelain)" ]; then
echo "There are uncommited changes! Aborting."
Expand All @@ -17,19 +17,19 @@ fi
# Ensure everything passes before trying to publish.
echo ":::: Running test suite..."
cargo clean
${SCRIPT_DIR}/test.sh
bash "${SCRIPT_DIR}/test.sh"

# 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.
for dir in "${LIB_DIR}" "${CODEGEN_DIR}" "${CONTRIB_DIR}"; do
pushd ${dir}
pushd "${dir}"
echo ":::: Publishing '${dir}..."
# We already checked things ourselves. Don't spend time reverifying.
cargo publish --no-verify --allow-dirty
popd
done

# 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"
38 changes: 18 additions & 20 deletions scripts/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@ set -e

# Brings in: ROOT_DIR, EXAMPLES_DIR, LIB_DIR, CODEGEN_DIR, CONTRIB_DIR, DOC_DIR
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $SCRIPT_DIR/config.sh
source "${SCRIPT_DIR}/config.sh"

# Add Cargo to PATH.
export PATH=${HOME}/.cargo/bin:${PATH}

# Checks that the versions for Cargo projects $@ all match
function check_versions_match() {
local last_version=""
for dir in $@; do
for dir in "${@}"; do
local cargo_toml="${dir}/Cargo.toml"
if ! [ -f "${cargo_toml}" ]; then
echo "Cargo configuration file '${cargo_toml}' does not exist."
exit 1
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
last_version="${version}"
elif ! [ "${version}" = "${last_version}" ]; then
Expand All @@ -31,7 +31,7 @@ function check_versions_match() {
# Ensures there are no tabs in any file.
function ensure_tab_free() {
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
echo "Tab characters were found in the following:"
echo "${matches}"
Expand All @@ -41,7 +41,7 @@ function ensure_tab_free() {

# Ensures there are no files with trailing whitespace.
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
echo "Trailing whitespace was found in the following:"
echo "${matches}"
Expand All @@ -50,23 +50,21 @@ function ensure_trailing_whitespace_free() {
}

function bootstrap_examples() {
for file in ${EXAMPLES_DIR}/*; do
if [ -d "${file}" ]; then
bootstrap_script="${file}/bootstrap.sh"
if [ -x "${bootstrap_script}" ]; then
echo " Bootstrapping ${file}..."
while read -r file; do
bootstrap_script="${file}/bootstrap.sh"
if [ -x "${bootstrap_script}" ]; then
echo " Bootstrapping ${file}..."

env_vars=$(${bootstrap_script})
bootstrap_result=$?
if [ $bootstrap_result -ne 0 ]; then
echo " Running bootstrap script (${bootstrap_script}) failed!"
exit 1
else
eval $env_vars
fi
env_vars=$(bash "${bootstrap_script}")
bootstrap_result=$?
if [ $bootstrap_result -ne 0 ]; then
echo " Running bootstrap script (${bootstrap_script}) failed!"
exit 1
else
eval $env_vars
fi
fi
done
done < <(find "${EXAMPLES_DIR}" -maxdepth 1 -type d)
}

echo ":: Ensuring all crate versions match..."
Expand All @@ -81,7 +79,7 @@ ensure_trailing_whitespace_free
echo ":: Updating dependencies..."
cargo update

echo ":: Boostrapping examples..."
echo ":: Bootstrapping examples..."
bootstrap_examples

echo ":: Building and testing libraries..."
Expand Down

0 comments on commit 2d72928

Please sign in to comment.