From 4e030c3de8be5485b6cc50db4787353fa068beb1 Mon Sep 17 00:00:00 2001 From: Florian Staudacher <florian_staudacher@yahoo.de> Date: Sat, 14 Apr 2012 20:26:50 +0200 Subject: [PATCH] made install script a little smarter, hope u like it ;) --- script/install.sh | 184 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 164 insertions(+), 20 deletions(-) diff --git a/script/install.sh b/script/install.sh index f0b325cff1..5fa9669c4e 100755 --- a/script/install.sh +++ b/script/install.sh @@ -1,44 +1,188 @@ #!/bin/bash -#MAKE ME BETTER -# see https://github.com/jamiew/git-friendly for more ideas -#maybe this should be two files -#one which includes cloning diaspora/diaspora, and one that assumes you already cloned it yourself -# maybe one script just calls another? +### +# MAKE ME BETTER +### +: ' +see https://github.com/jamiew/git-friendly for more ideas -#other ideas what we could do +maybe this should be two files +one which includes cloning diaspora/diaspora, and one that assumes you already cloned it yourself +maybe one script just calls another? -#1. check that you have ruby installed, if not, point to wiki page and exit -#2. check to see if we need sudo (generally, if it is a system ruby you need sudo, which you can check - # if which ruby is /usr/bin/ruby, or does not have rvm in the path) -#3 check if you have bundle installed and install it, and install with/without sudo if you need it -#check if you have mysql and/or postgres installed, point to wiki page if neither is found. -#(maybe even switch database.yml if this is the case?) +other ideas what we could do -#make it work if you have just cloned diapsora and want a quick setup, or -#support magic install, like this http://docs.meteor.com/#quickstart + 1. check that you have ruby installed, if not, point to wiki page and exit + 2. check to see if we need sudo (generally, if it is a system ruby you need sudo, which you can check + if which ruby is /usr/bin/ruby, or does not have rvm in the path) + 3. check if you have bundle installed and install it, and install with/without sudo if you need it + check if you have mysql and/or postgres installed, point to wiki page if neither is found. + (maybe even switch database.yml if this is the case?) -# echo "downloading diaspora" -#git clone git@github.com:diaspora/diaspora.git + make it work if you have just cloned diapsora and want a quick setup, or + support magic install, like this http://docs.meteor.com/#quickstart +' + +#### #### +# # +# DEFAULT VARS # +# # +#### #### + +BINARIES="git ruby gem bundle" # required programs + +D_GIT_CLONE_PATH="/srv/diaspora" # path for diaspora + +D_REMOTE_REPO_URL="git://github.com/diaspora/diaspora.git" + +D_WIKI_URL="https://github.com/diaspora/diaspora/wiki" + +D_IRC_URL="irc://freenode.net/diaspora" + + +#### #### +# # +# FUNCTIONS, etc. # +# # +#### #### + +#... could be put in a separate file and sourced here + +# heredoc for variables - very readable, http://stackoverflow.com/a/8088167 +# use like this: +# define VAR <<'EOF' +# somecontent +# EOF +define(){ IFS='\n' read -r -d '' ${1}; } + +# expand aliases in this script +shopt -s expand_aliases + +# alias echo to alway print \newlines +alias echo='echo -e' + +# nicely output error messages and quit +error() { + echo "\n" + echo "[ERROR] -- $1" + echo " --" + echo " -- have a look at our wiki: $D_WIKI_URL" + echo " -- or join us on IRC: $D_IRC_URL" + exit 1 +} + +# check if all necessary binaries are available +sane_environment_check() { + for exe in $BINARIES; do + echo -n "checking for $exe... " + which "$exe" + if [ $? -gt 0 ]; then + error "you are missing $exe"; + fi + done + echo "" +} + +# find or set up a working git environment +git_stuff_check() { + echo "Where would you like to put the git clone?\n(or, where is your git clone)? " + read -e -p "-> " -i "$D_GIT_CLONE_PATH" D_GIT_CLONE_PATH + echo "" + + test -d "$D_GIT_CLONE_PATH" \ + && cd "$D_GIT_CLONE_PATH" \ + && git status "$D_GIT_CLONE_PATH" # folder exists? go there. is a good git clone? + if [ $? -gt 0 ]; then + mkdir "$D_GIT_CLONE_PATH" # only if it doesn't exist + # not a git repo, create it? + echo "the folder you specified does not contain a git repo, create one?" + select choice in "Yes" "No"; do + case $choice in + Yes ) git clone "$D_REMOTE_REPO_URL" "$D_GIT_CLONE_PATH"; break ;; + No ) error "please make sure you have a git clone somewhere" ;; + esac + done + else + git checkout master + git pull + fi + echo "" +} + + + +#### #### +# # +# START # +# # +#### #### + +# display a nice welcome message +define WELCOME_MSG <<'EOT' +##################################################################### +DIASPORA* INSTALL SCRIPT + +This script will guide you through the basic steps +to get a copy of Diaspora* up and running +##################################################################### + +EOT +echo "$WELCOME_MSG" + + +# check if we have everything we need +sane_environment_check + + +# check git stuff and pull if necessary +git_stuff_check + + +# goto working directory +cd "$D_GIT_CLONE_PATH" -# echo 'moving into diaspora' -#cd diaspora echo "initializing Diaspora*" echo "copying database.yml.example to database.yml" cp config/database.yml.example config/database.yml +echo "" echo "copying application.yml.example to application.yml" cp config/application.yml.example config/application.yml +echo "" echo "bundling..." bundle install +echo "" echo "creating and migrating default database in config/database.yml. please wait..." rake db:create db:migrate --trace +echo "" + +define GOODBYE_MSG <<'EOT' +##################################################################### + +It worked! :) + +Now, you should have a look at + + - config/database.yml and + - config/application.yml + +and change them to your liking. Then you should be able to +start Diaspora* in development mode with: + + `rails s` + +EOT +echo "$GOODBYE_MSG" +echo "For further information read the wiki at $D_WIKI_URL" +echo "or join us on IRC $D_IRC_URL" +echo "" + + +exit 0 -echo "It worked! now start your server in development mode with 'rails s'" -exit 0 \ No newline at end of file -- GitLab