You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

120 lines
2.9 KiB

#!/usr/bin/bash
# CONSTANTS
BASEDIR=$(dirname "$0")
DEBIAN_PACKAGES="curl git build-essential libssl-dev libreadline-dev zlib1g-dev libyaml-dev "
BASH_RELOAD=false
# FUNCTIONS
function install_rails_templating {
if [[ ! -d $HOME/.local/rails ]]; then
mkdir -p $HOME/.local/rails
ln -sf $(realpath $BASEDIR/src/railsrc) $HOME/.railsrc
ln -sf $(realpath $BASEDIR/src/template.rb) $HOME/.local/rails/template.rb
echo rails-templating installed succesfully!
else
echo rails-templating already installed!
fi
}
function install_ruby {
if ! command -v ruby >/dev/null; then
ruby_version=$(wget_semver github jdx/ruby)
mise use --global ruby@${ruby_version}
tee $HOME/.gemrc &>/dev/null <<EOF
# Skip documentation generation
install: --no-document
update: --no-document
EOF
# fix the gem update --system permission denied!
chmod u+w -R $HOME/.local/share/mise/installs/ruby
mise exec -- gem update --system
else
echo 'ruby already installed!'
fi
if ! command -v rails >/dev/null; then
mise exec -- gem install rails
else
echo 'rails already installed!'
fi
}
function install_mise {
if [[ ! -f $HOME/.local/bin/mise ]]; then
echo -n 'installing mise...'
curl -s https://mise.run | sh 2>&1 >/dev/null
echo OK
fi
if [[ ! -f $HOME/.bashrc ]] || ! grep -q '.local/bin/mise activate bash' $HOME/.bashrc; then
echo "eval \"\$($HOME/.local/bin/mise activate bash)\"" >>$HOME/.bashrc
fi
if ! command -v mise >/dev/null; then
source $HOME/.bashrc
mise version
BASH_RELOAD=true
fi
if [[ ! -f $HOME/.config/mise/config.toml ]]; then
mise self-update -y 2>&1 >/dev/null
mise settings set experimental true
mise use -g usage
mise settings add idiomatic_version_file_enable_tools ruby
echo mise install successfully for development
else
echo mise already installed!
fi
}
function install_miaou_bash {
if ! command -v curl >/dev/null; then
sudo apt install -y git curl
fi
if [[ ! -d /opt/miaou-bash ]]; then
curl https://git.artcode.re/miaou/miaou-bash/raw/branch/main/install.sh | sudo bash -s
else
echo miaou-bash already installed!
fi
}
function install_requirements {
if [[ -n $(dpkg -l $DEBIAN_PACKAGES 2>&1 | tail -n +6 | grep -v ^ii) ]]; then
sudo apt-get install -y $DEBIAN_PACKAGES
else
echo requirements already installed!
fi
}
function optional_bash_reload {
if $BASH_RELOAD; then
echo 'reloading bash for mise'
exec bash
fi
}
function warn_on_gitconfig_missing {
if [[ ! -f $HOME/.gitconfig ]]; then
echo 'WARNING: git config missing'
echo 'before creating a rails project, you should probably configure some user settings:'
echo ' git config --global --edit'
fi
}
# MAIN
set -Eue
install_requirements
install_miaou_bash
install_mise
install_ruby
install_rails_templating
warn_on_gitconfig_missing
optional_bash_reload