]> Sergey Matveev's repositories - zsh-autoenv.git/commitdiff
Add source file
authorArash Rouhani <miffoljud@gmail.com>
Sun, 8 Sep 2013 15:06:26 +0000 (17:06 +0200)
committerArash Rouhani <miffoljud@gmail.com>
Sun, 8 Sep 2013 15:06:26 +0000 (17:06 +0200)
autoenv.zsh [new file with mode: 0644]

diff --git a/autoenv.zsh b/autoenv.zsh
new file mode 100644 (file)
index 0000000..287be05
--- /dev/null
@@ -0,0 +1,65 @@
+# Stolen from
+# https://github.com/joshuaclayton/dotfiles/blob/master/zsh_profile.d/autoenv.zsh
+
+export ENV_AUTHORIZATION_FILE=$HOME/.env_auth
+
+_dotenv_hash_pair() {
+  env_file=$1
+  env_shasum=$(shasum $env_file | cut -d' ' -f1)
+  echo "$env_file:$env_shasum"
+}
+
+_dotenv_authorized_env_file() {
+  env_file=$1
+  pair=$(_dotenv_hash_pair $env_file)
+  touch $ENV_AUTHORIZATION_FILE
+  \grep -Gq $pair $ENV_AUTHORIZATION_FILE
+}
+
+_dotenv_authorize() {
+  env_file=$1
+  _dotenv_deauthorize $env_file
+  _dotenv_hash_pair $env_file >> $ENV_AUTHORIZATION_FILE
+}
+
+_dotenv_deauthorize() {
+  env_file=$1
+  echo $(grep -Gv $env_file $ENV_AUTHORIZATION_FILE) > $ENV_AUTHORIZATION_FILE
+}
+
+_dotenv_print_unauthorized_message() {
+  echo "Attempting to load unauthorized env: $1"
+  echo ""
+  echo "**********************************************"
+  echo ""
+  cat $1
+  echo ""
+  echo "**********************************************"
+  echo ""
+  echo "Would you like to authorize it? (y/n)"
+}
+
+_dotenv_source_env() {
+  local env_file="$PWD/.env"
+
+  if [[ -f $env_file ]]
+  then
+    if _dotenv_authorized_env_file $env_file
+    then
+      source $env_file
+      return 0
+    fi
+
+    _dotenv_print_unauthorized_message $env_file
+
+    read answer
+
+    if [[ $answer == 'y' ]]
+    then
+      _dotenv_authorize $env_file
+      source $env_file
+    fi
+  fi
+}
+
+chpwd_functions=($chpwd_functions _dotenv_source_env)