commit 11de21e3c9c327c91de29bf2505ec1e821ff0d51
parent d5ca332ad5f6fc0216b1dc3611debbe59a4305d7
Author: Jaromil <jaromil@dyne.org>
Date: Sun, 19 Mar 2017 23:12:23 +0100
several fixes to new parameter handling
still need to clean up use of ${PARAM} everywhere, but almost done
Diffstat:
4 files changed, 101 insertions(+), 86 deletions(-)
diff --git a/src/jaro b/src/jaro
@@ -345,7 +345,6 @@ check_bin() {
fi
func "Mutt binary: `command -v mutt`"
func "Notmuch binary: `command -v notmuch`"
- func "Alot binary: `command -v alot`"
func "Keyring set: $JARO_KEYRING"
if [[ "$JARO_KEYRING" == "" ]]; then
# check for pass, else fallback
@@ -552,10 +551,12 @@ main() {
option.parse $* || return 1
func "subcommand: $subcommand"
+ # print out version
if option.is_set -v; then
- cat $JAROMAILEXEC | awk '/^#/ {print $0 } !/^#/ {exit}'
- echo
+ cat $JAROMAILEXEC | awk '/^#/ {print $0 } !/^#/ {exit}'
+ echo
fi
+
{ option.is_set -a } && { account=`option.value -a` }
{ option.is_set -l } && {
if [[ "`option.value -l`" =~ "black" ]]; then
@@ -581,11 +582,11 @@ main() {
{ option.is_set -f } && { FORCE=1 }
# clean up options from param
- PARAM=(${PARAM// -? /})
+ # PARAM=(${PARAM// -? /})
case "$subcommand" in
- compose) compose ${PARAM}
+ compose) compose ${option_params}
exitcode=$?
;;
@@ -595,17 +596,17 @@ main() {
fetch)
account=${account:-default}
- fetch ${PARAM} && \
+ fetch ${option_params} && \
update_filters && \
filter_maildir incoming && \
update_notmuch
;;
- send) send ${PARAM}
+ send) send ${option_params}
exitcode=$?
;;
- peek) peek ${PARAM}
+ peek) peek ${option_params}
exitcode=$?
;;
@@ -615,13 +616,13 @@ main() {
;;
replay)
- replay ${PARAM}
+ replay ${option_params}
exitcode=$?
;;
update|init)
[[ "$PARAM" = "" ]] || {
- for p in $PARAM; do
+ for p in $option_params; do
[[ "$p" = "." ]] && p=$PWD
[[ -d $p ]] && MAILDIRS=$p
done
@@ -642,7 +643,7 @@ main() {
;;
# notmuch search with file output
- search) search ${PARAM}
+ search) search ${option_params}
[[ $DRYRUN = 1 ]] || {
for i in ${search_results=}; do
print - "$i"
@@ -650,7 +651,7 @@ main() {
} | save_replay $subcommand
;;
- alot) alot_search ${PARAM} ;;
+ alot) alot_search ${option_params} ;;
notmuch)
notice "Command: notmuch ${PARAM}"
@@ -658,76 +659,76 @@ main() {
exitcode=$?
;;
- addr|list) search_addressbook ${PARAM}
+ addr|list) search_addressbook ${option_params}
;;
- complete) complete ${PARAM}
+ complete) complete ${option_params}
exitcode=$?
;;
- isknown) sender_isknown ${PARAM}
+ isknown) sender_isknown ${option_params}
exitcode=$?
;;
- learn) learn ${PARAM}
+ learn) learn ${option_params}
exitcode=$?
;;
- import) import ${PARAM}
+ import) import ${option_params}
exitcode=$?
;;
"export")
- export_vcard ${PARAM}
+ export_vcard ${option_params}
;;
- abook) edit_abook ${PARAM}
+ abook) edit_abook ${option_params}
exitcode=$?
;;
- stat*) stats ${PARAM} | sort -n
+ stat*) stats ${option_params} | sort -n
exitcode=$?
;;
edit|vim) edit_file ${option_params} ;;
- open) x_mutt -f ${PARAM} ;;
- preview) preview_file ${PARAM} ;;
+ open) x_mutt -f ${option_params} ;;
+ preview) preview_file ${option_params} ;;
mkdir)
- DEBUG=1 maildirmake ${PARAM}
+ DEBUG=1 maildirmake ${option_params}
exitcode=$?
;;
copy)
- maildir_shift ${PARAM} cp
+ maildir_shift ${option_params} cp
exitcode=$?
;;
move)
- maildir_shift ${PARAM} mv
+ maildir_shift ${option_params} mv
exitcode=$?
;;
link)
- maildir_shift ${PARAM} ln
+ maildir_shift ${option_params} ln
exitcode=$?
;;
- rmdupes) rmdupes ${PARAM} ;;
- merge) merge ${PARAM} ;;
+ rmdupes) rmdupes ${option_params} ;;
+ merge) merge ${option_params} ;;
filter)
- update_filters ${PARAM}
+ update_filters ${option_params}
[[ $? = 0 ]] || {
error "error updating filters, operation aborted."
break
}
- filter_maildir ${PARAM} | save_replay $subcommand
+ filter_maildir ${option_params} | save_replay $subcommand
exitcode=$?
;;
deliver)
- deliver ${PARAM}
+ deliver ${option_params}
exitcode=$?
;;
@@ -735,7 +736,7 @@ main() {
host=${PARAM:-$imap}
new_password ;;
- # cert) cert ${PARAM} ;; # was checking is_online
+ # cert) cert ${option_params} ;; # was checking is_online
isonline) is_online ${=PARAM}; exitcode=$? ;;
@@ -813,23 +814,23 @@ EOF
;;
# list)
- # list_abook ${PARAM}
+ # list_abook ${option_params}
# exitcode=$?
# ;;
extract|parse)
- extract_addresses ${PARAM} \
+ extract_addresses ${option_params} \
| save_replay $subcommand
exitcode=$?
;;
header|headers)
- extract_headers ${PARAM}
+ extract_headers ${option_params}
exitcode=$?
;;
smtp)
- smtp_send ${PARAM}
+ smtp_send ${option_params}
exitcode=$?
;;
@@ -841,13 +842,13 @@ EOF
;;
ismd)
- maildircheck ${PARAM}
+ maildircheck ${option_params}
[[ $? = 0 ]] && \
- notice "Directory is a maildir: ${PARAM}"
+ notice "Directory is a maildir: ${option_params}"
exitcode=$?
;;
- __unknown:*) # unknown command, pass it to autostart
+ __empty) # unknown command, pass it to autostart
func "no command, autostart"
func "subcommand: $subcommand"
if [[ "$subcommand" = "__empty" ]]; then
@@ -857,34 +858,37 @@ EOF
else
x_mutt -f "$PARAM"
fi
- exitcode=$?
+ fi
+ exitcode=$?
+ ;;
+ __unknown:*)
# argument passed: determine if an email
- elif [[ "$subcommand" = "__unknown" ]]; then
- if isemail "$subcommand"; then
- notice "Composing message to: ${@}"
- # its an email, TODO see if we have it in our addressbook
- x_mutt ${=@}
- exitcode=0
- # or a directory of file
- elif maildircheck "$subcommand"; then
- # is it a maildir? then open
- x_mutt -f "$subcommand"
- exitcode=$?
- elif maildircheck "$MAILDIRS/$subcommand"; then
- x_mutt -f "$MAILDIRS/$subcommand"
- exitcode=$?
- elif [[ -f "$subcommand" ]]; then
- # is it a regular file? then ;attach it
- x_mutt -a ${=@}
- exitcode=0
- else
- # just open; mutt on first unread folder
- x_mutt
- exitcode=$?
-
- fi
- fi
+ subcommand=${subcommand[(ws@:@)2]}
+ func "subcommand: $subcommand"
+ if isemail "$subcommand"; then
+ notice "Composing message to: ${@}"
+ # its an email, TODO see if we have it in our addressbook
+ x_mutt ${=@}
+ exitcode=0
+ # or a directory of file
+ elif maildircheck "$subcommand"; then
+ # is it a maildir? then open
+ x_mutt -f "$subcommand"
+ exitcode=$?
+ elif maildircheck "$MAILDIRS/$subcommand"; then
+ x_mutt -f "$MAILDIRS/$subcommand"
+ exitcode=$?
+ elif [[ -f "$subcommand" ]]; then
+ # is it a regular file? then ;attach it
+ x_mutt -a ${=@}
+ exitcode=0
+ else
+ # just open; mutt on first unread folder
+ x_mutt
+ exitcode=$?
+
+ fi
;;
esac
diff --git a/src/zlibs/addressbook b/src/zlibs/addressbook
@@ -89,7 +89,9 @@ lookup_email() {
}
complete() {
- func "complete: $1 (list $list)"
+ fn complete $*
+ req=(list)
+ ckreq || return 1
# completion on configured groups
{ test -r "$MAILDIRS/Groups" } && {
@@ -120,6 +122,7 @@ complete() {
}
sender_isknown() {
+ fn sender_isknown $*
# extract only headers from stdin
head="`awk '
{ print $0 }
@@ -135,11 +138,10 @@ sender_isknown() {
}
learn() {
- func "learning ${PARAM[1]} in stdin piped mails"
+ fn learn $*
[[ $DRYRUN == 1 ]] && func "running in dryrun mode, no entries added to addressbook"
- what=sender
- [[ "$1" = "" ]] || { what="$1" }
+ what=${1:-sender}
func "learning from $what"
# zero e_addr map before using e_parse
@@ -207,14 +209,12 @@ learn() {
# import emails from VCard into abook
# checks if the emails are already known
import_vcard() {
- act "import VCard from file: $1"
-
- [[ -r "$1" ]] || {
- error "File not found: $1"
- return 1
- }
-
+ fn import_vcard $*
vcard="$1"
+ req=(vcard ADDRESSBOOK)
+ freq=($vcard)
+ ckreq || return 1
+
head -n1 $vcard | grep '^BEGIN:VCARD' > /dev/null
[[ $? = 0 ]] || {
@@ -289,14 +289,11 @@ BEGIN { newcard=0; c=0; name=""; email=""; }
# import address lists from stdin
import() {
+ fn import $*
# case insensitive match
unsetopt CASE_MATCH
- _arg=${PARAM[1]}
-
- func "import() arg: $_arg (param: $PARAM)"
-
notice "Import address list from stdin into addressbook $list"
_new=0
@@ -343,6 +340,7 @@ import() {
# export old addressbook format to abook
export_old_to_abook() {
+ fn export_old_to_abook $*
[[ -r $MAILDIRS/Addressbook ]] || {
notice "Old addressbook format not found"
@@ -424,6 +422,9 @@ convert_addresses() {
}
edit_abook() {
+ fn edit_abook $*
+ req=(ADDRESSBOOK)
+ ckreq || return 1
abook --config <(cat <<EOF
set autosave=true
@@ -435,6 +436,10 @@ EOF
# print out all addresses into the selected addressbook
list_abook() {
+ fn list_abook $*
+ req=(list ADDRESSBOOK)
+ ckreq || return 1
+
notice "Extracting all addresses in $list"
awk -F'=' '
/^name/ { printf("%s ",$2) }
diff --git a/src/zlibs/email b/src/zlibs/email
@@ -22,12 +22,12 @@
# extract all emails found in stdin, one per line
compose() {
- fn compose
+ fn compose $*
# among the args parse recipient emails and files to attach
local _files=()
local _addrs=()
- for p in ${PARAM}; do
+ for p in $*; do
if [[ -r $p ]]; then
func "attach: $p"
_files+=(-a $p)
@@ -70,7 +70,7 @@ queue() {
notice "Adding mail to the outbox queue"
base="`hostname`-queue-`date +%Y-%m-%d-%H.%M.%S`"
- queue_to=($@)
+ queue_to=($*)
# set it ready for saving in outbux
queue_body="$base"
@@ -186,7 +186,7 @@ fetchall() {
}
fetch() {
- fn fetch
+ fn fetch $*
[[ "$account" = "" ]] && {
fetchall; return $? }
@@ -429,7 +429,7 @@ EOF
# SEND
# this function should send all mails in outbox
send() {
- fn send
+ fn send *
# list mails to send
queue_outbox=`${=find} "${MAILDIRS}/outbox" -type f`
@@ -539,7 +539,7 @@ BEGIN { body=0 }
# PEEK
# this function will open the MTA to the imap server without fetching mails locally
peek() {
- fn peek
+ fn peek $*
read_account ${account}
[[ $? = 0 ]] || {
diff --git a/src/zlibs/maildirs b/src/zlibs/maildirs
@@ -28,6 +28,8 @@ typeset -h formail_cache
# returns 0 (success) if yes
# no in all other cases
maildircheck() {
+ maildircheck $*
+
{ test -r "$1" } || {
func "Maildir not existing: $1"
return 1 }
@@ -44,6 +46,7 @@ maildircheck() {
}
maildirmake() {
+ fn maildirmake $*
{ test -z "$1" } && {
error "internal error: missing argument for maildirmake"
@@ -73,6 +76,8 @@ maildirmake() {
# fills up all maildirs array
list_maildirs() {
+ fn list_maildirs $*
+
maildirs=`${=find} "$MAILDIRS" -maxdepth 1 -type d`
for m in ${(f)maildirs}; do
func "$m"
@@ -89,6 +94,7 @@ list_maildirs() {
rmdupes() {
+ fn rmdupes $*
## special argument lastlog
{ test "$1" = "lastlog" } && {