bootstrap: apt was mangling stdin

When executed "cat bootstrap.sh | bash", apt-get mangled stdin. The script would terminate at the end of the if block containing apt-get (that seems to be as much as bash read from the pipe) and the remainder of the script was output to the console. This was very weird.

Ensuring that apt-get and git have their stdins redirected from /dev/null seems to fix the problem.

see #224
This commit is contained in:
Joshua Tauberer 2014-10-05 13:32:52 -04:00
parent f42a1c5a74
commit 711db9352c
1 changed files with 16 additions and 9 deletions

25
setup/bootstrap.sh Executable file → Normal file
View File

@ -16,27 +16,34 @@ if [[ $EUID -ne 0 ]]; then
exit
fi
# Go to root's home directory.
cd
# Clone the Mail-in-a-Box repository if it doesn't exist.
if [ ! -d mailinabox ]; then
echo Installing git . . .
apt-get -q -q install -y git
DEBIAN_FRONTEND=noninteractive apt-get -q -q install -y git < /dev/null
echo
echo Downloading Mail-in-a-Box . . .
git clone -b $TAG --depth 1 https://github.com/mail-in-a-box/mailinabox 2> /dev/null
cd mailinabox
git clone \
-b $TAG --depth 1 \
https://github.com/mail-in-a-box/mailinabox \
$HOME/mailinabox \
< /dev/null 2> /dev/null
# If it does exist, update it.
else
echo
fi
# Change directory to it.
cd $HOME/mailinabox
# Update it.
if [ "$TAG" != `git describe` ]; then
echo Updating Mail-in-a-Box to $TAG . . .
cd mailinabox
git fetch
if ! git checkout -q $TAG; then
echo "Update failed. Did you modify something in `pwd`?"
exit
fi
echo
fi
# Start setup script.