#!/bin/bash . $(ffoom path) ffoo import inigrep ffoo import pretty ffoo import sync ffoo import saturnin_zleep # # self help # available_commands() { echo afk echo at echo back echo gone echo ooo echo wfh echo undocking echo zleeping } usage() { cmd_hint=$( available_commands \ | head -c -1 \ | tr '\n' '|' ) usage_is "$cmd_hint" } # # querying # where_i_am() { # # what is my physical location? # if=$(inigrep -p iam.using.if) gwmac=$(arp | grep "^gateway\\>.*\\<$if\$" | tr ' ' '\n' | grep :) inigrep -p iam.seeing.gw.$gwmac || echo OUT } set_status() { # # set public status $1 by command in conf file # local what=$1 inigrep -p iam.saying.like.this.$what | bash } # # hooks # run_hook() { local name=$1 local cmd=$2 local arg=$3 inigrep -p iam.hooking.$name.$cmd \ | SATURNIN_IAM_CMD=$cmd \ SATURNIN_IAM_ARG=$arg \ bash } # # subcommand handlers # i_am_afk() { # # away from keyboard; blocks until i'm back again # mocp --pause set_status "afk" i_am_bbldone # make sure to set lang to default before locking slock set_status "atk" } i_am_at() { # # Just say where I am # where_i_am } i_am_back() { # # returning to work (should be called by other subcommands) # set_status "back" klist -s || urxvt -e kinit } i_am_gone() { # # gone fishin' # kdestroy ssh-add -D set_status "gone" i_am_afk i_am_back } i_am_ooo() { # # too dangerous to implement # die "not implemented" } i_am_wfh() { # # too dangerous to implement # die "not implemented" } i_am_undocking() { # # i.e. hibernated # inigrep -p iam.undocking.like | bash - } i_am_zleeping() { # # i.e. hibernated # set_status "zleeping" zleep i_am_back } cmd=$1 test -n "$cmd" || usage available_commands | grep -qse ^$1 || usage shift run_hook before $cmd $1 i_am_$cmd $1 run_hook after $cmd $1