the script is now split up in parts that will be fetched from github on demand. fixes #4047
177 lines
4.6 KiB
Bash
177 lines
4.6 KiB
Bash
#!/usr/bin/env bash
|
|
# to be included by install.sh
|
|
|
|
|
|
#### ####
|
|
# #
|
|
# DIASPORA* development setup #
|
|
# #
|
|
#### ####
|
|
|
|
|
|
# make ourselves comfy
|
|
prepare_install_env() {
|
|
install_or_use_ruby
|
|
load_rvmrc
|
|
js_runtime_check
|
|
|
|
log_inf "making sure the 'bundler' gem is installed"
|
|
rvm_or_sudo "gem install bundler"
|
|
}
|
|
|
|
|
|
# do some sanity checking
|
|
sane_environment_check() {
|
|
binaries_check
|
|
rvm_check
|
|
}
|
|
|
|
|
|
# find or set up a working git environment
|
|
git_stuff_check() {
|
|
printf "Where would you like to put the git clone, or, where is your existing git clone?\n"
|
|
#printf "(please use a full path, not '~' or '.')\n"
|
|
read -e -p "-> " D_GIT_CLONE_PATH
|
|
printf "\n"
|
|
|
|
sanitize_path "$D_GIT_CLONE_PATH" "_D_GCLONE_PATH_EXISTING" "_D_GCLONE_PATH_NEW"
|
|
D_GIT_CLONE_PATH="$_D_GCLONE_PATH_EXISTING$_D_GCLONE_PATH_NEW"
|
|
|
|
if [ -n "$_D_GCLONE_PATH_NEW" ] ; then
|
|
# the path obviously doesn't exist yet
|
|
printf "the folder you specified does not exist.\n"
|
|
printf "create '$D_GIT_CLONE_PATH'?\n"
|
|
read -p "Press [Enter] to create it and continue... "
|
|
|
|
log_inf "creating '$D_GIT_CLONE_PATH' and cloning the git repo..."
|
|
run_or_error "mkdir -p -v \"$D_GIT_CLONE_PATH\""
|
|
_git_clone_diaspora_repo
|
|
|
|
elif ! (cd "$D_GIT_CLONE_PATH" && git status) ; then
|
|
# the path doesn't appear to contain a git clone
|
|
printf "the folder you specified does not contain a git repo\n"
|
|
read -p "Press [Enter] to create it and continue... "
|
|
|
|
log_inf "cloning the git repo..."
|
|
_git_clone_diaspora_repo
|
|
|
|
else
|
|
cd "$D_GIT_CLONE_PATH"
|
|
|
|
log_inf "setting your git clone to '$D_GIT_BRANCH' branch..."
|
|
run_or_error "git stash"
|
|
run_or_error "git checkout \"$D_GIT_BRANCH\""
|
|
run_or_error "git pull"
|
|
fi
|
|
printf "\n"
|
|
}
|
|
|
|
_git_clone_diaspora_repo() {
|
|
run_or_error "git clone \"$D_REMOTE_REPO_URL\" -b \"$D_GIT_BRANCH\" \"$D_GIT_CLONE_PATH\""
|
|
}
|
|
|
|
|
|
# handle database decision
|
|
database_question() {
|
|
printf "Which database type are you using? [1|2]\n"
|
|
select choice in "MySQL" "PgSQL"; do
|
|
case $choice in
|
|
MySQL )
|
|
D_DB="mysql"
|
|
# we're done, mysql is default
|
|
break
|
|
;;
|
|
PgSQL )
|
|
D_DB="postgres"
|
|
# replace default with postgres
|
|
run_or_error "sed -i'' -e 's/\(<<: \*mysql\)/#\1/g' \"$D_DB_CONFIG_FILE\""
|
|
run_or_error "sed -i'' -e 's/\(#\(<<: \*postgres\)\)/\2/g' \"$D_DB_CONFIG_FILE\""
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
printf "\n"
|
|
}
|
|
|
|
|
|
# ask for database credentials
|
|
database_credentials() {
|
|
printf "Please specify the database credentials\n(the user must be existent and allowed to create new databases)\n"
|
|
read -e -p "hostname: " D_DB_HOST
|
|
read -e -p "username: " D_DB_USER
|
|
read -e -p "password: " D_DB_PASS
|
|
|
|
run_or_error "sed -i'' -e \"s/\(host:\)[^\n]*/\1 $D_DB_HOST/g\" \"$D_DB_CONFIG_FILE\""
|
|
run_or_error "sed -i'' -e \"s/\(username:\)[^\n]*/\1 $D_DB_USER/g\" \"$D_DB_CONFIG_FILE\""
|
|
run_or_error "sed -i'' -e \"s/\(password:\)[^\n]*/\1 $D_DB_PASS/g\" \"$D_DB_CONFIG_FILE\""
|
|
|
|
printf "\n"
|
|
}
|
|
|
|
|
|
# setup database
|
|
# (assume we are in the Diaspora directory)
|
|
database_setup() {
|
|
log_inf "Database setup"
|
|
run_or_error "cp config/database.yml.example \"$D_DB_CONFIG_FILE\""
|
|
printf "\n"
|
|
|
|
database_question
|
|
database_credentials
|
|
|
|
printf "$DATABASE_CHK_MSG"
|
|
read -p "Press [Enter] to continue... "
|
|
|
|
printf "\n"
|
|
}
|
|
|
|
|
|
# install all the gems with bundler
|
|
# (assume we are in the Diaspora directory)
|
|
prepare_gem_bundle() {
|
|
log_inf "installing all required gems..."
|
|
rvm_or_sudo "bundle install"
|
|
printf "\n"
|
|
}
|
|
|
|
|
|
# main setup function, entry point
|
|
# all other functions will be called from here
|
|
diaspora_setup() {
|
|
#interactive_check
|
|
root_check
|
|
|
|
# display a nice welcome message
|
|
printf "$WELCOME_MSG"
|
|
read -p "Press [Enter] to continue... "
|
|
|
|
# check if we have everything we need
|
|
sane_environment_check
|
|
|
|
# check git stuff and pull if necessary
|
|
git_stuff_check
|
|
|
|
# goto working directory
|
|
run_or_error "cd \"$D_GIT_CLONE_PATH\""
|
|
prepare_install_env
|
|
|
|
# configure database setup
|
|
database_setup
|
|
|
|
# diaspora config
|
|
log_inf "copying diaspora.yml.example to diaspora.yml"
|
|
run_or_error "cp config/diaspora.yml.example config/diaspora.yml"
|
|
printf "\n"
|
|
|
|
# bundle gems
|
|
prepare_gem_bundle
|
|
|
|
log_inf "creating the default database specified in config/database.yml. please wait..."
|
|
run_or_error "bundle exec rake db:schema:load_if_ruby --trace"
|
|
printf "\n"
|
|
|
|
printf "$GOODBYE_MSG"
|
|
|
|
exit 0
|
|
}
|