tools: Avoid `readlink -f` in *-pull-request scripts.

This is a feature of GNU readlink that isn't in the BSD readlink
found on macOS.

For using this and other GNU coreutils features in our scripts in
general, we could use a solution like mobile's tools/lib/ensure-coreutils.sh
to get GNU coreutils on the PATH -- check if it's there already,
if not then try to find a Homebrew install of it and use that, if not
then print a helpful message.

But even then there'd be a bootstrapping problem of how to find
ensure-coreutils.sh .  That involves exactly the same problem as we
have for finding git-tools.sh in these lines.  So in fact in mobile
for the task of finding ensure-coreutils.sh in the first place, we
do without `readlink -f` anyway.

The one consequence of this behavior-wise is that if you make a
symlink somewhere that points directly at that script (say in your
`~/bin/`), and try to run it using that symlink, it won't work.
(It'll still work just fine if there are symlinks somewhere higher
up in the paths involved -- just not for the script itself.)
An ideal CLI program really should support that, I think, but
lacking a better idea, this seems an acceptable compromise.
This commit is contained in:
Greg Price 2021-04-30 14:49:33 -07:00
parent fd1774dcba
commit da8763d889
3 changed files with 6 additions and 6 deletions

View File

@ -1,9 +1,9 @@
#!/usr/bin/env bash
set -e
this_file=$(readlink -f "${BASH_SOURCE[0]}")
this_dir=${BASH_SOURCE[0]%/*}
# shellcheck source=lib/git-tools.bash
. "${this_file%/*}"/lib/git-tools.bash
. "${this_dir}"/lib/git-tools.bash
require_clean_work_tree 'check out PR as branch'

View File

@ -1,9 +1,9 @@
#!/usr/bin/env bash
set -e
this_file=$(readlink -f "${BASH_SOURCE[0]}")
this_dir=${BASH_SOURCE[0]%/*}
# shellcheck source=lib/git-tools.bash
. "${this_file%/*}"/lib/git-tools.bash
. "${this_dir}"/lib/git-tools.bash
require_clean_work_tree 'check out PR as branch'

View File

@ -39,9 +39,9 @@ if [ -z "$request_id" ]; then
usage
fi
this_file=$(readlink -f "${BASH_SOURCE[0]}")
this_dir=${BASH_SOURCE[0]%/*}
# shellcheck source=lib/git-tools.bash
. "${this_file%/*}"/lib/git-tools.bash
. "${this_dir}"/lib/git-tools.bash
require_clean_work_tree 'reset to PR'