]> CyberLeo.Net >> Repos - CDN/j.git/blob - ipcc
ipcc: handle multiple arguments for browser and editor; canonicalize filenames to...
[CDN/j.git] / ipcc
1 #!/bin/sh -e
2
3 jipc="/tmp/jipc"
4
5 [ -p "${jipc}" ] || { echo "ipcc: ${jipc} not found; ipcd not running?" >&2; exit 1; }
6
7 pebkac() {
8   echo "Usage: ipcc <command> <argument>"
9   echo "Or:    ee <argument>"
10   echo "Or:    ff <argument>"
11   echo ""
12   echo "Command can be one of 'editor' or 'browser'; argument should be a single file."
13   echo "Simplified wrappers 'ee' for editor and 'ff' for browser can also be used."
14   exit 1
15 }
16
17 do_editor() {
18   while [ "${1}" ]
19   do
20     arg="${1}"
21     arg="$(readlink -f "${arg}")"
22     echo "editor ${arg}" > "${jipc}"
23     shift
24   done
25 }
26
27 do_browser() {
28   while [ "${1}" ]
29   do
30     arg="${1}"
31     echo "${arg}" | grep -vq '://' && arg="$(readlink -f "${arg}")"
32     echo "browser ${arg}" > "${jipc}"
33     shift
34   done
35 }
36
37 case "$(basename "${0}")" in
38 ipcc) cmd="${1}"; shift ;;
39 ee)   cmd="editor" ;;
40 ff)   cmd="browser" ;;
41 *)    pebkac ;;
42 esac
43 arg="${1}"
44
45 case "${cmd}" in
46 editor|edit|ee) do_editor "${@}" ;;
47 browser|browse|ff) do_browser "${@}" ;;
48 *) pebkac ;;
49 esac