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