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
|
||||
|
||||
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
|
||||
|
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)
|
||||
#
|
||||
|
||||
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 '<THIS> 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/<yourshell> ]]; then
|
||||
# mkdir -p $XXH_HOME/.local/share/<yourshell>
|
||||
#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[@]}"
|
||||
|
Loading…
Reference in New Issue
Block a user