| 1 | #!/usr/bin/env bash
|
| 2 | #
|
| 3 | # Manage the bin/ directory.
|
| 4 | #
|
| 5 | # Usage:
|
| 6 | # devtools/bin.sh <function name>
|
| 7 |
|
| 8 | set -o nounset
|
| 9 | set -o pipefail
|
| 10 | set -o errexit
|
| 11 |
|
| 12 | # New name is ysh!
|
| 13 | # TODO:
|
| 14 | # - remove the 'oil' everywhere
|
| 15 | # - translation should be 'ysh-translate'. Later 'ysh-format'
|
| 16 | readonly OIL_OVM_NAMES=(oil ysh osh sh true false readlink)
|
| 17 |
|
| 18 | # TODO: probably delete this
|
| 19 | # For osh-dbg.
|
| 20 | ovm-snippet() {
|
| 21 | local name=$1
|
| 22 | echo '#!/bin/sh'
|
| 23 | echo 'exec _bin/oil.ovm-dbg '$name' "$@"'
|
| 24 | }
|
| 25 |
|
| 26 | # For running spec tests quickly.
|
| 27 | make-osh-dbg() {
|
| 28 | local out=_bin/osh-dbg
|
| 29 | ovm-snippet osh > $out
|
| 30 | chmod +x $out
|
| 31 | }
|
| 32 |
|
| 33 | sh-prefix() {
|
| 34 | cat << 'EOF'
|
| 35 | #!/bin/sh
|
| 36 | REPO_ROOT=$(cd "$(dirname $0)/.."; pwd)
|
| 37 | EOF
|
| 38 | }
|
| 39 |
|
| 40 | make-oils-for-unix() {
|
| 41 | local out=bin/oils-for-unix
|
| 42 | { sh-prefix
|
| 43 | echo 'PYTHONPATH=$REPO_ROOT:$REPO_ROOT/vendor exec $REPO_ROOT/bin/oils_for_unix.py "$@"'
|
| 44 | } > $out
|
| 45 | chmod +x $out
|
| 46 | echo "Wrote $out"
|
| 47 | }
|
| 48 |
|
| 49 | #
|
| 50 | # Shell Stubs
|
| 51 | #
|
| 52 |
|
| 53 | sh-snippet() {
|
| 54 | local wrapped=$1 # e.g. oil.py
|
| 55 | local action=$2 # e.g. osh
|
| 56 |
|
| 57 | sh-prefix
|
| 58 | echo 'PYTHONPATH=$REPO_ROOT:$REPO_ROOT/vendor exec $REPO_ROOT/bin/'$wrapped' '$action' "$@"'
|
| 59 | }
|
| 60 |
|
| 61 | # A snippet that sets PYTHONPATH for bin/oil.py and runs it with the right
|
| 62 | # action.
|
| 63 | oil-dev-snippet() {
|
| 64 | local action=$1
|
| 65 | sh-snippet oils_for_unix.py $action
|
| 66 | }
|
| 67 |
|
| 68 | opy-dev-snippet() {
|
| 69 | local action=$1
|
| 70 | sh-snippet opy_.py $action
|
| 71 | }
|
| 72 |
|
| 73 | make-src-stubs() {
|
| 74 | ### bin/ is for running with the Python interpreter.
|
| 75 | mkdir -p bin
|
| 76 |
|
| 77 | for link in "${OIL_OVM_NAMES[@]}"; do
|
| 78 | # bin/ shell wrapper
|
| 79 | oil-dev-snippet $link > bin/$link
|
| 80 | chmod +x bin/$link
|
| 81 | echo "Wrote bin/$link"
|
| 82 | done
|
| 83 |
|
| 84 | make-osh-dbg
|
| 85 |
|
| 86 | make-oils-for-unix
|
| 87 | }
|
| 88 |
|
| 89 | make-ovm-links() {
|
| 90 | ### _bin/ is for running with OVM app bundles.
|
| 91 |
|
| 92 | mkdir -p _bin
|
| 93 |
|
| 94 | for link in "${OIL_OVM_NAMES[@]}"; do
|
| 95 | # _bin/ symlink
|
| 96 | ln -s -f --verbose oil.ovm _bin/$link
|
| 97 | done
|
| 98 | }
|
| 99 |
|
| 100 | "$@"
|