11#! /usr/bin/env bash
22set -euo pipefail
33
4- if ! command -v curl > /dev/null 2>&1 ; then
5- echo " curl is required to fetch GitHub Pages versions metadata"
6- exit 1
7- fi
4+ for cmd in curl git sed; do
5+ if ! command -v " ${cmd} " > /dev/null 2>&1 ; then
6+ echo " ${cmd} is required for .devcontainer/post-create.sh"
7+ exit 1
8+ fi
9+ done
810
9- if ! command -v ruby > /dev/null 2>&1 ; then
10- echo " ruby is required to parse GitHub Pages versions metadata"
11- exit 1
11+ if command -v apt-get > /dev/null 2>&1 ; then
12+ packages=(
13+ build-essential
14+ cmake
15+ pkg-config
16+ libffi-dev
17+ libyaml-dev
18+ libssl-dev
19+ zlib1g-dev
20+ libreadline-dev
21+ libgdbm-dev
22+ libncurses-dev
23+ libssh2-1-dev
24+ )
25+
26+ missing_packages=()
27+ for package in " ${packages[@]} " ; do
28+ if ! dpkg-query -W -f=' ${Status}' " ${package} " 2> /dev/null | grep -q ' install ok installed' ; then
29+ missing_packages+=(" ${package} " )
30+ fi
31+ done
32+
33+ if [[ ${# missing_packages[@]} -gt 0 ]]; then
34+ echo " Installing Ruby build dependencies: ${missing_packages[*]} "
35+ if command -v sudo > /dev/null 2>&1 ; then
36+ sudo apt-get update
37+ sudo apt-get install -y " ${missing_packages[@]} "
38+ else
39+ apt-get update
40+ apt-get install -y " ${missing_packages[@]} "
41+ fi
42+ fi
1243fi
1344
14- pages_ruby_version=" $( {
15- curl -fsSL https://pages.github.com/versions.json
16- } | ruby -rjson -e ' print JSON.parse(STDIN.read).fetch("ruby")' ) "
45+ echo " Initializing/updating git submodules"
46+ git submodule update --init --recursive
1747
18- if [[ -z " ${pages_ruby_version} " ]] ; then
19- echo " Could not determine Ruby version from https://pages.github.com/versions.json"
48+ versions_json= " $( curl -fsSL https://pages.github.com/versions.json ) " || {
49+ echo " Failed to fetch https://pages.github.com/versions.json"
2050 exit 1
21- fi
51+ }
52+
53+ pages_ruby_version=" $(
54+ printf ' %s' " ${versions_json} " |
55+ sed -n ' s/.*"ruby"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' |
56+ head -n 1
57+ ) "
2258
2359echo " GitHub Pages Ruby version: ${pages_ruby_version} "
2460
25- if ! command -v git > /dev/null 2>&1 ; then
26- echo " git is required to initialize submodules "
61+ if [[ -z " ${pages_ruby_version} " ]] ; then
62+ echo " Could not determine Ruby version from https://pages.github.com/versions.json "
2763 exit 1
2864fi
2965
30- echo " Initializing/updating git submodules"
31- git submodule update --init --recursive
32-
33- # RVM scripts can reference internal variables before they are initialized,
34- # which fails under `set -u` (for example: `_system_name: unbound variable`).
35- # Temporarily disable nounset while sourcing and invoking RVM.
36- nounset_was_set=0
37- if [[ $- == * u* ]]; then
38- nounset_was_set=1
39- set +u
66+ if [[ ! -d " $HOME /.rbenv" ]]; then
67+ git clone --depth 1 https://github.com/rbenv/rbenv.git " $HOME /.rbenv"
4068fi
4169
42- if [[ -s /usr/local/rvm/scripts/rvm ]]; then
43- source /usr/local/rvm/scripts/rvm
44- elif [[ -s " $HOME /.rvm/scripts/rvm" ]]; then
45- source " $HOME /.rvm/scripts/rvm"
46- else
47- echo " RVM was not found; unable to auto-install Ruby ${pages_ruby_version} "
48- exit 1
70+ if [[ ! -d " $HOME /.rbenv/plugins/ruby-build" ]]; then
71+ mkdir -p " $HOME /.rbenv/plugins"
72+ git clone --depth 1 https://github.com/rbenv/ruby-build.git " $HOME /.rbenv/plugins/ruby-build"
4973fi
5074
51- rvm install " ${pages_ruby_version} " --quiet-curl
52- rvm use " ${pages_ruby_version} "
53- rvm alias create default " ${pages_ruby_version} "
75+ export PATH=" $HOME /.rbenv/bin:$HOME /.rbenv/shims:$PATH "
76+ eval " $( rbenv init - bash) "
5477
55- if [[ " ${nounset_was_set} " -eq 1 ]]; then
56- set -u
57- fi
78+ rbenv install -s " ${pages_ruby_version} "
79+ rbenv global " ${pages_ruby_version} "
80+ rbenv rehash
81+
82+ for profile in " $HOME /.bashrc" " $HOME /.zshrc" ; do
83+ if [[ -f " $profile " ]] && ! grep -q ' rbenv init - bash' " $profile " ; then
84+ {
85+ echo
86+ echo ' # Load rbenv'
87+ echo ' export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"'
88+ echo ' eval "$(rbenv init - bash)"'
89+ } >> " $profile "
90+ fi
91+ done
5892
5993gem install bundler --no-document
94+ rbenv rehash
95+ mkdir -p " $HOME /.local/bin"
96+ ln -sf " $HOME /.rbenv/shims/bundle" " $HOME /.local/bin/bundle"
6097bundle install
0 commit comments