diff --git a/src/index.ts b/src/index.ts index 91e2ae9..88bd251 100644 --- a/src/index.ts +++ b/src/index.ts @@ -466,6 +466,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac ` diff --git a/test/__snapshots__/e2e.test.js.snap b/test/__snapshots__/e2e.test.js.snap index 1f4d141..ac9ebbf 100644 --- a/test/__snapshots__/e2e.test.js.snap +++ b/test/__snapshots__/e2e.test.js.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`create a command shim for a .exe file 1`] = ` "#!/bin/sh diff --git a/test/__snapshots__/test.js.snap b/test/__snapshots__/test.js.snap index 7b2edf7..e335a86 100644 --- a/test/__snapshots__/test.js.snap +++ b/test/__snapshots__/test.js.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`batch script bat.shim 1`] = ` "#!/bin/sh @@ -10,6 +10,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir/cmd" ]; then @@ -73,6 +89,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac "/.pnpm/nodejs/16.0.0/node" "$basedir/src.env" "$@" @@ -116,6 +148,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir/node" ]; then @@ -179,6 +227,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -z "$NODE_PATH" ]; then @@ -265,6 +329,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac export PATH="/add-to-path:$PATH" @@ -340,6 +420,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir/node" ]; then @@ -403,6 +499,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir/node" ]; then @@ -466,6 +578,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir/node" ]; then @@ -529,6 +657,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir//usr/bin/sh" ]; then @@ -592,6 +736,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir//usr/bin/sh" ]; then @@ -664,17 +824,6 @@ else fi `; -exports[`explicit shebang with args, linking to another drive on Windows sh.args.shim.CMD 1`] = ` -"@SETLOCAL -@IF EXIST "%~dp0\\/usr/bin/sh.exe" ( - "%~dp0\\/usr/bin/sh.exe" -x "J:\\cmd-shim\\fixtures\\src.sh.args" %* -) ELSE ( - @SET PATHEXT=%PATHEXT:;.JS;=;% - /usr/bin/sh -x "J:\\cmd-shim\\fixtures\\src.sh.args" %* -) -" -`; - exports[`explicit shebang with args, linking to another drive on Windows sh.args.shim.ps1 1`] = ` "#!/usr/bin/env pwsh $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent @@ -717,6 +866,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir//usr/bin/sh" ]; then @@ -780,6 +945,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac "$basedir/src.exe" "$@" @@ -817,6 +998,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac "$basedir/src.exe" "$@" @@ -860,6 +1057,22 @@ case \`uname\` in basedir=\`cygpath -w "$basedir"\` fi ;; + *) + if command -v realpath >/dev/null 2>&1; then + basedir=\`realpath "$basedir"\` + elif command -v readlink >/dev/null 2>&1; then + # some systems has the readlink, but doesn't have "-f" flag + if readlink -f "$basedir" >/dev/null 2>&1; then + basedir=\`readlink -f "$basedir"\` + else + basedir=\`readlink "$basedir"\` + fi + elif command -v perl >/dev/null 2>&1; then + basedir=\`perl -e 'use Cwd "abs_path"; print abs_path(shift)' "$basedir"\` + elif [[ $basedir != /* ]]; then + basedir="$PWD/\${basedir#./}" + fi + ;; esac if [ -x "$basedir/node" ]; then