fileset

git mirror of https://ccx.te2000.cz/bzr/fileset
git clone https://ccx.te2000.cz/git/fileset
Log | Files | Refs | README

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:
Mzsh-functions/confz_fileset_init | 36+++++++++++++++++++++++++-----------
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] )