#!/bin/sh -e jipc="/tmp/jipc" [ -p "${jipc}" ] || { echo "ipcc: ${jipc} not found; ipcd not running?" >&2; exit 1; } pebkac() { echo "Usage: ipcc " echo "Or: ee " echo "Or: ff " echo "" echo "Command can be one of 'editor' or 'browser'; argument should be a single file." echo "Simplified wrappers 'ee' for editor and 'ff' for browser can also be used." exit 1 } do_editor() { while [ "${1}" ] do arg="$(readlink -f "${1}")" echo "editor ${arg}" > "${jipc}" shift done } do_browser() { while [ "${1}" ] do arg="${1}" echo "${arg}" | grep -vq '://' && arg="$(readlink -f "${arg}")" echo "browser ${arg}" > "${jipc}" shift done } do_gitk() { [ "${*}" ] || set -- "$(pwd)" while [ "${1}" ] do arg="$(readlink -f "${1}")" echo "gitk ${arg}" > "${jipc}" shift done } do_gitka() { [ "${*}" ] || set -- "$(pwd)" while [ "${1}" ] do arg="$(readlink -f "${1}")" echo "gitka ${arg}" > "${jipc}" shift done } case "$(basename "${0}")" in ipcc) cmd="${1}"; shift ;; ee) cmd="editor" ;; ff) cmd="browser" ;; gitk) cmd="gitk" ;; gitka)cmd="gitka" ;; *) pebkac ;; esac arg="${1}" case "${cmd}" in editor|edit|ee) do_editor "${@}" ;; browser|browse|ff) do_browser "${@}" ;; gitk) do_gitk "${@}" ;; gitka) do_gitka "${@}" ;; *) pebkac ;; esac