diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..18618392c --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,14 @@ +{ + "name": "Homebrew/homebrew-bundle", + "image": "ghcr.io/homebrew/brew:latest", + "workspaceFolder": "/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-bundle/", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-bundle/,type=bind,consistency=cached", + "onCreateCommand": "./.devcontainer/on-create-command.sh", + "postCreateCommand": "bundle install", + "remoteEnv": { + "HOMEBREW_GITHUB_API_TOKEN": "${localEnv:GITHUB_TOKEN}", + "PATH": "${containerEnv:PATH}:/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin", + "EDITOR": "code --wait", + "VISUAL": "code --wait" + } + } diff --git a/.devcontainer/on-create-command.sh b/.devcontainer/on-create-command.sh new file mode 100755 index 000000000..67c8f5a61 --- /dev/null +++ b/.devcontainer/on-create-command.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +set -eux -o pipefail + +# fix permissions so Homebrew and Bundler don't complain +sudo chmod -R g-w,o-w /home/linuxbrew + +# everything below is too slow to do unless prebuilding so skip it +CODESPACES_ACTION_NAME="$(jq --raw-output '.ACTION_NAME' /workspaces/.codespaces/shared/environment-variables.json)" +if [[ "${CODESPACES_ACTION_NAME}" != "createPrebuildTemplate" ]] +then + echo "Skipping slow items, not prebuilding." + exit 0 +fi + +# install Homebrew's development gems +brew install-bundler-gems --groups=all + +# install some useful development things +sudo apt-get update + +apt_get_install() { + sudo apt-get install --yes --no-install-recommends \ + -o Dpkg::Options::=--force-confdef \ + -o Dpkg::Options::=--force-confnew \ + "$@" +} + +apt_get_install \ + openssh-server \ + zsh + +# Ubuntu 18.04 doesn't include zsh-autosuggestions +if ! grep -q "Ubuntu 18.04" /etc/issue &>/dev/null +then + apt_get_install zsh-autosuggestions +fi + +# Start the SSH server so that `gh cs ssh` works. +sudo service ssh start