install.sh: Add warning if d2 is shadowed on installation

Closes #107
This commit is contained in:
Anmol Sethi 2022-12-06 01:30:11 -08:00
parent 1de4b48d7a
commit 0c43cbc708
No known key found for this signature in database
GPG key ID: 25BC68888A99A8BA
3 changed files with 70 additions and 14 deletions

View file

@ -41,8 +41,13 @@ Flags:
--edge --edge
Pass to build and install D2 from source. This will still use --method if set to detect Pass to build and install D2 from source. This will still use --method if set to detect
to install the release archive for your OS, whether it's apt, yum, brew or standalone to install the release archive for your OS, whether it's apt, yum, brew or standalone
if an unsupported package manager is used. To install from source like a dev would, if an unsupported package manager is used.
use go install oss.terrastruct.com/d2
To install from source like a dev would, use go install oss.terrastruct.com/d2. There's
also ./ci/release/build.sh --install to build and install a proper standalone release
including manpages. The proper release will also ensure d2 --version shows the correct
version by embedding the commit hash into the binary.
note: currently unimplemented. note: currently unimplemented.
warn: incompatible with --tala as TALA is closed source. warn: incompatible with --tala as TALA is closed source.
@ -167,7 +172,7 @@ main() {
case "$OS" in case "$OS" in
macos) macos)
if command -v brew >/dev/null; then if command -v brew >/dev/null; then
log "detected macOS with homebrew, using homebrew for (un)installation" log "detected macOS with homebrew, using homebrew for installation"
METHOD=homebrew METHOD=homebrew
else else
warn "detected macOS without homebrew, falling back to --method=standalone" warn "detected macOS without homebrew, falling back to --method=standalone"
@ -183,7 +188,7 @@ main() {
standalone) ;; standalone) ;;
homebrew) ;; homebrew) ;;
*) *)
echoerr "unknown (un)installation method $METHOD" echoerr "unknown installation method $METHOD"
return 1 return 1
;; ;;
esac esac
@ -225,6 +230,7 @@ install() {
standalone) install_post_standalone ;; standalone) install_post_standalone ;;
homebrew) install_post_brew ;; homebrew) install_post_brew ;;
esac esac
install_post_warn
} }
install_post_standalone() { install_post_standalone() {
@ -288,6 +294,28 @@ https://github.com/terrastruct/d2/issues
https://github.com/terrastruct/d2/discussions https://github.com/terrastruct/d2/discussions
https://discord.gg/NF6X8K4eDq https://discord.gg/NF6X8K4eDq
EOF EOF
VERSION=$(brew info d2 | head -n1 | cut -d' ' -f4)
VERSION=${VERSION%,}
if [ -n "${TALA-}" ]; then
TALA_VERSION=$(brew info tala | head -n1 | cut -d' ' -f4)
TALA_VERSION=${TALA_VERSION%,}
fi
}
install_post_warn() {
if command -v d2 >/dev/null; then
INSTALLED_VERSION=$(d2 --version)
if [ "$INSTALLED_VERSION" != "$VERSION" ]; then
warn "newly installed d2 $VERSION is shadowed by d2 $INSTALLED_VERSION in \$PATH"
fi
fi
if [ -n "${TALA-}" ] && command -v d2plugin-tala >/dev/null; then
INSTALLED_TALA_VERSION=$(d2plugin-tala --version)
if [ "$INSTALLED_TALA_VERSION" != "$TALA_VERSION" ]; then
warn "newly installed d2plugin-tala $TALA_VERSION is shadowed by d2plugin-tala $INSTALLED_TALA_VERSION in \$PATH"
fi
fi
} }
install_d2_standalone() { install_d2_standalone() {
@ -299,7 +327,7 @@ install_d2_standalone() {
fi fi
if command -v d2 >/dev/null; then if command -v d2 >/dev/null; then
INSTALLED_VERSION="$(d2 version)" INSTALLED_VERSION="$(d2 --version)"
if [ ! "${FORCE-}" -a "$VERSION" = "$INSTALLED_VERSION" ]; then if [ ! "${FORCE-}" -a "$VERSION" = "$INSTALLED_VERSION" ]; then
log "skipping installation as d2 $VERSION is already installed." log "skipping installation as d2 $VERSION is already installed."
return 0 return 0

View file

@ -109,14 +109,14 @@ main() {
VERSION=${VERSION:-$(git_describe_ref)} VERSION=${VERSION:-$(git_describe_ref)}
BUILD_DIR=ci/release/build/$VERSION BUILD_DIR=ci/release/build/$VERSION
if [ -n "${HOST_ONLY-}" ]; then if [ -n "${HOST_ONLY-}" ]; then
OS=$(os) ensure_os
ARCH=$(arch) ensure_arch
runjob "$OS-$ARCH" "build" runjob "$OS-$ARCH" "build"
if [ -n "${INSTALL-}" ]; then if [ -n "${INSTALL-}" ]; then
sh_c make -sC "ci/release/build/$VERSION/$(os)-$(arch)/d2-$VERSION" install sh_c make -sC "ci/release/build/$VERSION/$OS-$ARCH/d2-$VERSION" install
elif [ -n "${UNINSTALL-}" ]; then elif [ -n "${UNINSTALL-}" ]; then
sh_c make -sC "ci/release/build/$VERSION/$(os)-$(arch)/d2-$VERSION" uninstall sh_c make -sC "ci/release/build/$VERSION/$OS-$ARCH/d2-$VERSION" uninstall
fi fi
return 0 return 0
fi fi

View file

@ -620,8 +620,13 @@ Flags:
--edge --edge
Pass to build and install D2 from source. This will still use --method if set to detect Pass to build and install D2 from source. This will still use --method if set to detect
to install the release archive for your OS, whether it's apt, yum, brew or standalone to install the release archive for your OS, whether it's apt, yum, brew or standalone
if an unsupported package manager is used. To install from source like a dev would, if an unsupported package manager is used.
use go install oss.terrastruct.com/d2
To install from source like a dev would, use go install oss.terrastruct.com/d2. There's
also ./ci/release/build.sh --install to build and install a proper standalone release
including manpages. The proper release will also ensure d2 --version shows the correct
version by embedding the commit hash into the binary.
note: currently unimplemented. note: currently unimplemented.
warn: incompatible with --tala as TALA is closed source. warn: incompatible with --tala as TALA is closed source.
@ -746,7 +751,7 @@ main() {
case "$OS" in case "$OS" in
macos) macos)
if command -v brew >/dev/null; then if command -v brew >/dev/null; then
log "detected macOS with homebrew, using homebrew for (un)installation" log "detected macOS with homebrew, using homebrew for installation"
METHOD=homebrew METHOD=homebrew
else else
warn "detected macOS without homebrew, falling back to --method=standalone" warn "detected macOS without homebrew, falling back to --method=standalone"
@ -762,7 +767,7 @@ main() {
standalone) ;; standalone) ;;
homebrew) ;; homebrew) ;;
*) *)
echoerr "unknown (un)installation method $METHOD" echoerr "unknown installation method $METHOD"
return 1 return 1
;; ;;
esac esac
@ -804,6 +809,7 @@ install() {
standalone) install_post_standalone ;; standalone) install_post_standalone ;;
homebrew) install_post_brew ;; homebrew) install_post_brew ;;
esac esac
install_post_warn
} }
install_post_standalone() { install_post_standalone() {
@ -867,6 +873,28 @@ https://github.com/terrastruct/d2/issues
https://github.com/terrastruct/d2/discussions https://github.com/terrastruct/d2/discussions
https://discord.gg/NF6X8K4eDq https://discord.gg/NF6X8K4eDq
EOF EOF
VERSION=$(brew info d2 | head -n1 | cut -d' ' -f4)
VERSION=${VERSION%,}
if [ -n "${TALA-}" ]; then
TALA_VERSION=$(brew info tala | head -n1 | cut -d' ' -f4)
TALA_VERSION=${TALA_VERSION%,}
fi
}
install_post_warn() {
if command -v d2 >/dev/null; then
INSTALLED_VERSION=$(d2 --version)
if [ "$INSTALLED_VERSION" != "$VERSION" ]; then
warn "newly installed d2 $VERSION is shadowed by d2 $INSTALLED_VERSION in \$PATH"
fi
fi
if [ -n "${TALA-}" ] && command -v d2plugin-tala >/dev/null; then
INSTALLED_TALA_VERSION=$(d2plugin-tala --version)
if [ "$INSTALLED_TALA_VERSION" != "$TALA_VERSION" ]; then
warn "newly installed d2plugin-tala $TALA_VERSION is shadowed by d2plugin-tala $INSTALLED_TALA_VERSION in \$PATH"
fi
fi
} }
install_d2_standalone() { install_d2_standalone() {
@ -878,7 +906,7 @@ install_d2_standalone() {
fi fi
if command -v d2 >/dev/null; then if command -v d2 >/dev/null; then
INSTALLED_VERSION="$(d2 version)" INSTALLED_VERSION="$(d2 --version)"
if [ ! "${FORCE-}" -a "$VERSION" = "$INSTALLED_VERSION" ]; then if [ ! "${FORCE-}" -a "$VERSION" = "$INSTALLED_VERSION" ]; then
log "skipping installation as d2 $VERSION is already installed." log "skipping installation as d2 $VERSION is already installed."
return 0 return 0