Skip to content

Commit 42d57fe

Browse files
committed
fix: Properly resolve location of BASALT_PACKAGE_DIR in new init
approach
1 parent 7e6b9c8 commit 42d57fe

File tree

2 files changed

+42
-8
lines changed

2 files changed

+42
-8
lines changed

pkg/share/scripts/basalt-package-init.sh

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,39 @@ else
8383
#
8484
# eval "$(basalt-package-init 'woof')"
8585
# __run "$@"
86+
87+
# TODO: Handle this in a better way
88+
readlinkf_posix() {
89+
[ "${1:-}" ] || return 1
90+
max_symlinks=40
91+
CDPATH='' # to avoid changing to an unexpected directory
92+
93+
target=$1
94+
[ -e "${target%/}" ] || target=${1%"${1##*[!/]}"} # trim trailing slashes
95+
[ -d "${target:-/}" ] && target="$target/"
96+
97+
cd -P . 2>/dev/null || return 1
98+
while [ "$max_symlinks" -ge 0 ] && max_symlinks=$((max_symlinks - 1)); do
99+
if [ ! "$target" = "${target%/*}" ]; then
100+
case $target in
101+
/*) cd -P "${target%/*}/" 2>/dev/null || break ;;
102+
*) cd -P "./${target%/*}" 2>/dev/null || break ;;
103+
esac
104+
target=${target##*/}
105+
fi
106+
107+
if [ ! -L "$target" ]; then
108+
target="${PWD%/}${target:+/}${target}"
109+
printf '%s\n' "${target:-/}"
110+
return 0
111+
fi
112+
113+
link=$(ls -dl -- "$target" 2>/dev/null) || break
114+
target=${link#*" $target -> "}
115+
done
116+
return 1
117+
}
118+
86119
__run() {
87120
if [ "${BASALT_INTERNAL_ARGS[0]}" = '--no-assert-version' ]; then
88121
__flag_assert_version='no'
@@ -108,14 +141,10 @@ else
108141
fi
109142
unset -v __flag_assert_version
110143

111-
if [ "$__have_min_version" = 'yes' ]; then
112-
__init() { :; }
113-
basalt.package-init || exit
114-
basalt.package-load
115-
else
116-
init.get_basalt_package_dir
117-
BASALT_PACKAGE_DIR=$REPLY
118-
fi
144+
__zero="$(readlinkf_posix "$0")"
145+
init.get_basalt_package_dir "${__zero%/*}"
146+
BASALT_PACKAGE_DIR=$REPLY
147+
unset -v __zero
119148

120149
__bin_file="$BASALT_PACKAGE_DIR/pkg/src/bin/$__bin_name.sh"
121150
if [ ! -f "$__bin_file" ]; then

pkg/src/util/init.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ init.get_global_repo_path() {
2626

2727
init.get_basalt_package_dir() {
2828
if ! REPLY=$(
29+
if [ -n "$1" ]; then
30+
if ! cd "$1"; then
31+
exit 1
32+
fi
33+
fi
2934
while [ ! -f 'basalt.toml' ] && [ "$PWD" != / ]; do
3035
if ! cd ..; then
3136
exit 1

0 commit comments

Comments
 (0)