From 4422c3922c23239d4b2c0cb1efdd30d763ed69e6 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Thu, 3 Oct 2019 10:32:50 -0700 Subject: [PATCH] direnv: Add custom stdlib extensions --- default.conf.yaml | 1 + direnv/direnvrc | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 direnv/direnvrc diff --git a/default.conf.yaml b/default.conf.yaml index 4630eea..f49ac09 100644 --- a/default.conf.yaml +++ b/default.conf.yaml @@ -5,6 +5,7 @@ - link: ~/bin: bin/ + ~/.config/direnv/direnvrc: direnv/direnvrc ~/.config/flake8: etc/flake8 ~/.config/git: git/ ~/.config/hg: hg/ diff --git a/direnv/direnvrc b/direnv/direnvrc new file mode 100644 index 0000000..7005b12 --- /dev/null +++ b/direnv/direnvrc @@ -0,0 +1,59 @@ +# From https://github.com/direnv/direnv/wiki/Ruby#-chruby +use_chruby() { + local version + version="${1}" + + [[ "${version}" == --auto ]] && version="$(read_version_file .ruby-version)" + [[ -z "${version}" ]] && return + + local chruby + + if has brew; then + local brew_prefix + brew_prefix="$(brew --prefix)" + + if [[ -e "${brew_prefix}/opt/chruby/share/chruby/chruby.sh" ]]; then + chruby="${brew_prefix}/opt/chruby/share/chruby/chruby.sh" + fi + fi + + [[ -z "${chruby}" ]] && [[ -e /usr/local/share/chruby/chruby.sh ]] && + chruby=/usr/local/share/chruby/chruby.sh + + [[ -z "${chruby}" ]] && return + + source "${chruby}" + chruby "${version}" +} + +# From https://github.com/direnv/direnv/wiki/Find-Up-with-Alternates +find_up_() +{ + ( + while true; do + for v in "${@}"; do + if [[ -f "${v}" ]]; then + echo "${PWD}/${v}" + return 0 + fi + done + + if [[ "${PWD}" == / ]] || [[ "${PWD}" == // ]]; then + return 1 + fi + + cd .. + done + ) +} + +read_version_file() +{ + local file + file="$(find_up_ "${@}")" + + [[ -z "${file}" ]] && return + + watch_file "${file}" + ruby -e "puts ARGF.readline" 2> /dev/null "${file}" +}