devcontainers / devcontainers/cli

install.sh wrapper relative link not resolved correctly

Aperta
#1,232 0 commenti 0 reazioni 1 assegnatario Rivendicata da @V-Subhankar-infy Vedi su GitHub
Lingua principale
TypeScript
Stelle
3k
Fork
457
Merge medio
13h 17m
PR unite (30g)
6

Descrizione

I'm trying to create a generic install method for a dotfile/software install library I maintain. I want to install a link to the binary in `~/.local/bin/` and keep the devcontainers install under `~/.local/lib/devcontainers/`. The install takes care of this via the `--prefix ~/.local` argument.

The problem is that when I create a relative link called devcontainer from `~/.local/bin` to `~/.local/lib/devcontainers/bin/devcontainer` and then invoke the `devcontainer` executable, the generated bin file resolves the link as a relative link, rather than absolute.

Example install method:
```shell
INSTALL_DIR=$HOME/.local
curl -sSLO https://raw.githubusercontent.com/devcontainers/cli/main/scripts/install.sh
chmod +x install.sh
./install.sh --prefix "${INSTALL_DIR}"/lib/devcontainers
cd "${INSTALL_DIR}"/bin
ln -s ../lib/devcontainers/bin/devcontainer devcontainer
```

Example running `devcontainer` which is already in the PATH of `~/.local/bin/`

```shell
$devcontainer
/home/vasdee/.local/bin/devcontainer: line 18: cd: ../lib/devcontainers/bin: No such file or directory
```

In `~/.local/bin/devcontainer` i believe if the follow link logic preferred the full path option of `readlink`, over the relative (which is the opposite of how it is now) then the issue would be solved....at least for me

```shell
# Resolve the installation directory
# Handle both direct execution and symlinked scenarios
if [ -L "$0" ]; then
# Follow symlink current logic
SCRIPT_PATH="$(readlink "$0" 2>/dev/null || readlink -f "$0" 2>/dev/null || echo "$0")"
# Follow symlink potential fix by preferring the abs path over relative
# SCRIPT_PATH="$(readlink -f "$0" 2>/dev/null || readlink "$0" 2>/dev/null || echo "$0")"
else
SCRIPT_PATH="$0"
fi
```

I am happy to contribute a PR, but am not sure of the history behind this choice and what impact the change might have. I'm looking for guidance in that respect.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.