diff --git a/build.sh b/build.sh index db230b3..f7424fc 100755 --- a/build.sh +++ b/build.sh @@ -1,42 +1,50 @@ #!/usr/bin/env bash +set -e +set -o pipefail + CDIR="$(cd "$(dirname "$0")" && pwd)" -build_dir=$CDIR/build +build_dir=${CDIR}/build -while getopts A:K:q option -do - case "${option}" - in - q) QUIET=1;; - A) ARCH=${OPTARG};; - K) KERNEL=${OPTARG};; - esac +while getopts A:K:q option; do + case "${option}" in + q) QUIET=1 ;; + A) ARCH="${OPTARG:-x86_64}" ;; + K) ;; + *) ;; + esac +done +echo "${ARCH:=x86_64}" + +rm -rf "${build_dir}" +mkdir -p "${build_dir}" + +for f in entrypoint.sh; do + cp "${CDIR}/${f}" "${build_dir}/" done -rm -rf $build_dir -mkdir -p $build_dir +nushell_version=0.105.1 -for f in entrypoint.sh -do - cp $CDIR/$f $build_dir/ -done +url="https://github.com/nushell/nushell/releases/download/0.105.1/nu-${nushell_version}-${ARCH}-unknown-linux-musl.tar.gz" +tarname=$(basename "${url}") -#url='https://github.com/xxh/zsh-portable/raw/master/result/zsh-portable-Linux-x86_64.tar.gz' -#tarname=`basename $url` -# -#cd $build_dir -# -#[ $QUIET ] && arg_q='-q' || arg_q='' -#[ $QUIET ] && arg_s='-s' || arg_s='' -#[ $QUIET ] && arg_progress='' || arg_progress='--show-progress' -# -#if [ -x "$(command -v wget)" ]; then -# wget $arg_q $arg_progress $url -O $tarname -#elif [ -x "$(command -v curl)" ]; then -# curl $arg_s -L $url -o $tarname -#else -# echo Install wget or curl -#fi -# -#tar -xzf $tarname -#rm $tarname +cd "${build_dir}" || exit +mkdir -p download +cd download || exit + +[[ -n "${QUIET}" ]] && arg_q=('-q') || arg_q=() +[[ -n "${QUIET}" ]] && arg_s=('-s') || arg_s=() +[[ -n "${QUIET}" ]] && arg_progress=() || arg_progress=('--show-progress') + +if wget --version; then + wget "${arg_q[@]}" "${arg_progress[*]}" "${url}" -O "${tarname}" +elif curl --version; then + curl "${arg_s[@]}" -L "${url}" -o "${tarname}" +else + echo Install wget or curl +fi + +tar -xzf "${tarname}" +mv -t ../ ./nu-*/nu +cd .. || exit +rm -rf ./download diff --git a/entrypoint.sh b/entrypoint.sh index d135d37..bbdd0e9 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -19,110 +19,109 @@ # -X XDG_* path (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) # -while getopts f:c:C:v:e:b:H:X: option -do -case "${option}" -in -f) EXECUTE_FILE=${OPTARG};; -c) EXECUTE_COMMAND=${OPTARG};; -C) EXECUTE_COMMAND_B64=${OPTARG};; -v) VERBOSE=${OPTARG};; -e) ENV+=("$OPTARG");; -b) EBASH+=("$OPTARG");; -H) HOMEPATH=${OPTARG};; -X) XDGPATH=${OPTARG};; -esac +while getopts f:c:C:v:e:b:H:X: option; do + case "$option" in + f) EXECUTE_FILE=${OPTARG} ;; + c) EXECUTE_COMMAND=${OPTARG} ;; + C) EXECUTE_COMMAND_B64=${OPTARG} ;; + v) VERBOSE=${OPTARG} ;; + e) ENV+=("$OPTARG") ;; + b) EBASH+=("$OPTARG") ;; + H) HOMEPATH=${OPTARG} ;; + X) XDGPATH=${OPTARG} ;; + esac done if [[ $VERBOSE != '' ]]; then - export XXH_VERBOSE=$VERBOSE + export XXH_VERBOSE=$VERBOSE fi for env in "${ENV[@]}"; do - name="$( cut -d '=' -f 1 <<< "$env" )"; - val="$( cut -d '=' -f 2- <<< "$env" )"; - val=`echo $val | base64 -d` + name="$(cut -d '=' -f 1 <<<"$env")" + val="$(cut -d '=' -f 2- <<<"$env")" + val=$(echo "$val" | base64 -d) - if [[ $XXH_VERBOSE == '1' || $XXH_VERBOSE == '2' ]]; then - echo Environment variable "$env": name=$name, value=$val - fi + if [[ $XXH_VERBOSE == '1' || $XXH_VERBOSE == '2' ]]; then + echo Environment variable "$env": name="$name", value="$val" + fi - export $name="$val" + export "$name=$val" done for eb in "${EBASH[@]}"; do - bash_command=`echo $eb | base64 -d` + bash_command=$(echo "$eb" | base64 -d) - if [[ $XXH_VERBOSE == '1' || $XXH_VERBOSE == '2' ]]; then - echo Entrypoint bash execute: $bash_command - fi - eval $bash_command + if [[ $XXH_VERBOSE == '1' || $XXH_VERBOSE == '2' ]]; then + echo Entrypoint bash execute: "$bash_command" + fi + eval "$bash_command" done ## Example disabling option: -#if [[ $EXECUTE_COMMAND ]]; then -# echo ' entrypoint is not support command execution.' -# exit 1 +if [[ $EXECUTE_COMMAND ]]; then + echo 'nushell entrypoint does not supports command execution.' + exit 1 +if [[ $EXECUTE_COMMAND_B64 ]]; then + echo 'nushell entrypoint does not supports command execution.' + exit 1 #fi ## Example command: -if [[ $EXECUTE_COMMAND ]]; then - EXECUTE_COMMAND=(-c "${EXECUTE_COMMAND}") -fi - -if [[ $EXECUTE_COMMAND_B64 ]]; then - EXECUTE_COMMAND=`echo $EXECUTE_COMMAND_B64 | base64 -d` - if [[ $XXH_VERBOSE == '1' || $XXH_VERBOSE == '2' ]]; then - echo Execute command base64: $EXECUTE_COMMAND_B64 - echo Execute command: $EXECUTE_COMMAND - fi - - EXECUTE_COMMAND=(-c "${EXECUTE_COMMAND}") -fi - - -if [[ $EXECUTE_FILE ]]; then - EXECUTE_COMMAND="" -fi +# if [[ $EXECUTE_COMMAND ]]; then +# EXECUTE_COMMAND=(-c "$EXECUTE_COMMAND") +# fi +# +# if [[ $EXECUTE_COMMAND_B64 ]]; then +# EXECUTE_COMMAND=$(echo "$EXECUTE_COMMAND_B64" | base64 -d) +# if [[ $XXH_VERBOSE == '1' || $XXH_VERBOSE == '2' ]]; then +# echo Execute command base64: "$EXECUTE_COMMAND_B64" +# echo Execute command: "$EXECUTE_COMMAND" +# fi +# +# EXECUTE_COMMAND=(-c "$EXECUTE_COMMAND") +# fi +# +# if [[ $EXECUTE_FILE ]]; then +# EXECUTE_COMMAND="" +# fi # Example of adding argument `-f` before -EXECUTE_FILE=`[ $EXECUTE_FILE ] && echo -n "-f $EXECUTE_FILE" || echo -n ""` - +EXECUTE_FILE=$([ "$EXECUTE_FILE" ] && echo -n "-f $EXECUTE_FILE" || echo -n "") # # Move to current directory # CURRENT_DIR="$(cd "$(dirname "$0")" && pwd)" -cd $CURRENT_DIR +cd "$CURRENT_DIR" -export XXH_HOME=`readlink -f $CURRENT_DIR/../../../..` +export XXH_HOME=$(readlink -f "$CURRENT_DIR"/../../../..) #if [[ ! -d $XXH_HOME/.local/share/ ]]; then # mkdir -p $XXH_HOME/.local/share/ #fi if [[ $HOMEPATH != '' ]]; then - homerealpath=`readlink -f $HOMEPATH` - if [[ -d $homerealpath ]]; then - export HOME=$homerealpath - else - echo "Home path not found: $homerealpath" - echo "Set HOME to $XXH_HOME" - export HOME=$XXH_HOME - fi + homerealpath=$(readlink -f "$HOMEPATH") + if [[ -d $homerealpath ]]; then + export HOME=$homerealpath + else + echo "Home path not found: $homerealpath" + echo "Set HOME to $XXH_HOME" + export HOME=$XXH_HOME + fi else - export HOME=$XXH_HOME + export HOME=$XXH_HOME fi if [[ $XDGPATH != '' ]]; then - xdgrealpath=`readlink -f $XDGPATH` - if [[ ! -d $xdgrealpath ]]; then - echo "XDG path not found: $xdgrealpath" - echo "Set XDG path to $XXH_HOME" - export XDGPATH=$XXH_HOME - fi + xdgrealpath=$(readlink -f "$XDGPATH") + if [[ ! -d $xdgrealpath ]]; then + echo "XDG path not found: $xdgrealpath" + echo "Set XDG path to $XXH_HOME" + export XDGPATH=$XXH_HOME + fi else - export XDGPATH=$XXH_HOME + export XDGPATH=$XXH_HOME fi export XDG_CONFIG_HOME=$XDGPATH/.config @@ -132,17 +131,18 @@ export XDG_CACHE_HOME=$XDGPATH/.cache # # Init prerun plugins # -for pluginrc_file in $(find $CURRENT_DIR/../../../plugins/xxh-plugin-*/build -type f -name '*prerun.sh' -printf '%f\t%p\n' 2>/dev/null | sort -k1 | cut -f2); do - if [[ -f $pluginrc_file ]]; then - if [[ $XXH_VERBOSE == '1' || $XXH_VERBOSE == '2' ]]; then - echo Load plugin $pluginrc_file - fi - #cd $(dirname $pluginrc_file) - source $pluginrc_file - fi +find "$CURRENT_DIR"/../../../plugins/xxh-plugin-*/build -type f -name '*prerun.sh' -print0 | while IFS= read -r -d '' pluginrc_file; do + if [[ -f $pluginrc_file ]]; then + if [[ $XXH_VERBOSE == '1' || $XXH_VERBOSE == '2' ]]; then + echo Load plugin "$pluginrc_file" + fi + #cd $(dirname $pluginrc_file) + source "$pluginrc_file" + fi done # # Run the portable shell # -./your_portable_shell # $EXECUTE_FILE "${EXECUTE_COMMAND[@]}" +cd "${XXH_HOME}" +./nu # $EXECUTE_FILE "${EXECUTE_COMMAND[@]}"