From 22e4aa21feb4438fc3d0e40db05fe1b133f03d8a Mon Sep 17 00:00:00 2001 From: Patrick O'Sullivan Date: Thu, 29 Feb 2024 13:35:09 -0600 Subject: [PATCH] click: make it work on macOS too --- pkg/click/click | 26 ++++++++++++++++++++++---- pkg/click/click-format | 2 +- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/pkg/click/click b/pkg/click/click index 278051f..b41e577 100755 --- a/pkg/click/click +++ b/pkg/click/click @@ -21,6 +21,15 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) SCRIPT_NAME=$(basename "$0") CLICK_CMD="$SCRIPT_DIR/click-format" +# Determine OS +OS_NAME="$(uname -s)" +# Set netcat options based on OS +if [[ "$OS_NAME" == "Darwin" ]]; then + NC_OPTS="-U" +else + # For Linux and others where -W is supported + NC_OPTS="-U -W 1" +fi # ========================================================== # VARIABLES @@ -69,7 +78,7 @@ EOF full() { $CLICK_CMD "$HOON" $DEPS | $EVAL_CMD eval --jam $JAM_OPTS | - nc -U -W 1 "$PIER/.urb/conn.sock" | + nc $NC_OPTS "$PIER/.urb/conn.sock" | $EVAL_CMD eval --cue $CUE_OPTS } @@ -82,7 +91,7 @@ jam() { } execute() { - nc -U -W 1 "$PIER/.urb/conn.sock" < $INPUT | + nc $NC_OPTS "$PIER/.urb/conn.sock" < $INPUT | $EVAL_CMD eval --cue $CUE_OPTS } @@ -201,7 +210,10 @@ if [[ -n $INPUT ]]; then if [[ $EXECUTE -eq 0 ]]; then # read from file, escape 's, replace newlines w/ gaps - HOON="$(cat $INPUT | sed "s;';\\\\';g" | sed ':a;N;s/\n/ /;$!ba')" + # Previous approach, only works on Linux + # HOON="$(cat $INPUT | sed "s;';\\\\';g" | sed ':a;N;s/\n/ /;$!ba')" + # New approach, works on Linux and macOS + HOON="$(cat $INPUT | sed "s/'/\\\\'/g" | tr '\n' ' ')" fi else PIER=$1 @@ -223,7 +235,13 @@ if [[ -z $EVAL_CMD ]]; then fi JAM_OPTS="-n" CUE_OPTS="-n" -TMP_OUT=`mktemp -q --tmpdir` +if [[ "$OS_NAME" == "Darwin" ]]; then + # For macOS + TMP_OUT=$(mktemp -q /tmp/click.XXXXXX) +else + # For Linux and others + TMP_OUT=$(mktemp -q --tmpdir) +fi if [[ $JAM_ONLY -eq 0 ]]; then if [[ $FILTER_GOOF -ne 0 ]]; then diff --git a/pkg/click/click-format b/pkg/click/click-format index a26fca9..17ed11f 100755 --- a/pkg/click/click-format +++ b/pkg/click/click-format @@ -100,7 +100,7 @@ while getopts ":hk" OPT; do \?) echo "Invalid option: -$OPTARG" >&2 STATUS=1 - ;& + ;; h) show_help exit "$STATUS"