#!/usr/bin/env bash provide_version='0.3' dm_version='0.2.1' base=$1 if [ ! $base ] then echo "Where do you want to install provide? Need an absolute path." exit 1 fi echo "Checking your system capabilities...." check () if ! (which $@) then echo "Error: Can't find '$@' on your system. Please either create a symlink to your favorite '$@' program, or install this program. Then run this script again." exit 1 fi check 'cp' check 'editor' check 'env' check 'mkdir' check 'perl' check 'python' check 'rm' check 'sleep' check 'tar' check 'wget' echo "Your system checks out OK." # todo: Fix this for earlier versions of bash (conditional binary operator). #if [[$base =~ '^[^\/]']] #then # echo "Sorry, the path argument needs to be an absolute path." # exit 1 #fi if [ ! -e $base ] then echo "Error: Installation path '$1' not found." exit 1 fi if [ ! -d $base ] then echo "Error: Installation path '$1' not a directory." exit 1 fi base=${base//%\//} livebase="$base/provided" live="$livebase/$provide_version" echo "Installing provide to $live..." if [ -e $live ] then echo "Error: Installation dir $live already exists." exit 1 fi if [ -e $livebase ] then echo "Installation dir $livebase already exists..." else echo "Making installation dir $livebase..." mkdir $livebase || exit 1 fi echo "Making installation dir $live..." mkdir $live || exit 1 echo "Making lib/python dir..." mkdir $live/lib mkdir $live/lib/python echo "Augmenting PYTHONPATH environment variable..." sleep 1 export PYTHONPATH=$live/lib/python:$PYTHONPATH echo "export PYTHONPATH=$PYTHONPATH" echo "Fetching domainmodel distribution..." sleep 1 wget -O domainmodel-$dm_version.tar.gz http://appropriatesoftware.net/provide/docs/domainmodel-$dm_version.tar.gz || exit 1 echo "Installing domainmodel..." sleep 1 tar zxvf domainmodel-$dm_version.tar.gz cd domainmodel-$dm_version python setup.py install --home=$live || exit 1 cd .. rm domainmodel-$dm_version.tar.gz rm -rf domainmodel-$dm_version echo "Fetching provide distribution..." sleep 1 wget -O provide-$provide_version.tar.gz http://appropriatesoftware.net/provide/docs/provide-$provide_version.tar.gz || exit 1 echo "Installing provide..." sleep 1 tar zxvf provide-$provide_version.tar.gz cd provide-$provide_version python setup.py install --home=$live || exit 1 cd .. rm provide-$provide_version.tar.gz rm -rf provide-$provide_version cd $live echo "Copying new config file..." sleep 1 cp etc/provide.conf.new etc/provide.conf echo "Setting config file paths..." sleep 1 perl -pi -e "s|/path/to/provide|$live|" etc/provide.conf editor etc/provide.conf echo "Setting environment variables..." sleep 1 export PYTHONPATH=$live/lib/python export PROVIDE_SETTINGS=$live/etc/provide.conf export PATH=$live/bin:$PATH echo "Searching for 'provide' program...." which provide || echo "Error: Can't find the 'provide' program on your system. :-(" echo "Creating model persistence..." sleep 1 provide db create || exit 1 echo "Initialising model..." sleep 1 provide db init || exit 1 echo "" echo "Provide installed OK. Thanks for using provide." echo "" echo "Please write these variables in your environment configuration:" sleep 1 echo "" echo "export PROVIDE_SETTINGS=$live/etc/provide.conf" echo "export PYTHONPATH=$live/lib/python" echo "export PATH=$live/bin:\$PATH" echo "" echo "Then you can run scripts like 'provide-kforge-0.13'." echo "" sleep 1