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