153 lines
3.7 KiB
Bash
Executable File
153 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# ================================================
|
|
# SHELL->PRELANG->INIT ===========================
|
|
# ================================================
|
|
|
|
# ------------------------------------------------
|
|
# UTILITY ----------------------------------------
|
|
# ------------------------------------------------
|
|
_fatal_error() {
|
|
echo "fatal: $@"
|
|
exit 1
|
|
}
|
|
|
|
_command_exists() {
|
|
(command -v $1 >/dev/null 2>&1)
|
|
}
|
|
|
|
_require_command() {
|
|
if ( ! `_command_exists $1` ) ; then
|
|
_fatal_error "Prelang init script requires '$1' but it is not installed."
|
|
fi
|
|
}
|
|
|
|
_topic() {
|
|
echo "-----> $@"
|
|
}
|
|
|
|
_execute_sucessfully_or_exit() {
|
|
# Raw execution of the command
|
|
$@
|
|
|
|
# Check exit status
|
|
if [[ $? != 0 ]] ; then
|
|
_fatal_error "Command '$@' failed."
|
|
fi
|
|
}
|
|
|
|
_git_commit_all_with_message() {
|
|
git add .
|
|
git commit --all --message="$1" --author="Prelang Builder <builder@prelang.com>"
|
|
}
|
|
|
|
_git_push() {
|
|
# FIX: Make sure the user is on master
|
|
git push origin master
|
|
}
|
|
|
|
_prompt() {
|
|
echo -e -n "\033[1;32m"
|
|
echo -n $1" (y/n): "
|
|
echo -e -n '\033[0m'
|
|
read answer
|
|
|
|
if [[ $answer == "y" ]] ; then
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
_sleep_and_open_rails_url() {
|
|
_rails_url="http://localhost:3000"
|
|
|
|
# FIX: Make a better way to check if the Rails server is running.
|
|
sleep 7
|
|
|
|
if [[ `uname` == "Darwin" ]] ; then
|
|
open $_rails_url
|
|
elif [[ `uname` == "Linux" ]] ; then
|
|
if ( `_command_exists xdg-open` ) ; then
|
|
xdg-open $_rails_url
|
|
fi
|
|
fi
|
|
}
|
|
|
|
_source_rvm_if_exists() {
|
|
# In case RVM already is sourced don't source it.
|
|
# FIX: Not sure this can happen since we're launching from a shebang script.
|
|
if ( ! `_command_exists $1` ) ; then
|
|
return 0
|
|
fi
|
|
|
|
# Source RVM if it exists
|
|
if [[ -f $HOME/.rvm/scripts/rvm ]] ; then
|
|
source $HOME/.rvm/scripts/rvm
|
|
fi
|
|
}
|
|
|
|
# ------------------------------------------------
|
|
# MAIN -------------------------------------------
|
|
# ------------------------------------------------
|
|
_source_rvm_if_exists
|
|
|
|
_require_command "git"
|
|
|
|
# FIX: Check for non-Prelang Builder commits
|
|
|
|
# Run "bundle install"
|
|
# --------------------
|
|
_require_command "bundle"
|
|
_topic "Running 'bundle install' to fetch and install required Ruby Gems"
|
|
_execute_sucessfully_or_exit bundle install
|
|
|
|
# FIX: Do we need this commit?
|
|
_git_commit_all_with_message "Executed 'bundle install' to fetch and install required Ruby Gems"
|
|
|
|
# Require "rake" for next few commands
|
|
_require_command "rake"
|
|
|
|
# Run "rake db:create"
|
|
# --------------------
|
|
_topic "Running 'rake db:create' to create a development database"
|
|
_execute_sucessfully_or_exit rake db:create
|
|
|
|
# Run "rake db:migrate"
|
|
# --------------------
|
|
_topic "Running 'rake db:migrate' to migrate to the proper database schema"
|
|
_execute_sucessfully_or_exit rake db:migrate
|
|
|
|
# Track schema.rb
|
|
_git_commit_all_with_message "Executed 'rake db:migrate' to migrate all generated migrations which created schema.rb"
|
|
|
|
# Clean up
|
|
# --------
|
|
#_prompt "Would you like to keep this script (./prelang-init) in your repository? This will allow you to run it later if you need to reinitialize your Rails project."
|
|
|
|
#if [[ $? != 0 ]] ; then
|
|
#_topic "Removing 'prelang-init' script"
|
|
|
|
#if ( ! test -f ./prelang-init ) ; then
|
|
#_fatal_error "'./prelang-init' does not exist."
|
|
#fi
|
|
|
|
#_execute_sucessfully_or_exit git rm ./prelang-init
|
|
#_git_commit_all_with_message "Removed 'prelang-init' script after successful execution"
|
|
#fi
|
|
|
|
# Push
|
|
# ----
|
|
_topic "Pushing git repository changes back to origin"
|
|
_git_push
|
|
|
|
# Rails Server
|
|
# ------------
|
|
_prompt "Would you like to start the Rails server and open your running Rails application in a browser?"
|
|
|
|
if [[ $? == 0 ]] ; then
|
|
_sleep_and_open_rails_url &
|
|
|
|
# FIX: Will this be using the correct Rails? RVM?
|
|
rails server
|
|
fi
|
|
|