Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

PATCH: new logger completion



This is another of the few remaining util-linux utilities for which we
didn't have a completion.

It also handles the busybox implementation because I tried (and failed)
to persuade an OpenWRT access point to send it's log messages elsewhere
over the network.

Oliver

diff --git a/_logger b/_logger
new file mode 100644
index 000000000..0d47d2f03
--- /dev/null
+++ b/_logger
@@ -0,0 +1,80 @@
+#compdef logger
+
+local variant ign
+local -a args common
+local -a priorities
+
+_pick_variant -r variant linux=util-linux busybox=BusyBox $OSTYPE -V
+
+priorities=( {kern,user,mail,daemon,auth,syslog,lpr,news,uucp,cron,authpriv,ftp,ntp,security,console,local{0..7}}.{emerg,panic,alert,crit,err,error,warn,warning,notice,info,debug} )
+args=( "(--id)-i[log the logger command's pid]" )
+common=(
+  '(-f --file --journald *)'{-f+,--file=}'[log contents of specified file]:file:_files'
+  '(-s --stderr)'{-s,--stderr}'[output message to standard error as well]'
+  '(-P --port)'{-P+,--port}'[use specified port for UDP or TCP connection]:port [514]:_ports'
+  '(-p --priority)'{-p+,--priority}'[mark message with specified priority]:priority:_multi_parts . priorities'
+  '(-t --tag)'{-t+,--tag}"[specify tag to mark log line with]:tag [$USER]"
+)
+
+case $variant in
+  (net|open)bsd*)
+    args+=( ${(M)common:#*\)-[fpst]*}
+      '-c[write the message to the console if unable to use syslogd(8)]'
+    )
+  ;|
+  dragonfly*|freebsd*)
+    args+=(
+      '(-6)-4[use IPv4 addresses only]'
+      '(-4)-6[use IPv6 addresses only]'
+      '-A[send the message to all addresses]'
+    )
+  ;|
+  darwin*|dragonfly*) args+=( ${(M)common:#*\)-[sfpt]*} ) ;|
+  freebsd*)
+    args+=( ${common:#*\)--*}
+      "-H+[set value for hostname in message header]:hostname [${HOST%%.*}]"
+      '-h+[write to specified remote syslog server or socket]: : _alternative
+        "hosts\:server\:_hosts"
+        "sockets\:socket\:_files -g \*\(=\)"'
+      '-S+[specify source address and port when using -h]: :_bind_addresses -0bh'
+    )
+  ;;
+  dragonfly*)
+    args+=( '-h+[write to specified remote syslog server]:server:_hosts' )
+  ;;
+  busybox) args=( ${(M)common:#*\)-[spt]*} ) ;; # no -i
+  solaris*) args+=( ${(M)common:#*\)-[fpt]*} ) ;;
+  netbsd*)
+    args+=(
+      '-d+[log this in the structured data (SD) field]:sd field'
+      '-m+[specify message ID used for the message]:message id'
+      '-n[open log file immediately]'
+    )
+  ;;
+  linux)
+    (( $#words > 2 )) && ign='!'
+    args+=( $common
+      "(-i)--id=-[log the given id, or otherwise the pid]::id [$$]:_pids"
+      '(* -e --skip-empty)'{-e,--skip-empty}"[don't log empty lines when processing files]"
+      '--no-act[do everything except the write the log]'
+      '--octet-count[use rfc6587 octet counting]'
+      '(*)--prio-prefix[look for a prefix on every line read from stdin]'
+      '(-S --size)'{-S+,--size=}'[specify maximum size for a single message]:size [1KiB]'
+      '(-n --server)'{-n+,--server=}'[write to specified remote syslog server]:server:_hosts'
+      '(-T --tcp -d --udp)'{-T,--tcp}'[use TCP only]'
+      '(-d --udp -T --tcp)'{-d,--udp}'[use UDP only]'
+      '(--rfc5424 --msgid --sd-id --sd-param)--rfc3164[use the obsolete BSD syslog protocol]'
+      '(--rfc3164)--rfc5424=-[use the syslog protocol (default for remote)]::without:_sequence compadd - notime notq nohost'
+      '(--rfc3164)*--sd-id=[specify rfc5424 structured data ID]:id'
+      '(--rfc3164)*--sd-param=[specify rfc5424 structured data name=value]:data'
+      '(--rfc3164)--msgid=[set rfc5424 message id field]:message id'
+      '(-u --socket)'{-u,--socket=}'[write to specified Unix socket]:socket:compadd -f -M "r\:|_=* r\:|=*" ${${(M)${(f)"$(</proc/net/unix)"}\:#* /*}##* }'
+      '--socket-errors=-[print connection errors when using Unix sockets]::state:(on off auto)'
+      '(* -f --file)--journald=-[write journald entry]::file:_files'
+      "${ign}(- *)"{-h,--help}'[display usage information]'
+      "${ign}(- *)"{-V,--version}'[display version information]'
+    )
+  ;;
+esac
+
+_arguments -s -S -A "-*" $args '*: :_guard "^-*" message'




Messages sorted by: Reverse Date, Date, Thread, Author