From a7fd51456949a0fcd30c0074cb61a2f5aad947e9 Mon Sep 17 00:00:00 2001 From: James Ottaway Date: Thu, 30 Apr 2020 22:30:03 +1000 Subject: [PATCH] [wip] Fix how `vcs_relative_path` first resolves an absolute path --- bin/_blackbox_common.sh | 19 ++++++++++++++----- tools/confidence_test.sh | 1 + 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/bin/_blackbox_common.sh b/bin/_blackbox_common.sh index b935f5d..a3939cb 100755 --- a/bin/_blackbox_common.sh +++ b/bin/_blackbox_common.sh @@ -366,13 +366,22 @@ function enumerate_blackbox_repos() { done } +# Resolve the absolute path of a relative one +# Adapted from https://unix.stackexchange.com/a/483514 +function abs() { + local _pwd bn + [ -d "${1}" ] && _pwd="${1}" + [ -f "${1}" ] && { _pwd=$(dirname "${1}") ; bn=/$(basename "${1}") ;} + pushd "$_pwd" >/dev/null || exit + echo "$(pwd)${bn}" + popd >/dev/null || exit +} + # Output the path of a file relative to the repo base function vcs_relative_path() { - # Usage: vcs_relative_path file - local name="$1" - #python -c 'import os ; print(os.path.relpath("'"$(pwd -P)"'/'"$name"'", "'"$REPOBASE"'"))' - local p=$( printf "%s" "$( pwd -P )/${1}" | sed 's#//*#/#g' ) - local name="${p#$REPOBASE}" + local name + name=$(abs "$1") + name="${name#$REPOBASE}" name=$( printf "%s" "$name" | sed 's#^/##g' | sed 's#/$##g' ) printf "%s" "$name" } diff --git a/tools/confidence_test.sh b/tools/confidence_test.sh index aa8412e..eaeef23 100755 --- a/tools/confidence_test.sh +++ b/tools/confidence_test.sh @@ -160,6 +160,7 @@ blackbox_register_new_file secret.txt assert_file_missing secret.txt assert_file_exists secret.txt.gpg assert_line_exists '/secret.txt' .gitignore +assert_line_exists 'secret.txt' keyrings/live/blackbox-files.txt PHASE 'She cats secrets.txt.gpg.' make_self_deleting_tempfile catsecret