diff options
Diffstat (limited to 'script/mysociety-switch-to-shared')
-rwxr-xr-x | script/mysociety-switch-to-shared | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/script/mysociety-switch-to-shared b/script/mysociety-switch-to-shared new file mode 100755 index 000000000..f82e77706 --- /dev/null +++ b/script/mysociety-switch-to-shared @@ -0,0 +1,71 @@ +#!/bin/bash + +# This script is a one-off script to move the shared files on a +# mySociety instance of Alaveteli out of the repository and into the +# vhost's shared directory. This is specific to mySociety's servers - +# the list of files and directories which are moved would be unlikely +# to be correct in another environment. +# +# This should be run *before* the first time the site is deployed with +# the timestamped_deploy option. + +set -e + +# (Using `pwd -P` here instead of readlink -f so that it works on Mac +# OS as well, just in case that's required for testing on a laptop.) +RAILS_ROOT="$(cd "$(dirname "$BASH_SOURCE")/.." && pwd -P)" +VHOST_DIR="$(cd "$RAILS_ROOT/.." && pwd -P)" +SHARED_DIR="$VHOST_DIR/shared" + +cd "$RAILS_ROOT" + +mkdir -p "$SHARED_DIR" + +for F in \ + cache \ + public/foi-live-creation.png \ + public/foi-user-use.png \ + config/aliases \ + lib/acts_as_xapian/xapiandbs \ + vendor/bundle +do + SYMLINK_LOCATION="$F" + INTENDED_DESTINATION="$SHARED_DIR/$F" + echo "Switching to $SYMLINK_LOCATION -> $INTENDED_DESTINATION" + # If anything exists where the symlink should be: + if [ -e "$SYMLINK_LOCATION" ] + then + # First, if it's a symlink, check whether it's correct: + if [ -L "$SYMLINK_LOCATION" ] + then + SYMLINK_DESTINATION="$(readlink "$SYMLINK_LOCATION")" + if [ "$SYMLINK_DESTINATION" = "$INTENDED_DESTINATION" ] + then + echo " already correct!" + else + echo " ERROR: already symlinked to $INTENDED_DESTINATION" + fi + else + # So the file or directory is there, and it's not a + # symlink. Check first that that destination doesn't + # exist (in which case a move would either fail or + # overwrite what's there): + if [ -e "$INTENDED_DESTINATION" ] + then + echo " ERROR: would move, but something already existed at $INTENDED_DESTINATION" + else + # Otherwise (bar race condition) everything's fine, + # and we should be able to move the file or directory + # and create a symlink to its new location: + mkdir -p "$(dirname "$INTENDED_DESTINATION")" + mv "$SYMLINK_LOCATION" "$INTENDED_DESTINATION" + ln -snf "$INTENDED_DESTINATION" "$SYMLINK_LOCATION" + fi + fi + else + # This may not be anything to worry about, e.g. if the + # public/foi-user-use.png graph has never been generated: + echo " ERROR: nothing existed at $SYMLINK_LOCATION" + fi + +done |