commit 19de22114e68d351ae6e60d18a79eb71a53508d9
parent 6ff616c882c6762bb32b366495ed698406e0c3a3
Author: Jaromil <jaromil@dyne.org>
Date: Sat, 31 Oct 2015 11:58:56 +0100
slight refactoring of search
fixes to multiple arguments and renaming of commands
now running 'alot' is made explicit by command
normal 'search' will print a list of full paths to emails found
Diffstat:
4 files changed, 62 insertions(+), 72 deletions(-)
diff --git a/src/jaro b/src/jaro
@@ -150,6 +150,10 @@ vars+=(e_parsed)
arrs+=(maildirs)
vars+=(last_deliver)
+# global arrays for search
+arrs+=(search_results)
+search_results=()
+
# global variable for mutt binary
vars+=(mutt pgpewrap dotlock)
@@ -473,9 +477,10 @@ main() {
subcommands_opts[index]=""
subcommands_opts[search]=""
- subcommands_opts[nm_search]=""
+ subcommands_opts[alot]=""
subcommands_opts[notmuch]=""
+ subcommands_opts[addr]=""
subcommands_opts[learn]=""
subcommands_opts[forget]=""
@@ -675,9 +680,15 @@ main() {
;;
# notmuch search with file output
- nm_search) nm_search ${PARAM} ;;
+ search) search ${PARAM}
+ [[ $DRYRUN = 1 ]] || {
+ for i in ${search_results=}; do
+ print - "$i"
+ done
+ }
+ ;;
- search) search ${PARAM} ;;
+ alot) alot_search ${PARAM} ;;
notmuch)
notice "Command: notmuch ${PARAM}"
@@ -688,6 +699,8 @@ main() {
# stat) stats ${PARAM} ;;
+ addr) search_addressbook ${PARAM} ;;
+
complete) complete ${PARAM}
exitcode=$?
;;
@@ -729,8 +742,8 @@ main() {
preview) preview_file ${PARAM} ;;
backup) backup ${PARAM}
- exitcode=$?
- ;;
+ exitcode=$?
+ ;;
rmdupes) rmdupes ${PARAM} ;;
merge) merge ${PARAM} ;;
diff --git a/src/zlibs/addressbook b/src/zlibs/addressbook
@@ -70,8 +70,13 @@ insert_address() {
}
search_addressbook() {
- func "search \"$@\" in $list"
- abook --datafile "$ADDRESSBOOK" --mutt-query "${@:l}"
+ fn search_addressbook $*
+
+ abook --datafile "$ADDRESSBOOK" --mutt-query "${*:l}" | awk '
+/^$/ { next }
+{ for(c=2;c<=NF;c++) printf "%s ", $c
+ print "<" $1 ">" }'
+
}
diff --git a/src/zlibs/search b/src/zlibs/search
@@ -27,10 +27,11 @@
# internal use
nm() {
- func "notmuch $@"
+ fn "notmuch $*"
+
[[ -r "$MAILDIRS"/cache/notmuch/rc ]] || nm_setup
lock "$MAILDIRS"/cache/notmuch
- notmuch --config="$MAILDIRS"/cache/notmuch/rc ${@}
+ notmuch --config="$MAILDIRS"/cache/notmuch/rc $*
_res=$?
unlock "$MAILDIRS"/cache/notmuch
[[ $_res = 0 ]] || {
@@ -100,18 +101,23 @@ nm_index() {
}
-nm_search() {
-
+search() {
+ fn search ${=PARAM}
+ func "searching for ${#PARAM} terms"
# launch the search with notmuch
- search_results=`nm search --output=files ${=PARAM}`
+ _results=""
+
+ ztmp
+ # hard limit for list of file results is 100MB here
+ nm search --output=files ${=PARAM} >> $ztmpfile
+ search_results=(`cat $ztmpfile`)
+
[[ $? = 0 ]] || {
error "notmuch search failed with an error"
return 1
}
- act "`print ${search_results} | wc -l` emails found"
- for i in ${(f)search_results}; do
- print - "$i"
- done
+
+ act "${#search_results} emails found"
}
@@ -120,7 +126,7 @@ alot_search() {
read_account
nm_setup
- notice "Searching emails for: $=PARAM"
+ notice "Searching emails for: ${=PARAM}"
# read if there are other email aliases configured
[[ -r "$MAILDIRS"/Aliases.txt ]] && {
@@ -201,75 +207,41 @@ EOF
return $?
}
-search() {
-
- [[ "$PARAM" = "" ]] && {
- error "No search terms specified."
- return 1
+backup() {
+ fn backup $*
+ dst=${PARAM[1]}
+ shift 1 PARAM
+ expr=${=PARAM}
+ req=(dst expr)
+ ckreq
+
+ maildircheck "$dst"
+ [[ $? = 0 ]] || {
+ error "First argument of backup must be a destination maildir"
+ return 1
}
- typeset -al term
- typeset -alU results
-
- for p in ${PARAM}; do
- func "param ${p} is a search term"
- term+=(${p})
- done
-
- [[ "$PARAM" =~ "addr" ]] && {
- # if addr specified search into the addressbook
- notice "Searching addressbook for: ${PARAM//addr/}"
- res=""
- for t in ${term}; do
- [[ "$t" =~ "addr" ]] && continue
- # res+=`search_addressbook ${t}`
- search_addressbook ${t} | awk '
-/^$/ { next }
-{ for(c=2;c<=NF;c++) printf "%s ", $c
- print "<" $1 ">" }'
- done
- return 0
+ [[ "$expr" = "" ]] && {
+ error "No expression set for backup, please indicate what you want to backup"
+ act "For example: date:10y..2y (all mails older than 1 year up to 10 years ago)"
+ act "Or a simple search string, all expressions can be verified using search."
+ return 1
}
- # run search across emails
- alot_search ${=PARAM}
-}
-
-backup() {
id=`datestamp`.$RANDOM
c=0
- dst=${PARAM[1]}
- shift 1 PARAM
- expr=${PARAM}
-
notice "Backup of mails matched by search expression"
act "expression: $expr"
act "destination folder: $dst"
- [[ $DRYRUN = 1 ]] && act "Dryrun mode enabled"
-
- [[ $DRYRUN = 0 ]] && {
- maildircheck "$dst"
- [[ $? = 0 ]] || {
- error "First argument of backup command must be an existing maildir"
- return 1
- }
- }
-
- [[ "$expr" = "" ]] && {
- error "No expression set for backup, please indicate what you want to backup"
- act "For example: d:10y-2y (all mails older than 1 year up to 10 years ago)"
- act "Or a simple search string, all expressions can be verified using search."
- return 1
- }
read_account
nm_setup
- _res=`nm_search ${=expr}`
+ search ${=expr}
[[ $DRYRUN = 0 ]] && {
- for i in ${(f)_res}; do
+ for i in ${search_results}; do
refile $i $dst
[[ $? = 0 ]] || {
# bail out on every single error
@@ -279,6 +251,5 @@ backup() {
}
done
}
-
-
+ return 0
}
diff --git a/src/zlibs/zuper b/src/zlibs/zuper
@@ -254,6 +254,7 @@ _ztmp_destructor() {
fn _ztmp_destructor
for f in $tmpfiles; do
+ func "removed $f"
rm -f "$f"
done
tmpfiles=()