mirror of
https://github.com/Tarrasch/zsh-autoenv.git
synced 2024-11-04 17:01:00 +02:00
Improve zsh/zstat integration; also make it handle dirs
This commit is contained in:
parent
5cfc69ad47
commit
6fe08c3fde
34
autoenv.zsh
34
autoenv.zsh
@ -60,13 +60,23 @@ _autoenv_stack_entered_add() {
|
|||||||
_autoenv_stack_entered_mtime[$env_file]=$(_autoenv_get_file_mtime $env_file)
|
_autoenv_stack_entered_mtime[$env_file]=$(_autoenv_get_file_mtime $env_file)
|
||||||
}
|
}
|
||||||
|
|
||||||
_autoenv_get_file_mtime() {
|
|
||||||
if [[ -f $1 ]]; then
|
# zstat_mime helper, conditionally defined.
|
||||||
zstat +mtime $1
|
# Load zstat module, but only its builtin `zstat`.
|
||||||
else
|
if ! zmodload -F zsh/stat b:zstat 2>/dev/null; then
|
||||||
echo 0
|
# If the module is not available, define a wrapper around `stat`, and use its
|
||||||
fi
|
# terse output instead of format, which is not supported by busybox.
|
||||||
}
|
# Assume '+mtime' as $1.
|
||||||
|
_autoenv_get_file_mtime() {
|
||||||
|
setopt localoptions pipefail
|
||||||
|
stat -t $1 2>/dev/null | cut -f13 -d ' ' || echo 0
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_autoenv_get_file_mtime() {
|
||||||
|
zstat +mtime $1 2>/dev/null || echo 0
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Remove an entry from the stack.
|
# Remove an entry from the stack.
|
||||||
_autoenv_stack_entered_remove() {
|
_autoenv_stack_entered_remove() {
|
||||||
@ -132,16 +142,6 @@ _autoenv_debug() {
|
|||||||
}
|
}
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Load zstat module, but only its builtin `zstat`.
|
|
||||||
if ! zmodload -F zsh/stat b:zstat 2>/dev/null; then
|
|
||||||
# If the module is not available, define a wrapper around `stat`, and use its
|
|
||||||
# terse output instead of format, which is not supported by busybox.
|
|
||||||
# Assume '+mtime' as $1.
|
|
||||||
zstat() {
|
|
||||||
stat -t $2 | cut -f13 -d ' '
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Generate hash pair for a given file ($1).
|
# Generate hash pair for a given file ($1).
|
||||||
# A fixed hash value can be given as 2nd arg, but is used with tests only.
|
# A fixed hash value can be given as 2nd arg, but is used with tests only.
|
||||||
|
@ -12,6 +12,8 @@ Add existing entries.
|
|||||||
|
|
||||||
$ mkdir -p sub/sub2
|
$ mkdir -p sub/sub2
|
||||||
$ touch -t 201401010101 sub/file
|
$ touch -t 201401010101 sub/file
|
||||||
|
$ touch -t 201401010102 sub
|
||||||
|
$ touch -t 201401010103 sub/sub2
|
||||||
$ _autoenv_stack_entered_add sub
|
$ _autoenv_stack_entered_add sub
|
||||||
$ _autoenv_stack_entered_add sub/file
|
$ _autoenv_stack_entered_add sub/file
|
||||||
$ _autoenv_stack_entered_add sub/sub2
|
$ _autoenv_stack_entered_add sub/sub2
|
||||||
@ -26,7 +28,7 @@ Add existing entries.
|
|||||||
sub sub/file sub/sub2 non-existing
|
sub sub/file sub/sub2 non-existing
|
||||||
|
|
||||||
$ echo $_autoenv_stack_entered_mtime
|
$ echo $_autoenv_stack_entered_mtime
|
||||||
0 1388538060 0 0 (glob)
|
1388538180 1388538060 1388538120 0
|
||||||
|
|
||||||
Touch the file and re-add it.
|
Touch the file and re-add it.
|
||||||
|
|
||||||
|
@ -71,3 +71,17 @@ Re-add the first one, with a new hash.
|
|||||||
:/tmp/cramtests-*/_autoenv_utils.t/second:7bee8f3b184e1e141ff76efe369c3b8bfc50e64c:1 (glob)
|
:/tmp/cramtests-*/_autoenv_utils.t/second:7bee8f3b184e1e141ff76efe369c3b8bfc50e64c:1 (glob)
|
||||||
:/tmp/cramtests-*/_autoenv_utils.t/first:65eb010197b73ddc109b7210080f97a87f53451e:1 (glob)
|
:/tmp/cramtests-*/_autoenv_utils.t/first:65eb010197b73ddc109b7210080f97a87f53451e:1 (glob)
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
|
|
||||||
|
Explicit calls to _autoenv_get_file_mtime to test alternative implementation
|
||||||
|
of _autoenv_get_file_mtime (via ZDOTDIR.invalid-module_path/).
|
||||||
|
|
||||||
|
$ _autoenv_get_file_mtime non-existing
|
||||||
|
0
|
||||||
|
$ touch -t 201401010101 file
|
||||||
|
$ _autoenv_get_file_mtime file
|
||||||
|
1388538060
|
||||||
|
$ mkdir dir
|
||||||
|
$ touch -t 201401010102 dir
|
||||||
|
$ _autoenv_get_file_mtime dir
|
||||||
|
1388538120
|
||||||
|
Loading…
Reference in New Issue
Block a user