mirror of
https://github.com/Tarrasch/zsh-autoenv.git
synced 2024-12-22 02:40:16 +02:00
Add autoenv-edit function to edit current env files (#68)
This commit is contained in:
parent
aa140ac2a0
commit
0f92983d1e
@ -135,6 +135,13 @@ Enable debugging. Multiple levels are supported (max 2).
|
||||
|
||||
Default: `0`
|
||||
|
||||
## Usage
|
||||
|
||||
zsh-autoenv works automatically once installed.
|
||||
|
||||
You can use ``autoenv-edit`` to edit the nearest/current autoenv files.
|
||||
It will use ``$AUTOENV_EDITOR``, ``$EDITOR``, or ``vim`` for editing.
|
||||
|
||||
## Recipes
|
||||
|
||||
### Automatically activate Python virtualenvs
|
||||
|
31
autoenv.zsh
31
autoenv.zsh
@ -355,6 +355,37 @@ _autoenv_get_file_upwards() {
|
||||
done
|
||||
}
|
||||
|
||||
autoenv-edit() {
|
||||
local env_file
|
||||
local -a files
|
||||
local -A check
|
||||
check[enter]=$AUTOENV_FILE_ENTER
|
||||
if [[ "$AUTOENV_FILE_ENTER" != "$AUTOENV_FILE_LEAVE" ]]; then
|
||||
check[leave]=$AUTOENV_FILE_LEAVE
|
||||
fi
|
||||
local f t
|
||||
for t f in ${(kv)check}; do
|
||||
env_file="$f"
|
||||
if ! [[ -f $env_file ]]; then
|
||||
env_file=$(_autoenv_get_file_upwards . $f)
|
||||
if [[ -z $env_file ]]; then
|
||||
echo "No $f file found ($t)." >&2
|
||||
continue
|
||||
fi
|
||||
if ! [[ $AUTOENV_LOOK_UPWARDS == 1 ]]; then
|
||||
echo "Note: found $env_file, but AUTOENV_LOOK_UPWARDS is disabled."
|
||||
fi
|
||||
fi
|
||||
files+=($env_file)
|
||||
done
|
||||
if [[ -z "$files" ]]; then
|
||||
return 1
|
||||
fi
|
||||
echo "Editing $files.."
|
||||
local editor
|
||||
editor="${${AUTOENV_EDITOR:-$EDITOR}:-vim}"
|
||||
eval $editor "$files"
|
||||
}
|
||||
|
||||
_autoenv_chpwd_handler() {
|
||||
_autoenv_debug "Calling chpwd handler: PWD=$PWD"
|
||||
|
70
tests/autoenv-edit.t
Normal file
70
tests/autoenv-edit.t
Normal file
@ -0,0 +1,70 @@
|
||||
$ source $TESTDIR/setup.zsh || return 1
|
||||
|
||||
$ set | sort > before
|
||||
|
||||
$ export EDITOR=echo
|
||||
|
||||
$ autoenv-edit
|
||||
No .autoenv.zsh file found (enter).
|
||||
No .autoenv_leave.zsh file found (leave).
|
||||
[1]
|
||||
|
||||
$ touch .autoenv.zsh
|
||||
$ autoenv-edit
|
||||
No .autoenv_leave.zsh file found (leave).
|
||||
Editing .autoenv.zsh..
|
||||
.autoenv.zsh
|
||||
|
||||
$ AUTOENV_FILE_LEAVE=$AUTOENV_FILE_ENTER
|
||||
$ autoenv-edit
|
||||
Editing .autoenv.zsh..
|
||||
.autoenv.zsh (glob)
|
||||
|
||||
$ mkdir sub
|
||||
$ cd -q sub
|
||||
$ autoenv-edit
|
||||
Editing ../.autoenv.zsh..
|
||||
../.autoenv.zsh
|
||||
|
||||
Supports command with args for EDITOR.
|
||||
|
||||
$ export EDITOR='printf file:%s\\n'
|
||||
$ autoenv-edit
|
||||
Editing ../.autoenv.zsh..
|
||||
file:../.autoenv.zsh
|
||||
|
||||
Supports alias for EDITOR.
|
||||
|
||||
$ alias myeditor_alias='printf file:%s'
|
||||
$ export EDITOR=myeditor_alias
|
||||
$ autoenv-edit
|
||||
Editing ../.autoenv.zsh..
|
||||
file:../.autoenv.zsh (no-eol)
|
||||
|
||||
Falls back to "vim" for EDITOR.
|
||||
|
||||
$ alias vim='printf vim_file:%s'
|
||||
$ unset EDITOR
|
||||
$ autoenv-edit
|
||||
Editing ../.autoenv.zsh..
|
||||
vim_file:../.autoenv.zsh (no-eol)
|
||||
|
||||
Note with AUTOENV_LOOK_UPWARDS=0
|
||||
|
||||
$ EDITOR=true
|
||||
$ AUTOENV_LOOK_UPWARDS=0
|
||||
$ autoenv-edit
|
||||
Note: found ../.autoenv.zsh, but AUTOENV_LOOK_UPWARDS is disabled.
|
||||
Editing ../.autoenv.zsh..
|
||||
|
||||
$ AUTOENV_FILE_LEAVE=.autoenv_leave.zsh
|
||||
$ touch ../$AUTOENV_FILE_LEAVE
|
||||
$ autoenv-edit
|
||||
Note: found ../.autoenv.zsh, but AUTOENV_LOOK_UPWARDS is disabled.
|
||||
Note: found ../.autoenv_leave.zsh, but AUTOENV_LOOK_UPWARDS is disabled.
|
||||
Editing ../.autoenv.zsh ../.autoenv_leave.zsh..
|
||||
|
||||
$ touch $AUTOENV_FILE_LEAVE
|
||||
$ autoenv-edit
|
||||
Note: found ../.autoenv.zsh, but AUTOENV_LOOK_UPWARDS is disabled.
|
||||
Editing ../.autoenv.zsh .autoenv_leave.zsh..
|
Loading…
Reference in New Issue
Block a user