/
deepdive
executable file
·96 lines (83 loc) · 2.35 KB
/
deepdive
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env bash
# DeepDive
# Usage: deepdive COMMAND [ARG]...
#
# To enable bash completion for deepdive commands, run:
# $ source $(deepdive whereis installed etc/deepdive_bash_completion.sh)
#
##
# Generated: 2015-06-19
set -eu
if [ -z "${DEEPDIVE_SHELL:-}" ]; then
Self=$(readlink -f "$0" 2>/dev/null || {
# XXX readlink -f is only available in GNU coreutils
cd $(dirname -- "$0")
n=$(basename -- "$0")
if [ -L "$n" ]; then
L=$(readlink "$n")
if [ x"$L" != x"${L#/}" ]; then
echo "$L"; exit
else
cd "$(dirname -- "$L")"
n=$(basename -- "$L")
fi
fi
echo "$(pwd -P)/$n"
})
Here=$(dirname "$Self")
# Keep a backup of some environment variables
for v in PATH
do vbak=DEEPDIVE_ORIG_$v
declare -p $v &>/dev/null || continue
! declare -p $vbak &>/dev/null || continue
export "$vbak=${!v}"
done
# Setup environment
unset CDPATH
export DEEPDIVE_HOME=${Here%/bin}
# make sure DeepDive utilities are on PATH
PATH="$DEEPDIVE_HOME/util:$DEEPDIVE_HOME/bin:$DEEPDIVE_HOME/lib/bundled/.all/bin:$PATH"
export PATH
# make sure ddlib in Python is available
PYTHONPATH="$DEEPDIVE_HOME"/lib/python:"${PYTHONPATH:+:$PYTHONPATH}"
export PYTHONPATH
# OS specific workarounds via tweaking the environment
case $(uname) in
Darwin)
# XXX mkmimo can reboot Mac unless its use of poll(2) is throttled
export THROTTLE_SLEEP_MSEC=1
;;
esac
export DEEPDIVE_SHELL=$0
fi
# Process common options
while getopts "C:" o; do
case $o in
C) export DEEPDIVE_APP=$OPTARG ;;
esac
done
shift $(($OPTIND - 1))
# show usage with deepdive version at the first line
usage_with_version() {
. "$DEEPDIVE_HOME"/.build-info.sh
echo "# DeepDive ($version)"
usage "$0" "$@" | tail -n +2
[[ $# -eq 0 ]]
}
# Process input arguments
[ $# -gt 0 ] || {
usage_with_version "No COMMAND given" || true
echo
deepdive-help | sed -n '/^# Available COMMANDs/,$p'
false
}
Cmd=$1; shift
# Check if it's a valid command
exe=deepdive-"$Cmd"
if type "$exe" &>/dev/null; then
set -- "$exe" "$@"
else
usage_with_version "$Cmd: invalid COMMAND"
fi
# Run given command under this environment
exec "$@"