commit f84699d0b84fa073ff33e7b8aba4955e030ebbe0
parent 88727d750e07b549325c4c9d38035a404a40adf0
Author: Jan Pobrislo <ccx@webprojekty.cz>
Date: Tue, 15 Mar 2016 15:20:46 +0100
changed fs_type_or_missing to handle bzr cdiff flag itself, printing errors appropriately
Diffstat:
1 file changed, 25 insertions(+), 11 deletions(-)
diff --git a/zsh-functions/confz_fileset_init b/zsh-functions/confz_fileset_init
@@ -7,7 +7,7 @@
zmodload -F zsh/stat b:zstat
zmodload -m -F zsh/files b:zf_\*
-typeset -g -A fileset_stat_cache fileset_stat_cur fileset_ftypes
+typeset -g -A fileset_stat_cache fileset_stat_cur fileset_ftypes fileset_typenames
typeset -g fileset_stat_cur fileset_stat_next_id fileset_stat_cur_type fileset_stat_cur_perm
fileset_ftypes=( # convert hex type to a word
@@ -22,6 +22,15 @@ fileset_ftypes=( # convert hex type to a word
1 p # FIFO pipe
)
+fileset_typenames=(
+ S "unix socket"
+ L "symbolic link"
+ f "plain file"
+ b "block device"
+ c "character device"
+ p "named pipe"
+)
+
fileset_reset_cache(){
# omit unsetting used variables for now
# probably no particular gain in freeing them
@@ -80,7 +89,18 @@ confz_fs_p_check() {
confz_fs_type_or_missing_check() {
checkvars filename flags filetype
- ! fileset_stat $parent || [[ $fileset_stat_cur_type == $vars[filetype] ]]
+ if fileset_stat $vars[filename]; then
+ if [[ $fileset_stat_cur_type == $vars[filetype] ]]; then
+ return 0
+ elif [[ $vars[flags] == *'!'* ]]; then
+ fail_reason="expected ${fileset_typenames[${vars[filetype]}]}, got ${fileset_typenames[$fileset_stat_cur_type]}: ${(qqq)vars[filename]}"
+ return 1
+ else
+ die "$0: expected ${fileset_typenames[${vars[filetype]}]}, got ${fileset_typenames[$fileset_stat_cur_type]}: ${(qqq)vars[filename]}"
+ fi
+ else
+ return 0
+ fi
}
confz_fs_type_or_missing_do() {
@@ -116,9 +136,7 @@ confz_fs_l_check() {
require fs_p :filename
fi
- if [[ $vars[flags] == *'!'* ]]; then
- require fs_type_or_missing :filename :flags filetype=L
- fi
+ require fs_type_or_missing :filename :flags filetype=L
fileset_stat $vars[filename] && \
[[ $fileset_stat_cur_type == L ]] && \
@@ -175,9 +193,7 @@ confz_fs_f_check() {
require fs_p :filename
fi
- if [[ $vars[flags] == *'!'* ]]; then
- require fs_type_or_missing :filename :flags filetype=f
- fi
+ require fs_type_or_missing :filename :flags filetype=f
fileset_stat $vars[filename] && [[ $fileset_stat_cur_type == f ]]
}
@@ -191,9 +207,7 @@ confz_fs_f_do() {
confz_fs_d_check() {
checkvars filename flags
- if [[ $vars[flags] == *'!'* ]]; then
- require fs_type_or_missing :filename :flags filetype=d
- fi
+ require fs_type_or_missing :filename :flags filetype=d
if [[ $vars[flags] == *p* ]]; then
do_command=( fileset_resetcmd mkdir -p $vars[filename] )