From 19123d10e086cdda1f830efd2055ec92dbf69d82 Mon Sep 17 00:00:00 2001 From: pablomendezroyo Date: Tue, 24 Feb 2026 08:44:33 +0100 Subject: [PATCH] Add macOS compatibility for DAppNode profile and improve alias handling --- .dappnode_profile | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/.dappnode_profile b/.dappnode_profile index baefcef..538e868 100755 --- a/.dappnode_profile +++ b/.dappnode_profile @@ -18,31 +18,50 @@ export HTTPS_VERSION="${HTTPS:-0.2.2}" export DAPPNODE_DIR="/usr/src/dappnode" export DAPPNODE_CORE_DIR="${DAPPNODE_DIR}/DNCORE" +# macOS host-mode helpers (this file is often sourced in a shell) +if [ "$(uname -s 2>/dev/null)" = "Darwin" ]; then + export DISABLE_HOST_SCRIPTS="${DISABLE_HOST_SCRIPTS:-true}" + + for user_home in /Users/*; do + [ -d "$user_home" ] || continue + [ -d "$user_home/dappnode/DNCORE" ] || continue + export DAPPNODE_DIR="$user_home/dappnode" + export DAPPNODE_CORE_DIR="$user_home/dappnode/DNCORE" + break + done +fi + #!ISOBUILD Do not modify, variables above imported for ISO build -DNCORE_YMLS=$(find $DAPPNODE_CORE_DIR -name "docker-compose-*.yml" -printf "-f %p ") -# shellcheck disable=SC2207 -# shellcheck disable=SC2034 -DNCORE_YMLS_ARRAY=($(find /usr/src/dappnode/DNCORE -name "docker-compose-*.yml" | sort)) + +DNCORE_YMLS="" +if [ -d "$DAPPNODE_CORE_DIR" ]; then + DNCORE_YMLS=$(find "$DAPPNODE_CORE_DIR" -name "docker-compose-*.yml" -print | sort | sed 's|^|-f |' | tr '\n' ' ') +fi # Returns docker core containers status -alias dappnode_status='docker compose $DNCORE_YMLS ps' -# Stop docker core containers -alias dappnode_stop='docker compose $DNCORE_YMLS stop && docker stop $(docker container ls -a -q -f name=DAppNode*)' -# Start docker core containers -alias dappnode_start='docker compose $DNCORE_YMLS up -d && docker start $(docker container ls -a -q -f name=DAppNode*)' -# Remove docker core containers. This does not remove named volumes -alias dappnode_down='docker compose $DNCORE_YMLS down' +# NOTE: zsh does not word-split `$DNCORE_YMLS` by default, so use `${=DNCORE_YMLS}` there. +if [ -n "${ZSH_VERSION:-}" ]; then + alias dappnode_status='docker compose ${=DNCORE_YMLS} ps' + alias dappnode_stop='docker compose ${=DNCORE_YMLS} stop && docker stop $(docker container ls -a -q -f name=DAppNode*)' + alias dappnode_start='docker compose ${=DNCORE_YMLS} up -d && docker start $(docker container ls -a -q -f name=DAppNode*)' + alias dappnode_down='docker compose ${=DNCORE_YMLS} down' +else + alias dappnode_status='docker compose $DNCORE_YMLS ps' + alias dappnode_stop='docker compose $DNCORE_YMLS stop && docker stop $(docker container ls -a -q -f name=DAppNode*)' + alias dappnode_start='docker compose $DNCORE_YMLS up -d && docker start $(docker container ls -a -q -f name=DAppNode*)' + alias dappnode_down='docker compose $DNCORE_YMLS down' +fi # Return open-vpn credentials from a specific user. e.g: dappnode_get dappnode_admin alias dappnode_openvpn_get='docker exec -i DAppNodeCore-vpn.dnp.dappnode.eth vpncli get' # Return open-vpn admin credentials alias dappnode_openvpn='docker exec -i DAppNodeCore-vpn.dnp.dappnode.eth getAdminCredentials' # Return wifi credentials (ssid and password) -alias dappnode_wifi='cat /usr/src/dappnode/DNCORE/docker-compose-wifi.yml | grep "SSID\|WPA_PASSPHRASE"' +alias dappnode_wifi='cat "$DAPPNODE_CORE_DIR/docker-compose-wifi.yml" | grep "SSID\|WPA_PASSPHRASE"' # Return remote credentials in plain text. OPTIONS: # --qr (QR format). --local (local creds for NAT loopback issues) alias dappnode_wireguard='docker exec -i DAppNodeCore-api.wireguard.dnp.dappnode.eth getWireguardCredentials' # Execute access_credentials.sh script to check for connectivity methods -alias dappnode_connect='/usr/bin/bash /usr/src/dappnode/scripts/dappnode_access_credentials.sh' +alias dappnode_connect='/usr/bin/bash "$DAPPNODE_DIR/scripts/dappnode_access_credentials.sh"' # Return all available commands alias dappnode_help='echo -e "\n\tDAppNode commands available:\n\n\tdappnode_help\t\tprints out this message\n\n\tdappnode_wifi\t\tget wifi credentials (SSID and password)\n\n\tdappnode_openvpn\tget Open VPN credentials\n\n\tdappnode_wireguard\tget Wireguard VPN credentials (dappnode_wireguard --help for more info)\n\n\tdappnode_connect\tcheck connectivity methods available in DAppNode\n\n\tdappnode_status\t\tget status of dappnode containers\n\n\tdappnode_start\t\tstart dappnode containers\n\n\tdappnode_stop\t\tstop dappnode containers\n"' # Compose alias for backward compatibility