fix(install): make setup failures explicit and atomic
Installer pipelines masked dependency and download failures, causing false success messages and unsafe config replacement. Atomic updates and current upstream installers keep failures visible.
This commit is contained in:
@@ -157,7 +157,7 @@ SAVEHIST=50000 #save upto 50,000 lines in history. oh-my-zsh default is 10,
|
|||||||
#setopt hist_ignore_all_dups # dont record duplicated entries in history during a single session
|
#setopt hist_ignore_all_dups # dont record duplicated entries in history during a single session
|
||||||
|
|
||||||
alias myip="wget -qO- https://wtfismyip.com/text" # quickly show external ip address
|
alias myip="wget -qO- https://wtfismyip.com/text" # quickly show external ip address
|
||||||
alias l="ls --hyperlink=auto -lAhrtF" # show all except . .. , sort by recent, / at the end of folders, clickable
|
alias l="eza --hyperlink -lA --sort=modified --reverse --classify" # show all except . .. , sort by recent, / at the end of folders, clickable
|
||||||
alias e="exit"
|
alias e="exit"
|
||||||
alias ip="ip --color=auto"
|
alias ip="ip --color=auto"
|
||||||
## EZA - the better ls command
|
## EZA - the better ls command
|
||||||
@@ -184,7 +184,8 @@ cheat() {
|
|||||||
# TRAPALRM() { if command -v cmatrix &> /dev/null; then cmatrix -sb; fi }
|
# TRAPALRM() { if command -v cmatrix &> /dev/null; then cmatrix -sb; fi }
|
||||||
|
|
||||||
speedtest() {
|
speedtest() {
|
||||||
curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -
|
setopt localoptions pipefail
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -
|
||||||
}
|
}
|
||||||
|
|
||||||
dadjoke() {
|
dadjoke() {
|
||||||
@@ -195,9 +196,9 @@ dadjoke() {
|
|||||||
ipgeo() {
|
ipgeo() {
|
||||||
# Specify ip or your ip will be used
|
# Specify ip or your ip will be used
|
||||||
if [ "$1" ]; then
|
if [ "$1" ]; then
|
||||||
curl "http://api.db-ip.com/v2/free/$1"
|
curl "https://api.db-ip.com/v2/free/$1"
|
||||||
else
|
else
|
||||||
curl "http://api.db-ip.com/v2/free/$(myip)"
|
curl "https://api.db-ip.com/v2/free/$(myip)"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +218,7 @@ for file in "$ZSH_CONFIGS_DIR"/*(DN); do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Now source oh-my-zsh.sh so that any plugins added in ~/.config/zshrc/* files also get loaded
|
# Now source oh-my-zsh.sh so that any plugins added in ~/.config/zshrc/* files also get loaded
|
||||||
source $ZSH/oh-my-zsh.sh
|
source "$ZSH/oh-my-zsh.sh"
|
||||||
|
|
||||||
# Configs that can only work after "source $ZSH/oh-my-zsh.sh", such as Aliases that depend oh-my-zsh plugins
|
# Configs that can only work after "source $ZSH/oh-my-zsh.sh", such as Aliases that depend oh-my-zsh plugins
|
||||||
|
|
||||||
@@ -226,6 +227,6 @@ source $ZSH/oh-my-zsh.sh
|
|||||||
export FZF_DEFAULT_OPS="--extended"
|
export FZF_DEFAULT_OPS="--extended"
|
||||||
|
|
||||||
# Initialize zoxide (smarter cd command)
|
# Initialize zoxide (smarter cd command)
|
||||||
eval "$(zoxide init zsh)"
|
command -v zoxide &> /dev/null && eval "$(zoxide init zsh)"
|
||||||
|
|
||||||
alias k="k -h" # show human readable file sizes, in kb, mb etc
|
alias k="k -h" # show human readable file sizes, in kb, mb etc
|
||||||
|
|||||||
+136
-84
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
# Save the original working directory
|
# Save the original working directory
|
||||||
ORIGINAL_DIR="$(pwd)"
|
ORIGINAL_DIR="$(pwd)"
|
||||||
|
|
||||||
@@ -18,7 +20,8 @@ do
|
|||||||
noninteractive_flag=true
|
noninteractive_flag=true
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# Handle any other arguments or provide an error message
|
echo "Unknown option: $arg" >&2
|
||||||
|
exit 2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -42,9 +45,52 @@ detect_os() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_as_root() {
|
||||||
|
if (( EUID == 0 )); then
|
||||||
|
"$@"
|
||||||
|
elif command -v sudo &> /dev/null; then
|
||||||
|
sudo "$@"
|
||||||
|
else
|
||||||
|
echo "Error: sudo is required to run: $*" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_eza_binary() {
|
||||||
|
local archive
|
||||||
|
local binary
|
||||||
|
local target
|
||||||
|
|
||||||
|
case $(uname -m) in
|
||||||
|
x86_64|amd64)
|
||||||
|
target="x86_64-unknown-linux-gnu"
|
||||||
|
;;
|
||||||
|
aarch64|arm64)
|
||||||
|
target="aarch64-unknown-linux-gnu"
|
||||||
|
;;
|
||||||
|
armv7*)
|
||||||
|
target="arm-unknown-linux-gnueabihf"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: no prebuilt eza binary is available for $(uname -m)." >&2
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
archive=$(mktemp)
|
||||||
|
binary=$(mktemp)
|
||||||
|
trap 'rm -f "${archive:-}" "${binary:-}"' EXIT
|
||||||
|
curl -fsSL "https://github.com/eza-community/eza/releases/latest/download/eza_${target}.tar.gz" -o "$archive"
|
||||||
|
tar -xOzf "$archive" ./eza > "$binary"
|
||||||
|
run_as_root install -m 755 "$binary" /usr/local/bin/eza
|
||||||
|
rm -f "$archive" "$binary"
|
||||||
|
trap - EXIT
|
||||||
|
}
|
||||||
|
|
||||||
# Install eza using package manager or fallback methods
|
# Install eza using package manager or fallback methods
|
||||||
install_eza() {
|
install_eza() {
|
||||||
local os=$(detect_os)
|
local os
|
||||||
|
os=$(detect_os)
|
||||||
echo "Installing eza..."
|
echo "Installing eza..."
|
||||||
|
|
||||||
case $os in
|
case $os in
|
||||||
@@ -56,80 +102,73 @@ install_eza() {
|
|||||||
brew install eza
|
brew install eza
|
||||||
;;
|
;;
|
||||||
ubuntu|debian)
|
ubuntu|debian)
|
||||||
sudo apt-get update
|
run_as_root apt-get update
|
||||||
if ! sudo apt-get install -y eza; then
|
if ! run_as_root apt-get install -y eza; then
|
||||||
echo "Package manager installation failed, attempting fallback..."
|
echo "Package manager installation failed, attempting fallback..."
|
||||||
# Install cargo if it doesn't exist
|
install_eza_binary
|
||||||
if ! command -v cargo &> /dev/null; then
|
|
||||||
echo "Installing Rust and cargo..."
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y curl build-essential
|
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
||||||
source ~/.cargo/env
|
|
||||||
fi
|
|
||||||
cargo install eza
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
fedora)
|
fedora)
|
||||||
if ! sudo dnf install -y eza; then
|
if ! run_as_root dnf install -y eza; then
|
||||||
echo "Package manager installation failed, attempting fallback..."
|
echo "Package manager installation failed, attempting fallback..."
|
||||||
if command -v cargo &> /dev/null; then
|
install_eza_binary
|
||||||
cargo install eza
|
|
||||||
else
|
|
||||||
wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz
|
|
||||||
sudo install -m 755 eza /usr/local/bin/eza
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
centos|rhel)
|
centos|rhel)
|
||||||
if ! sudo yum install -y eza; then
|
if ! run_as_root yum install -y eza; then
|
||||||
echo "Package manager installation failed, attempting fallback..."
|
echo "Package manager installation failed, attempting fallback..."
|
||||||
if command -v cargo &> /dev/null; then
|
install_eza_binary
|
||||||
cargo install eza
|
|
||||||
else
|
|
||||||
wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz
|
|
||||||
sudo install -m 755 eza /usr/local/bin/eza
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
arch|manjaro)
|
arch|manjaro)
|
||||||
if ! sudo pacman -Syu --noconfirm eza; then
|
if ! run_as_root pacman -Syu --noconfirm eza; then
|
||||||
echo "Package manager installation failed, attempting fallback..."
|
echo "Package manager installation failed, attempting fallback..."
|
||||||
wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz
|
install_eza_binary
|
||||||
sudo install -m 755 eza /usr/local/bin/eza
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unsupported operating system for package manager installation, using fallback..."
|
echo "Unsupported operating system for package manager installation, using fallback..."
|
||||||
wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz
|
install_eza_binary
|
||||||
sudo install -m 755 eza /usr/local/bin/eza
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper: install zoxide if the package manager couldn't provide it
|
# Helper: install zoxide if the package manager couldn't provide it
|
||||||
|
install_zoxide_binary() {
|
||||||
|
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh |
|
||||||
|
sh -s -- --bin-dir /usr/local/bin --man-dir /usr/local/share/man
|
||||||
|
}
|
||||||
|
|
||||||
install_zoxide_fallback() {
|
install_zoxide_fallback() {
|
||||||
local os=$(detect_os)
|
local os
|
||||||
|
os=$(detect_os)
|
||||||
echo "Attempting fallback installation of zoxide..."
|
echo "Attempting fallback installation of zoxide..."
|
||||||
case $os in
|
case $os in
|
||||||
|
macos)
|
||||||
|
brew install zoxide
|
||||||
|
;;
|
||||||
fedora)
|
fedora)
|
||||||
sudo dnf install -y zoxide || curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
|
run_as_root dnf install -y zoxide || install_zoxide_binary
|
||||||
;;
|
;;
|
||||||
centos|rhel)
|
centos|rhel)
|
||||||
if command -v dnf &> /dev/null && sudo dnf install -y zoxide; then :; else
|
if command -v dnf &> /dev/null && run_as_root dnf install -y zoxide; then :; else
|
||||||
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
|
install_zoxide_binary
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
arch|manjaro)
|
||||||
|
run_as_root pacman -S --needed --noconfirm zoxide
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
|
install_zoxide_binary
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# Core: install required packages via the preferred package manager, then fall back where needed
|
# Core: install required packages via the preferred package manager, then fall back where needed
|
||||||
install_packages() {
|
install_packages() {
|
||||||
local os=$(detect_os)
|
local os
|
||||||
local base_packages="zsh git wget fontconfig zoxide autoconf"
|
local base_packages=(zsh git wget fontconfig autoconf)
|
||||||
|
os=$(detect_os)
|
||||||
|
|
||||||
case $os in
|
case $os in
|
||||||
macos)
|
macos)
|
||||||
@@ -137,38 +176,46 @@ install_packages() {
|
|||||||
echo "Homebrew is not installed. Installing Homebrew..."
|
echo "Homebrew is not installed. Installing Homebrew..."
|
||||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
fi
|
fi
|
||||||
brew install ${base_packages}
|
brew install "${base_packages[@]}"
|
||||||
;;
|
;;
|
||||||
ubuntu|debian)
|
ubuntu|debian)
|
||||||
sudo apt-get update
|
run_as_root apt-get update
|
||||||
sudo apt-get install -y ${base_packages}
|
run_as_root apt-get install -y "${base_packages[@]}" curl tar
|
||||||
;;
|
;;
|
||||||
fedora)
|
fedora)
|
||||||
sudo dnf install -y ${base_packages}
|
run_as_root dnf install -y "${base_packages[@]}" curl tar
|
||||||
;;
|
;;
|
||||||
centos|rhel)
|
centos|rhel)
|
||||||
sudo yum install -y ${base_packages}
|
run_as_root yum install -y "${base_packages[@]}" curl tar
|
||||||
;;
|
;;
|
||||||
arch|manjaro)
|
arch|manjaro)
|
||||||
sudo pacman -Syu --noconfirm ${base_packages}
|
run_as_root pacman -Syu --noconfirm "${base_packages[@]}" curl tar
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unsupported operating system. Please install ${base_packages} manually."
|
echo "Unsupported operating system. Please install ${base_packages[*]} manually."
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Fallbacks for any tools that are still missing after the package-manager step
|
# Fallbacks for any tools that are still missing after the package-manager step
|
||||||
command -v eza &> /dev/null || install_eza
|
command -v eza &> /dev/null || install_eza
|
||||||
command -v zoxide &> /dev/null || install_zoxide_fallback
|
command -v zoxide &> /dev/null || install_zoxide_fallback
|
||||||
|
|
||||||
|
local command_name
|
||||||
|
for command_name in zsh git wget curl tar fc-cache eza zoxide autoconf; do
|
||||||
|
if ! command -v "$command_name" &> /dev/null; then
|
||||||
|
echo "Error: required command was not installed: $command_name" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if required packages are installed, if not, install them
|
# Check if required packages are installed, if not, install them
|
||||||
if command -v zsh &> /dev/null && command -v git &> /dev/null && command -v wget &> /dev/null && command -v fc-cache &> /dev/null && command -v eza &> /dev/null && command -v zoxide &> /dev/null && command -v autoconf &> /dev/null; then
|
if command -v zsh &> /dev/null && command -v git &> /dev/null && command -v wget &> /dev/null && command -v curl &> /dev/null && command -v tar &> /dev/null && command -v fc-cache &> /dev/null && command -v eza &> /dev/null && command -v zoxide &> /dev/null && command -v autoconf &> /dev/null; then
|
||||||
echo -e "ZSH, Git, wget, fontconfig, eza, zoxide, and autoconf are already installed\n"
|
echo -e "ZSH, Git, wget, curl, tar, fontconfig, eza, zoxide, and autoconf are already installed\n"
|
||||||
else
|
else
|
||||||
echo "Installing required packages..."
|
echo "Installing required packages..."
|
||||||
install_packages
|
install_packages
|
||||||
echo -e "zsh, wget, git, fontconfig, eza, zoxide, and autoconf Installed\n"
|
echo -e "zsh, wget, curl, tar, git, fontconfig, eza, zoxide, and autoconf installed\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ~/.gitconfig.backup ]; then
|
if [ -f ~/.gitconfig.backup ]; then
|
||||||
@@ -181,9 +228,9 @@ fi
|
|||||||
|
|
||||||
ZSH="$HOME/.oh-my-zsh"
|
ZSH="$HOME/.oh-my-zsh"
|
||||||
|
|
||||||
if mv -n ~/.zshrc ~/.zshrc-backup-$(date +"%Y-%m-%d"); then # backup .zshrc
|
zshrc_download=$(mktemp "$HOME/.zshrc.download.XXXXXX")
|
||||||
echo -e "Backed up the current .zshrc to .zshrc-backup-date\n"
|
trap 'rm -f "$zshrc_download"' EXIT
|
||||||
fi
|
wget -q "https://git.miomio.moe/mio/easyzsh/raw/branch/master/.zshrc" -O "$zshrc_download"
|
||||||
|
|
||||||
# echo -e "The setup will be installed in '~/.config/ezsh'\n"
|
# echo -e "The setup will be installed in '~/.config/ezsh'\n"
|
||||||
# echo -e "Place your personal zshrc config files under '~/.config/ezsh/zshrc/'\n"
|
# echo -e "Place your personal zshrc config files under '~/.config/ezsh/zshrc/'\n"
|
||||||
@@ -194,20 +241,25 @@ fi
|
|||||||
# fi
|
# fi
|
||||||
|
|
||||||
echo -e "Installing oh-my-zsh\n"
|
echo -e "Installing oh-my-zsh\n"
|
||||||
if [ -d $ZSH ]; then
|
if [ -d "$ZSH" ]; then
|
||||||
echo -e "oh-my-zsh is already installed\n"
|
echo -e "oh-my-zsh is already installed\n"
|
||||||
git -C $ZSH remote set-url origin https://github.com/ohmyzsh/ohmyzsh.git
|
git -C "$ZSH" remote set-url origin https://github.com/ohmyzsh/ohmyzsh.git
|
||||||
# elif [ -d ~/.oh-my-zsh ]; then
|
# elif [ -d ~/.oh-my-zsh ]; then
|
||||||
# echo -e "oh-my-zsh in already installed at '~/.oh-my-zsh'. Moving it to '$ZSH'"
|
# echo -e "oh-my-zsh in already installed at '~/.oh-my-zsh'. Moving it to '$ZSH'"
|
||||||
# export ZSH="$HOME/.config/ezsh/oh-my-zsh"
|
# export ZSH="$HOME/.config/ezsh/oh-my-zsh"
|
||||||
# mv ~/.oh-my-zsh $ZSH
|
# mv ~/.oh-my-zsh $ZSH
|
||||||
# git -C $ZSH remote set-url origin https://github.com/ohmyzsh/ohmyzsh.git
|
# git -C $ZSH remote set-url origin https://github.com/ohmyzsh/ohmyzsh.git
|
||||||
else
|
else
|
||||||
git clone --depth=1 https://github.com/ohmyzsh/ohmyzsh.git $ZSH
|
git clone --depth=1 https://github.com/ohmyzsh/ohmyzsh.git "$ZSH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# cp -f .zshrc ~/
|
if [ -e "$HOME/.zshrc" ] || [ -L "$HOME/.zshrc" ]; then
|
||||||
wget -q "https://git.miomio.moe/mio/easyzsh/raw/branch/master/.zshrc" -O ~/.zshrc
|
zshrc_backup=$(mktemp "$HOME/.zshrc.backup.$(date +"%Y%m%d-%H%M%S").XXXXXX")
|
||||||
|
cp -Pp "$HOME/.zshrc" "$zshrc_backup"
|
||||||
|
echo -e "Backed up the current .zshrc to $zshrc_backup\n"
|
||||||
|
fi
|
||||||
|
mv "$zshrc_download" "$HOME/.zshrc"
|
||||||
|
trap - EXIT
|
||||||
# cp -f ezshrc.zsh ~/.config/ezsh/
|
# cp -f ezshrc.zsh ~/.config/ezsh/
|
||||||
# cp -f p10k.zsh ~/.config/ezsh/
|
# cp -f p10k.zsh ~/.config/ezsh/
|
||||||
|
|
||||||
@@ -219,28 +271,28 @@ if [ -f ~/.zcompdump ]; then
|
|||||||
mv ~/.zcompdump* ~/.cache/zsh/
|
mv ~/.zcompdump* ~/.cache/zsh/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d $ZSH/plugins/zsh-autosuggestions ]; then
|
if [ -d "$ZSH/plugins/zsh-autosuggestions" ]; then
|
||||||
git -C $ZSH/plugins/zsh-autosuggestions pull
|
git -C "$ZSH/plugins/zsh-autosuggestions" pull
|
||||||
else
|
else
|
||||||
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions $ZSH/plugins/zsh-autosuggestions
|
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions "$ZSH/plugins/zsh-autosuggestions"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d $ZSH/custom/plugins/zsh-syntax-highlighting ]; then
|
if [ -d "$ZSH/custom/plugins/zsh-syntax-highlighting" ]; then
|
||||||
git -C $ZSH/custom/plugins/zsh-syntax-highlighting pull
|
git -C "$ZSH/custom/plugins/zsh-syntax-highlighting" pull
|
||||||
else
|
else
|
||||||
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH/custom/plugins/zsh-syntax-highlighting
|
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH/custom/plugins/zsh-syntax-highlighting"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d $ZSH/custom/plugins/zsh-completions ]; then
|
if [ -d "$ZSH/custom/plugins/zsh-completions" ]; then
|
||||||
git -C $ZSH/custom/plugins/zsh-completions pull
|
git -C "$ZSH/custom/plugins/zsh-completions" pull
|
||||||
else
|
else
|
||||||
git clone --depth=1 https://github.com/zsh-users/zsh-completions $ZSH/custom/plugins/zsh-completions
|
git clone --depth=1 https://github.com/zsh-users/zsh-completions "$ZSH/custom/plugins/zsh-completions"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d $ZSH/custom/plugins/zsh-history-substring-search ]; then
|
if [ -d "$ZSH/custom/plugins/zsh-history-substring-search" ]; then
|
||||||
git -C $ZSH/custom/plugins/zsh-history-substring-search pull
|
git -C "$ZSH/custom/plugins/zsh-history-substring-search" pull
|
||||||
else
|
else
|
||||||
git clone --depth=1 https://github.com/zsh-users/zsh-history-substring-search $ZSH/custom/plugins/zsh-history-substring-search
|
git clone --depth=1 https://github.com/zsh-users/zsh-history-substring-search "$ZSH/custom/plugins/zsh-history-substring-search"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -274,12 +326,12 @@ fi
|
|||||||
|
|
||||||
fc-cache -fv ~/.fonts
|
fc-cache -fv ~/.fonts
|
||||||
|
|
||||||
if [ -d $ZSH/custom/themes/powerlevel10k ]; then
|
if [ -d "$ZSH/custom/themes/powerlevel10k" ]; then
|
||||||
git -C $ZSH/custom/themes/powerlevel10k pull
|
git -C "$ZSH/custom/themes/powerlevel10k" pull
|
||||||
else
|
else
|
||||||
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH/custom/themes/powerlevel10k
|
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "$ZSH/custom/themes/powerlevel10k"
|
||||||
fi
|
fi
|
||||||
curl -s https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s p10k
|
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s -- p10k
|
||||||
|
|
||||||
if [ -d ~/.fzf ]; then
|
if [ -d ~/.fzf ]; then
|
||||||
git -C ~/.fzf pull
|
git -C ~/.fzf pull
|
||||||
@@ -289,16 +341,16 @@ else
|
|||||||
~/.fzf/install --all --key-bindings --completion --no-update-rc
|
~/.fzf/install --all --key-bindings --completion --no-update-rc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d $ZSH/custom/plugins/k ]; then
|
if [ -d "$ZSH/custom/plugins/k" ]; then
|
||||||
git -C $ZSH/custom/plugins/k pull
|
git -C "$ZSH/custom/plugins/k" pull
|
||||||
else
|
else
|
||||||
git clone --depth 1 https://github.com/supercrabtree/k $ZSH/custom/plugins/k
|
git clone --depth 1 https://github.com/supercrabtree/k "$ZSH/custom/plugins/k"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d $ZSH/custom/plugins/fzf-tab ]; then
|
if [ -d "$ZSH/custom/plugins/fzf-tab" ]; then
|
||||||
git -C $ZSH/custom/plugins/fzf-tab pull
|
git -C "$ZSH/custom/plugins/fzf-tab" pull
|
||||||
else
|
else
|
||||||
git clone --depth 1 https://github.com/Aloxaf/fzf-tab $ZSH/custom/plugins/fzf-tab
|
git clone --depth 1 https://github.com/Aloxaf/fzf-tab "$ZSH/custom/plugins/fzf-tab"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Import existing z data into zoxide if available
|
# Import existing z data into zoxide if available
|
||||||
@@ -342,7 +394,7 @@ if [ "$cp_hist_flag" = true ]; then
|
|||||||
wget -q --show-progress https://gist.githubusercontent.com/muendelezaji/c14722ab66b505a49861b8a74e52b274/raw/49f0fb7f661bdf794742257f58950d209dd6cb62/bash-to-zsh-hist.py
|
wget -q --show-progress https://gist.githubusercontent.com/muendelezaji/c14722ab66b505a49861b8a74e52b274/raw/49f0fb7f661bdf794742257f58950d209dd6cb62/bash-to-zsh-hist.py
|
||||||
cat ~/.bash_history | python3 bash-to-zsh-hist.py >> ~/.zsh_history
|
cat ~/.bash_history | python3 bash-to-zsh-hist.py >> ~/.zsh_history
|
||||||
else
|
else
|
||||||
echo "Python is not installed, can't copy bash_history to zsh_history\n"
|
printf "Python is not installed, can't copy bash_history to zsh_history\n"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -351,18 +403,18 @@ fi
|
|||||||
|
|
||||||
if [ "$noninteractive_flag" = true ]; then
|
if [ "$noninteractive_flag" = true ]; then
|
||||||
echo -e "Installation complete, exit terminal and enter a new zsh session\n"
|
echo -e "Installation complete, exit terminal and enter a new zsh session\n"
|
||||||
echo -e "Make sure to change zsh to default shell by running: chsh -s $(which zsh)"
|
echo -e "Make sure to change zsh to default shell by running: chsh -s $(command -v zsh)"
|
||||||
echo -e "In a new zsh session manually run: build-fzf-tab-module"
|
echo -e "In a new zsh session manually run: build-fzf-tab-module"
|
||||||
else
|
else
|
||||||
# source ~/.zshrc
|
# source ~/.zshrc
|
||||||
echo -e "\nSudo access is needed to change default shell\n"
|
echo -e "\nAdministrator access is needed to change the default shell\n"
|
||||||
|
|
||||||
if sudo chsh -s $(which zsh) $USER && /bin/zsh -i -c 'omz update'; then
|
if run_as_root chsh -s "$(command -v zsh)" "${USER:-$(id -un)}" && /bin/zsh -i -c 'omz update'; then
|
||||||
echo -e "Installation complete, exit terminal and enter a new zsh session"
|
echo -e "Installation complete, exit terminal and enter a new zsh session"
|
||||||
echo -e "In a new zsh session manually run: build-fzf-tab-module"
|
echo -e "In a new zsh session manually run: build-fzf-tab-module"
|
||||||
else
|
else
|
||||||
echo -e "Something is wrong"
|
echo -e "Something is wrong"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
-230
@@ -1,230 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
RELEASE="latest"
|
|
||||||
OS="$(uname -s)"
|
|
||||||
|
|
||||||
case "${OS}" in
|
|
||||||
MINGW* | Win*) OS="Windows" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ -d "$HOME/.fnm" ]; then
|
|
||||||
INSTALL_DIR="$HOME/.fnm"
|
|
||||||
elif [ -n "$XDG_DATA_HOME" ]; then
|
|
||||||
INSTALL_DIR="$XDG_DATA_HOME/fnm"
|
|
||||||
elif [ "$OS" = "Darwin" ]; then
|
|
||||||
INSTALL_DIR="$HOME/Library/Application Support/fnm"
|
|
||||||
else
|
|
||||||
INSTALL_DIR="$HOME/.local/share/fnm"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Parse Flags
|
|
||||||
parse_args() {
|
|
||||||
while [[ $# -gt 0 ]]; do
|
|
||||||
key="$1"
|
|
||||||
|
|
||||||
case $key in
|
|
||||||
-d | --install-dir)
|
|
||||||
INSTALL_DIR="$2"
|
|
||||||
shift # past argument
|
|
||||||
shift # past value
|
|
||||||
;;
|
|
||||||
-s | --skip-shell)
|
|
||||||
SKIP_SHELL="true"
|
|
||||||
shift # past argument
|
|
||||||
;;
|
|
||||||
--force-install | --force-no-brew)
|
|
||||||
echo "\`--force-install\`: I hope you know what you're doing." >&2
|
|
||||||
FORCE_INSTALL="true"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-r | --release)
|
|
||||||
RELEASE="$2"
|
|
||||||
shift # past release argument
|
|
||||||
shift # past release value
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unrecognized argument $key"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
set_filename() {
|
|
||||||
if [ "$OS" = "Linux" ]; then
|
|
||||||
# Based on https://stackoverflow.com/a/45125525
|
|
||||||
case "$(uname -m)" in
|
|
||||||
arm | armv7*)
|
|
||||||
FILENAME="fnm-arm32"
|
|
||||||
;;
|
|
||||||
aarch* | armv8*)
|
|
||||||
FILENAME="fnm-arm64"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
FILENAME="fnm-linux"
|
|
||||||
esac
|
|
||||||
elif [ "$OS" = "Darwin" ] && [ "$FORCE_INSTALL" = "true" ]; then
|
|
||||||
FILENAME="fnm-macos"
|
|
||||||
USE_HOMEBREW="false"
|
|
||||||
echo "Downloading the latest fnm binary from GitHub..."
|
|
||||||
echo " Pro tip: it's easier to use Homebrew for managing fnm in macOS."
|
|
||||||
echo " Remove the \`--force-no-brew\` so it will be easy to upgrade."
|
|
||||||
elif [ "$OS" = "Darwin" ]; then
|
|
||||||
USE_HOMEBREW="true"
|
|
||||||
echo "Downloading fnm using Homebrew..."
|
|
||||||
elif [ "$OS" = "Windows" ] ; then
|
|
||||||
FILENAME="fnm-windows"
|
|
||||||
echo "Downloading the latest fnm binary from GitHub..."
|
|
||||||
else
|
|
||||||
echo "OS $OS is not supported."
|
|
||||||
echo "If you think that's a bug - please file an issue to https://github.com/Schniz/fnm/issues"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
download_fnm() {
|
|
||||||
if [ "$USE_HOMEBREW" = "true" ]; then
|
|
||||||
brew install fnm
|
|
||||||
else
|
|
||||||
if [ "$RELEASE" = "latest" ]; then
|
|
||||||
URL="https://github.com/Schniz/fnm/releases/latest/download/$FILENAME.zip"
|
|
||||||
else
|
|
||||||
URL="https://github.com/Schniz/fnm/releases/download/$RELEASE/$FILENAME.zip"
|
|
||||||
fi
|
|
||||||
|
|
||||||
DOWNLOAD_DIR=$(mktemp -d)
|
|
||||||
|
|
||||||
echo "Downloading $URL..."
|
|
||||||
|
|
||||||
mkdir -p "$INSTALL_DIR" &>/dev/null
|
|
||||||
|
|
||||||
if ! curl --progress-bar --fail -L "$URL" -o "$DOWNLOAD_DIR/$FILENAME.zip"; then
|
|
||||||
echo "Download failed. Check that the release/filename are correct."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
unzip -q "$DOWNLOAD_DIR/$FILENAME.zip" -d "$DOWNLOAD_DIR"
|
|
||||||
|
|
||||||
if [ -f "$DOWNLOAD_DIR/fnm" ]; then
|
|
||||||
mv "$DOWNLOAD_DIR/fnm" "$INSTALL_DIR/fnm"
|
|
||||||
else
|
|
||||||
mv "$DOWNLOAD_DIR/$FILENAME/fnm" "$INSTALL_DIR/fnm"
|
|
||||||
fi
|
|
||||||
|
|
||||||
chmod u+x "$INSTALL_DIR/fnm"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_dependencies() {
|
|
||||||
echo "Checking dependencies for the installation script..."
|
|
||||||
|
|
||||||
echo -n "Checking availability of curl... "
|
|
||||||
if hash curl 2>/dev/null; then
|
|
||||||
echo "OK!"
|
|
||||||
else
|
|
||||||
echo "Missing!"
|
|
||||||
SHOULD_EXIT="true"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -n "Checking availability of unzip... "
|
|
||||||
if hash unzip 2>/dev/null; then
|
|
||||||
echo "OK!"
|
|
||||||
else
|
|
||||||
echo "Missing!"
|
|
||||||
SHOULD_EXIT="true"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$USE_HOMEBREW" = "true" ]; then
|
|
||||||
echo -n "Checking availability of Homebrew (brew)... "
|
|
||||||
if hash brew 2>/dev/null; then
|
|
||||||
echo "OK!"
|
|
||||||
else
|
|
||||||
echo "Missing!"
|
|
||||||
SHOULD_EXIT="true"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$SHOULD_EXIT" = "true" ]; then
|
|
||||||
echo "Not installing fnm due to missing dependencies."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_containing_dir_exists() {
|
|
||||||
local CONTAINING_DIR
|
|
||||||
CONTAINING_DIR="$(dirname "$1")"
|
|
||||||
if [ ! -d "$CONTAINING_DIR" ]; then
|
|
||||||
echo " >> Creating directory $CONTAINING_DIR"
|
|
||||||
mkdir -p "$CONTAINING_DIR"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_shell() {
|
|
||||||
CURRENT_SHELL="$(basename "$SHELL")"
|
|
||||||
|
|
||||||
if [ "$CURRENT_SHELL" = "zsh" ]; then
|
|
||||||
CONF_FILE=${ZDOTDIR:-$HOME}/.zshrc
|
|
||||||
ensure_containing_dir_exists "$CONF_FILE"
|
|
||||||
echo "Installing for Zsh. Appending the following to $CONF_FILE:"
|
|
||||||
{
|
|
||||||
echo ''
|
|
||||||
echo '# fnm'
|
|
||||||
echo 'FNM_PATH="'"$INSTALL_DIR"'"'
|
|
||||||
echo 'if [ -d "$FNM_PATH" ]; then'
|
|
||||||
echo ' export PATH="'$INSTALL_DIR':$PATH"'
|
|
||||||
echo ' eval "`fnm env`"'
|
|
||||||
echo 'fi'
|
|
||||||
} | tee -a "$CONF_FILE"
|
|
||||||
|
|
||||||
elif [ "$CURRENT_SHELL" = "fish" ]; then
|
|
||||||
CONF_FILE=$HOME/.config/fish/conf.d/fnm.fish
|
|
||||||
ensure_containing_dir_exists "$CONF_FILE"
|
|
||||||
echo "Installing for Fish. Appending the following to $CONF_FILE:"
|
|
||||||
{
|
|
||||||
echo ''
|
|
||||||
echo '# fnm'
|
|
||||||
echo 'set FNM_PATH "'"$INSTALL_DIR"'"'
|
|
||||||
echo 'if [ -d "$FNM_PATH" ]'
|
|
||||||
echo ' set PATH "$FNM_PATH" $PATH'
|
|
||||||
echo ' fnm env | source'
|
|
||||||
echo 'end'
|
|
||||||
} | tee -a "$CONF_FILE"
|
|
||||||
|
|
||||||
elif [ "$CURRENT_SHELL" = "bash" ]; then
|
|
||||||
if [ "$OS" = "Darwin" ]; then
|
|
||||||
CONF_FILE=$HOME/.profile
|
|
||||||
else
|
|
||||||
CONF_FILE=$HOME/.bashrc
|
|
||||||
fi
|
|
||||||
ensure_containing_dir_exists "$CONF_FILE"
|
|
||||||
echo "Installing for Bash. Appending the following to $CONF_FILE:"
|
|
||||||
{
|
|
||||||
echo ''
|
|
||||||
echo '# fnm'
|
|
||||||
echo 'FNM_PATH="'"$INSTALL_DIR"'"'
|
|
||||||
echo 'if [ -d "$FNM_PATH" ]; then'
|
|
||||||
echo ' export PATH="$FNM_PATH:$PATH"'
|
|
||||||
echo ' eval "`fnm env`"'
|
|
||||||
echo 'fi'
|
|
||||||
} | tee -a "$CONF_FILE"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "Could not infer shell type. Please set up manually."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "In order to apply the changes, open a new terminal or run the following command:"
|
|
||||||
echo ""
|
|
||||||
echo " source $CONF_FILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
parse_args "$@"
|
|
||||||
set_filename
|
|
||||||
check_dependencies
|
|
||||||
download_fnm
|
|
||||||
if [ "$SKIP_SHELL" != "true" ]; then
|
|
||||||
setup_shell
|
|
||||||
fi
|
|
||||||
+56
-40
@@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Save the original working directory
|
set -euo pipefail
|
||||||
ORIGINAL_DIR="$(pwd)"
|
|
||||||
|
|
||||||
# Function to detect the operating system
|
# Function to detect the operating system
|
||||||
detect_os() {
|
detect_os() {
|
||||||
@@ -15,6 +14,46 @@ detect_os() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_as_root() {
|
||||||
|
if (( EUID == 0 )); then
|
||||||
|
"$@"
|
||||||
|
elif command -v sudo &> /dev/null; then
|
||||||
|
sudo "$@"
|
||||||
|
else
|
||||||
|
echo "Error: sudo is required to install unzip." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_unzip() {
|
||||||
|
command -v unzip &> /dev/null && return
|
||||||
|
|
||||||
|
echo "Installing required dependency: unzip"
|
||||||
|
case $(detect_os) in
|
||||||
|
ubuntu|debian)
|
||||||
|
run_as_root apt-get update
|
||||||
|
run_as_root apt-get install -y unzip
|
||||||
|
;;
|
||||||
|
fedora)
|
||||||
|
run_as_root dnf install -y unzip
|
||||||
|
;;
|
||||||
|
centos|rhel)
|
||||||
|
if command -v dnf &> /dev/null; then
|
||||||
|
run_as_root dnf install -y unzip
|
||||||
|
else
|
||||||
|
run_as_root yum install -y unzip
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
arch|manjaro)
|
||||||
|
run_as_root pacman -S --needed --noconfirm unzip
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: unzip is required. Install it with your package manager and retry." >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
# Install fnm (Fast Node Manager) if it is not already installed
|
# Install fnm (Fast Node Manager) if it is not already installed
|
||||||
if command -v fnm &> /dev/null; then
|
if command -v fnm &> /dev/null; then
|
||||||
echo -e "fnm is already installed\n"
|
echo -e "fnm is already installed\n"
|
||||||
@@ -24,41 +63,22 @@ else
|
|||||||
|
|
||||||
os=$(detect_os)
|
os=$(detect_os)
|
||||||
|
|
||||||
case $os in
|
if [[ "$os" == "macos" ]] && command -v brew &> /dev/null; then
|
||||||
macos)
|
|
||||||
# Try homebrew first on macOS
|
|
||||||
if command -v brew &> /dev/null; then
|
|
||||||
echo "Installing fnm via Homebrew..."
|
echo "Installing fnm via Homebrew..."
|
||||||
brew install fnm
|
brew install fnm
|
||||||
else
|
else
|
||||||
echo "Installing fnm via official installer..."
|
install_unzip
|
||||||
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/install/fnm.sh | bash
|
install_dir="${XDG_DATA_HOME:-$HOME/.local/share}/fnm"
|
||||||
fi
|
installer_args=(--install-dir "$install_dir" --skip-shell)
|
||||||
;;
|
[[ "$os" == "macos" ]] && installer_args+=(--force-install)
|
||||||
ubuntu|debian)
|
|
||||||
# Use the official installer for Linux
|
|
||||||
echo "Installing fnm via official installer..."
|
|
||||||
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/install/fnm.sh | bash
|
|
||||||
;;
|
|
||||||
fedora|centos|rhel)
|
|
||||||
# Use the official installer for RHEL-based distros
|
|
||||||
echo "Installing fnm via official installer..."
|
|
||||||
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/install/fnm.sh | bash
|
|
||||||
;;
|
|
||||||
arch|manjaro)
|
|
||||||
# Use the official installer for Arch-based distros
|
|
||||||
echo "Installing fnm via official installer..."
|
|
||||||
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/install/fnm.sh | bash
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Using official installer for unknown OS..."
|
|
||||||
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/install/fnm.sh | bash
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Load fnm for the remainder of this script
|
echo "Installing fnm via official installer..."
|
||||||
export PATH="$HOME/.local/share/fnm:$PATH"
|
curl -fsSL https://fnm.vercel.app/install | bash -s -- "${installer_args[@]}"
|
||||||
eval "$(fnm env --use-on-cd)"
|
export PATH="$install_dir:$PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
command -v fnm &> /dev/null
|
||||||
|
eval "$(fnm env --use-on-cd --shell bash)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# OPTIONAL: Install the latest LTS version of Node.js
|
# OPTIONAL: Install the latest LTS version of Node.js
|
||||||
@@ -69,17 +89,13 @@ fi
|
|||||||
# fnm default lts-latest
|
# fnm default lts-latest
|
||||||
|
|
||||||
# Apply the fnm zsh configuration patch (downloads zshrc/fnm.zsh to ~/.config/zshrc/fnm.zsh)
|
# Apply the fnm zsh configuration patch (downloads zshrc/fnm.zsh to ~/.config/zshrc/fnm.zsh)
|
||||||
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s fnm
|
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s -- fnm
|
||||||
|
|
||||||
echo -e "\nfnm installation completed!"
|
echo -e "\nfnm installation completed!"
|
||||||
echo -e "To start using fnm, restart your terminal or run: source ~/.zshrc"
|
echo -e "To start using fnm, restart your terminal or run: source ~/.zshrc"
|
||||||
echo -e "\nUseful fnm commands:"
|
echo -e "\nUseful fnm commands:"
|
||||||
echo -e " fnm install --lts # Install latest LTS Node.js"
|
echo -e " fnm install --lts # Install latest LTS Node.js"
|
||||||
echo -e " fnm install 18 # Install Node.js v18"
|
echo -e " fnm use lts-latest # Use the latest LTS release"
|
||||||
echo -e " fnm use 18 # Use Node.js v18"
|
echo -e " fnm default lts-latest # Set the latest LTS as default"
|
||||||
echo -e " fnm default 18 # Set Node.js v18 as default"
|
|
||||||
echo -e " fnm list # List installed versions"
|
echo -e " fnm list # List installed versions"
|
||||||
echo -e " fnm list-remote # List available versions"
|
echo -e " fnm list-remote # List available versions"
|
||||||
|
|
||||||
# Restore original working directory
|
|
||||||
cd "$ORIGINAL_DIR"
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Exit on any error
|
# Exit if either side of a download pipeline fails
|
||||||
set -e
|
set -euo pipefail
|
||||||
|
|
||||||
# Download and execute the patch script
|
# Download and execute the patch script
|
||||||
if ! curl -s https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s merlin_worker; then
|
if ! curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s -- merlin_worker; then
|
||||||
echo "Error: Failed to download or execute patch script"
|
echo "Error: Failed to download or execute patch script"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -12,7 +12,7 @@ fi
|
|||||||
# Check if ~/.bashrc exists and contains PYTHONPATH export
|
# Check if ~/.bashrc exists and contains PYTHONPATH export
|
||||||
if [ -f "$HOME/.bashrc" ]; then
|
if [ -f "$HOME/.bashrc" ]; then
|
||||||
# Extract PYTHONPATH from ~/.bashrc (look for export PYTHONPATH=...)
|
# Extract PYTHONPATH from ~/.bashrc (look for export PYTHONPATH=...)
|
||||||
BASHRC_PYTHONPATH=$(grep -E "^export PYTHONPATH=" "$HOME/.bashrc" | tail -1)
|
BASHRC_PYTHONPATH=$(grep -E "^export PYTHONPATH=" "$HOME/.bashrc" | tail -1 || true)
|
||||||
|
|
||||||
if [ -n "$BASHRC_PYTHONPATH" ]; then
|
if [ -n "$BASHRC_PYTHONPATH" ]; then
|
||||||
echo "Found PYTHONPATH in ~/.bashrc: $BASHRC_PYTHONPATH"
|
echo "Found PYTHONPATH in ~/.bashrc: $BASHRC_PYTHONPATH"
|
||||||
@@ -46,5 +46,5 @@ if [ -f "$HOME/.bashrc" ]; then
|
|||||||
echo "No PYTHONPATH export found in ~/.bashrc"
|
echo "No PYTHONPATH export found in ~/.bashrc"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "~/.bashrc not found"
|
echo "$HOME/.bashrc not found"
|
||||||
fi
|
fi
|
||||||
|
|||||||
+9
-11
@@ -1,7 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Save the original working directory
|
set -euo pipefail
|
||||||
ORIGINAL_DIR="$(pwd)"
|
|
||||||
|
NVM_VERSION="v0.40.4"
|
||||||
|
export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
|
||||||
|
|
||||||
# Install nvm (Node Version Manager) if it is not already installed
|
# Install nvm (Node Version Manager) if it is not already installed
|
||||||
if command -v nvm &> /dev/null; then
|
if command -v nvm &> /dev/null; then
|
||||||
@@ -9,19 +11,15 @@ if command -v nvm &> /dev/null; then
|
|||||||
else
|
else
|
||||||
echo -e "Installing nvm (Node Version Manager)\n"
|
echo -e "Installing nvm (Node Version Manager)\n"
|
||||||
# Using the official install script (https://github.com/nvm-sh/nvm)
|
# Using the official install script (https://github.com/nvm-sh/nvm)
|
||||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
|
curl -fsSL "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" | bash
|
||||||
|
|
||||||
# Load nvm for the remainder of this script
|
# Load nvm for the remainder of this script
|
||||||
export NVM_DIR="${XDG_CONFIG_HOME:-$HOME/.nvm}"
|
|
||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||||
|
command -v nvm &> /dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# OPTIONAL: Install the latest LTS version of Node.js
|
# Install the latest LTS version of Node.js
|
||||||
# Uncomment the following line if you would like to automatically install it
|
|
||||||
nvm install --lts
|
nvm install --lts
|
||||||
|
|
||||||
# Apply the "basic" zsh configuration patch (downloads zshrc/basic.zsh to ~/.config/zshrc/basic.zsh)
|
# Apply the nvm zsh configuration patch
|
||||||
curl -s https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s nvm
|
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s -- nvm
|
||||||
|
|
||||||
# Restore original working directory
|
|
||||||
cd "$ORIGINAL_DIR"
|
|
||||||
|
|||||||
+3
-6
@@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Save the original working directory
|
set -euo pipefail
|
||||||
ORIGINAL_DIR="$(pwd)"
|
|
||||||
|
|
||||||
# Install pyenv (Python Version Manager) if it is not already installed
|
# Install pyenv (Python Version Manager) if it is not already installed
|
||||||
if command -v pyenv &> /dev/null; then
|
if command -v pyenv &> /dev/null; then
|
||||||
@@ -15,6 +14,7 @@ else
|
|||||||
export PYENV_ROOT="$HOME/.pyenv"
|
export PYENV_ROOT="$HOME/.pyenv"
|
||||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||||
eval "$(pyenv init - bash)"
|
eval "$(pyenv init - bash)"
|
||||||
|
command -v pyenv &> /dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# OPTIONAL: Install the latest stable version of Python
|
# OPTIONAL: Install the latest stable version of Python
|
||||||
@@ -22,7 +22,4 @@ fi
|
|||||||
# pyenv install 3.12.0 && pyenv global 3.12.0
|
# pyenv install 3.12.0 && pyenv global 3.12.0
|
||||||
|
|
||||||
# Apply the pyenv zsh configuration patch (downloads zshrc/pyenv.zsh to ~/.config/zshrc/pyenv.zsh)
|
# Apply the pyenv zsh configuration patch (downloads zshrc/pyenv.zsh to ~/.config/zshrc/pyenv.zsh)
|
||||||
curl -s https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s pyenv
|
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s -- pyenv
|
||||||
|
|
||||||
# Restore original working directory
|
|
||||||
cd "$ORIGINAL_DIR"
|
|
||||||
|
|||||||
@@ -1,16 +1,30 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
BASE_URL="https://git.miomio.moe/mio/easyzsh/raw/branch/master/zshrc"
|
BASE_URL="https://git.miomio.moe/mio/easyzsh/raw/branch/master/zshrc"
|
||||||
|
|
||||||
ZSH_CONFIGS_DIR="$HOME/.config/zshrc"
|
ZSH_CONFIGS_DIR="$HOME/.config/zshrc"
|
||||||
mkdir -p $ZSH_CONFIGS_DIR
|
mkdir -p "$ZSH_CONFIGS_DIR"
|
||||||
|
|
||||||
if [ "$#" -gt 0 ]; then
|
if [ "$#" -gt 0 ]; then
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
if ! wget "${BASE_URL}/${arg}.zsh" -O "${ZSH_CONFIGS_DIR}/${arg}.zsh"; then
|
if [[ -z "$arg" || "$arg" == *[![:alnum:]_-]* ]]; then
|
||||||
|
echo "Invalid config name: $arg" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
destination="${ZSH_CONFIGS_DIR}/${arg}.zsh"
|
||||||
|
temporary=$(mktemp "$HOME/.config/.easyzsh-${arg}.XXXXXX")
|
||||||
|
trap 'rm -f "$temporary"' EXIT
|
||||||
|
|
||||||
|
if ! curl -fsSL "${BASE_URL}/${arg}.zsh" -o "$temporary"; then
|
||||||
echo "Failed to download ${arg}.zsh from ${BASE_URL}"
|
echo "Failed to download ${arg}.zsh from ${BASE_URL}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
mv "$temporary" "$destination"
|
||||||
|
trap - EXIT
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "No arguments provided. Please specify the config files to download."
|
echo "No arguments provided. Please specify the config files to download."
|
||||||
|
|||||||
Executable
+85
@@ -0,0 +1,85 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||||||
|
TEMP_DIR=$(mktemp -d)
|
||||||
|
trap 'rm -rf "$TEMP_DIR"' EXIT
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "FAIL: $*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_download_failure_is_reported() {
|
||||||
|
local home="$TEMP_DIR/home-${1%.sh}"
|
||||||
|
mkdir -p "$home"
|
||||||
|
|
||||||
|
if HOME="$home" PATH="$TEMP_DIR/bin:/usr/bin:/bin" /bin/bash "$ROOT/$1" >"$home/output" 2>&1; then
|
||||||
|
fail "$1 returned success after curl failed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdir -p "$TEMP_DIR/bin"
|
||||||
|
ln -s /usr/bin/false "$TEMP_DIR/bin/curl"
|
||||||
|
ln -s /usr/bin/true "$TEMP_DIR/bin/unzip"
|
||||||
|
|
||||||
|
for script in install_fnm.sh install_nvm.sh install_pyenv.sh install_merlin_worker.sh; do
|
||||||
|
assert_download_failure_is_reported "$script"
|
||||||
|
done
|
||||||
|
|
||||||
|
patch_home="$TEMP_DIR/patch-home"
|
||||||
|
mkdir -p "$patch_home/.config/zshrc"
|
||||||
|
cp "$ROOT/README.md" "$patch_home/.config/zshrc/missing.zsh"
|
||||||
|
if HOME="$patch_home" PATH="$TEMP_DIR/bin:/usr/bin:/bin" /bin/bash "$ROOT/patch.sh" missing >/dev/null 2>&1; then
|
||||||
|
fail "patch.sh returned success after curl failed"
|
||||||
|
fi
|
||||||
|
cmp -s "$ROOT/README.md" "$patch_home/.config/zshrc/missing.zsh" ||
|
||||||
|
fail "patch.sh replaced an existing config after curl failed"
|
||||||
|
|
||||||
|
if HOME="$patch_home" PATH="$TEMP_DIR/bin:/usr/bin:/bin" /bin/bash "$ROOT/patch.sh" ../invalid >/dev/null 2>&1; then
|
||||||
|
fail "patch.sh accepted an unsafe config name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
main_bin="$TEMP_DIR/main-bin"
|
||||||
|
main_home="$TEMP_DIR/main-home"
|
||||||
|
mkdir -p "$main_bin" "$main_home"
|
||||||
|
for command_name in zsh git curl tar fc-cache eza zoxide autoconf; do
|
||||||
|
ln -s /usr/bin/true "$main_bin/$command_name"
|
||||||
|
done
|
||||||
|
ln -s /usr/bin/false "$main_bin/wget"
|
||||||
|
cp "$ROOT/README.md" "$main_home/.zshrc"
|
||||||
|
if HOME="$main_home" PATH="$main_bin:/usr/bin:/bin" /bin/bash "$ROOT/install.sh" --non-interactive >/dev/null 2>&1; then
|
||||||
|
fail "install.sh returned success after the zshrc download failed"
|
||||||
|
fi
|
||||||
|
cmp -s "$ROOT/README.md" "$main_home/.zshrc" ||
|
||||||
|
fail "install.sh replaced .zshrc after its download failed"
|
||||||
|
|
||||||
|
fnm_home="$TEMP_DIR/fnm-home"
|
||||||
|
mkdir -p "$fnm_home/.local/share/fnm"
|
||||||
|
ln -s /usr/bin/true "$fnm_home/.local/share/fnm/fnm"
|
||||||
|
HOME="$fnm_home" PATH=/usr/bin:/bin zsh -c 'source "$1"; command -v fnm >/dev/null' zsh "$ROOT/zshrc/fnm.zsh" ||
|
||||||
|
fail "fnm is not restored to PATH in a new Zsh session"
|
||||||
|
|
||||||
|
for script in "$ROOT"/*.sh; do
|
||||||
|
bash -n "$script"
|
||||||
|
done
|
||||||
|
|
||||||
|
for config in "$ROOT/.zshrc" "$ROOT"/zshrc/*.zsh; do
|
||||||
|
zsh -n "$config"
|
||||||
|
done
|
||||||
|
|
||||||
|
grep -q 'NVM_VERSION="v0.40.4"' "$ROOT/install_nvm.sh" || fail "nvm version is stale"
|
||||||
|
grep -q 'apt-get install -y unzip' "$ROOT/install_fnm.sh" || fail "Ubuntu unzip installation is missing"
|
||||||
|
grep -q 'tail -1 || true' "$ROOT/install_merlin_worker.sh" || fail "a missing PYTHONPATH remains fatal"
|
||||||
|
grep -Fq 'mktemp "$HOME/.zshrc.download.' "$ROOT/install.sh" || fail ".zshrc is not downloaded on its target filesystem"
|
||||||
|
grep -Fq 'mktemp "$HOME/.config/.easyzsh-' "$ROOT/patch.sh" || fail "patch downloads can be sourced while incomplete"
|
||||||
|
grep -Fq '"$ZSH_CONFIGS_DIR"/*(DN)' "$ROOT/.zshrc" || fail "existing extensionless Zsh configs are ignored"
|
||||||
|
grep -Fq 'cp -Pp "$HOME/.zshrc"' "$ROOT/install.sh" || fail ".zshrc symlinks are not preserved in backups"
|
||||||
|
grep -Fq '[ -L "$HOME/.zshrc" ]' "$ROOT/install.sh" || fail "broken .zshrc symlinks are not backed up"
|
||||||
|
[[ ! -e "$ROOT/install/fnm.sh" ]] || fail "vendored fnm installer still exists"
|
||||||
|
if grep -Eq '^[[:space:]]*export MLX_USER_TOKEN=' "$ROOT"/zshrc/*.zsh; then
|
||||||
|
fail "a static MLX user token remains"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "installer checks passed"
|
||||||
+4
-6
@@ -1,8 +1,6 @@
|
|||||||
# fnm (Fast Node Manager) configuration
|
# fnm (Fast Node Manager)
|
||||||
# https://github.com/Schniz/fnm
|
FNM_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/fnm"
|
||||||
|
[[ -d "$FNM_PATH" ]] && export PATH="$FNM_PATH:$PATH"
|
||||||
FNM_PATH="$HOME/.local/share/fnm"
|
if command -v fnm &> /dev/null; then
|
||||||
if [ -d "$FNM_PATH" ]; then
|
|
||||||
export PATH="$HOME/.local/share/fnm:$PATH"
|
|
||||||
eval "$(fnm env --use-on-cd --shell zsh)"
|
eval "$(fnm env --use-on-cd --shell zsh)"
|
||||||
fi
|
fi
|
||||||
|
|||||||
+10
-9
@@ -14,14 +14,15 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Set cur_dir before sourcing so prep_env.sh uses the correct path
|
_prep_env="/workspace/vscode/prep_env.sh"
|
||||||
export cur_dir="/workspace/vscode"
|
if [[ -r "$_prep_env" ]]; then
|
||||||
|
export cur_dir="/workspace/vscode"
|
||||||
# Patch prep_env.sh for zsh compatibility before sourcing
|
source <(sed -e 's/^shopt -s histappend$/[[ -n "${BASH_VERSION}" ]] \&\& shopt -s histappend/' \
|
||||||
source <(sed -e 's/^shopt -s histappend$/[[ -n "${BASH_VERSION}" ]] \&\& shopt -s histappend/' \
|
|
||||||
-e 's/\${!\([^}]*\)}/${(P)\1}/g' \
|
-e 's/\${!\([^}]*\)}/${(P)\1}/g' \
|
||||||
-e 's/cur_dir="\$(cd "\$(dirname "\$0")" && pwd)"/# cur_dir already set/g' \
|
-e 's/cur_dir="\$(cd "\$(dirname "\$0")" && pwd)"/# cur_dir already set/g' \
|
||||||
/workspace/mlx/../vscode/prep_env.sh)
|
"$_prep_env")
|
||||||
|
fi
|
||||||
|
unset _prep_env
|
||||||
|
|
||||||
# sh -c /opt/tiger/mlx_deploy/greeting.sh
|
# sh -c /opt/tiger/mlx_deploy/greeting.sh
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ if [ -f "/opt/tiger/rh2_bashrc" ]; then
|
|||||||
source /opt/tiger/rh2_bashrc
|
source /opt/tiger/rh2_bashrc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
. "$HOME/.cargo/env"
|
[[ -r "$HOME/.cargo/env" ]] && . "$HOME/.cargo/env"
|
||||||
|
|
||||||
# huggingface proxy
|
# huggingface proxy
|
||||||
export HF_NETWORK_PROXY=http://huggingface-proxy-sg.byted.org
|
export HF_NETWORK_PROXY=http://huggingface-proxy-sg.byted.org
|
||||||
@@ -47,10 +48,10 @@ alias hf_mirror_external='export HF_ENDPOINT=$HF_MIRROR_EXTERNAL'
|
|||||||
# http proxy
|
# http proxy
|
||||||
export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118
|
export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118
|
||||||
export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118
|
export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118
|
||||||
export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*
|
export NO_PROXY='byted.org,bytedance.net,10.*.*.*,127.*.*.*'
|
||||||
export http_proxy=http://sys-proxy-rd-relay.byted.org:8118
|
export http_proxy=http://sys-proxy-rd-relay.byted.org:8118
|
||||||
export https_proxy=http://sys-proxy-rd-relay.byted.org:8118
|
export https_proxy=http://sys-proxy-rd-relay.byted.org:8118
|
||||||
export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*
|
export no_proxy='byted.org,bytedance.net,10.*.*.*,127.*.*.*'
|
||||||
|
|
||||||
alias proxy_on='export http_proxy=http://sys-proxy-rd-relay.byted.org:8118; export https_proxy=http://sys-proxy-rd-relay.byted.org:8118; export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*; export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*'
|
alias proxy_on='export http_proxy=http://sys-proxy-rd-relay.byted.org:8118; export https_proxy=http://sys-proxy-rd-relay.byted.org:8118; export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*; export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*'
|
||||||
alias proxy_off='unset http_proxy; unset https_proxy; unset no_proxy; unset HTTP_PROXY; unset HTTPS_PROXY; unset NO_PROXY'
|
alias proxy_off='unset http_proxy; unset https_proxy; unset no_proxy; unset HTTP_PROXY; unset HTTPS_PROXY; unset NO_PROXY'
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ alias stderr='tail -f /var/log/tiger/stderr'
|
|||||||
# Essential environment variables
|
# Essential environment variables
|
||||||
export MERLIN_PROFILING_HDFS_DIR='hdfs://haruna/home/byte_merlin_profiling/'
|
export MERLIN_PROFILING_HDFS_DIR='hdfs://haruna/home/byte_merlin_profiling/'
|
||||||
export RH2_ENV_JSON=/opt/tiger/rh2/env_json
|
export RH2_ENV_JSON=/opt/tiger/rh2/env_json
|
||||||
export MLX_USER_TOKEN=bd2a3f1b71d54ab497f13f2eefc4f5bc
|
|
||||||
export RH2_TENSORBOARD_HDFS=hdfs://haruna/home/byte_aml_platform/public/rh2_prod/8b6d8490dc2904e0/tensorboard/20250527/903e5003c90ff1dc/arnold_trial/46714689
|
export RH2_TENSORBOARD_HDFS=hdfs://haruna/home/byte_aml_platform/public/rh2_prod/8b6d8490dc2904e0/tensorboard/20250527/903e5003c90ff1dc/arnold_trial/46714689
|
||||||
export SPARK_HOME=/opt/tiger/spark_deploy/spark-3.2/spark-stable
|
export SPARK_HOME=/opt/tiger/spark_deploy/spark-3.2/spark-stable
|
||||||
export PATH=/opt/common_tools:/opt/tiger/typhoon-blade:/usr/lib/x86_64-linux-gnu/openmpi/bin:/usr/local/cuda/bin:/home/tiger/system_op/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/tiger/arnold/arnold_entrypoint/tools:/opt/tiger/arnold/hdfs_client:/opt/tiger/yarn_deploy/hadoop/bin:/opt/tiger/yarn_deploy/hive/bin:/home/tiger/.local/bin:/opt/tiger/nastk/bin:/python:/opt/tiger/mlx_deploy/bin
|
export PATH=/opt/common_tools:/opt/tiger/typhoon-blade:/usr/lib/x86_64-linux-gnu/openmpi/bin:/usr/local/cuda/bin:/home/tiger/system_op/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/tiger/arnold/arnold_entrypoint/tools:/opt/tiger/arnold/hdfs_client:/opt/tiger/yarn_deploy/hadoop/bin:/opt/tiger/yarn_deploy/hive/bin:/home/tiger/.local/bin:/opt/tiger/nastk/bin:/python:/opt/tiger/mlx_deploy/bin
|
||||||
@@ -29,10 +28,10 @@ alias hf_mirror_external='export HF_ENDPOINT=$HF_MIRROR_EXTERNAL'
|
|||||||
export HF_ENDPOINT=http://huggingface-proxy-sg.byted.org
|
export HF_ENDPOINT=http://huggingface-proxy-sg.byted.org
|
||||||
export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118
|
export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118
|
||||||
export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118
|
export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118
|
||||||
export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*
|
export NO_PROXY='byted.org,bytedance.net,10.*.*.*,127.*.*.*'
|
||||||
export http_proxy=http://sys-proxy-rd-relay.byted.org:8118
|
export http_proxy=http://sys-proxy-rd-relay.byted.org:8118
|
||||||
export https_proxy=http://sys-proxy-rd-relay.byted.org:8118
|
export https_proxy=http://sys-proxy-rd-relay.byted.org:8118
|
||||||
export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*
|
export no_proxy='byted.org,bytedance.net,10.*.*.*,127.*.*.*'
|
||||||
|
|
||||||
alias proxy_on='export http_proxy=http://sys-proxy-rd-relay.byted.org:8118; export https_proxy=http://sys-proxy-rd-relay.byted.org:8118; export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*; export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*'
|
alias proxy_on='export http_proxy=http://sys-proxy-rd-relay.byted.org:8118; export https_proxy=http://sys-proxy-rd-relay.byted.org:8118; export no_proxy=byted.org,bytedance.net,10.*.*.*,127.*.*.*; export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118; export NO_PROXY=byted.org,bytedance.net,10.*.*.*,127.*.*.*'
|
||||||
alias proxy_off='unset http_proxy; unset https_proxy; unset no_proxy; unset HTTP_PROXY; unset HTTPS_PROXY; unset NO_PROXY'
|
alias proxy_off='unset http_proxy; unset https_proxy; unset no_proxy; unset HTTP_PROXY; unset HTTPS_PROXY; unset NO_PROXY'
|
||||||
|
|||||||
+7
-20
@@ -65,26 +65,6 @@ export PYSPARK_DRIVER_PYTHON="${PYSPARK_DRIVER_PYTHON:-/usr/bin/python3}"
|
|||||||
# 默认 local[2],和原 mlxrc 保持一致
|
# 默认 local[2],和原 mlxrc 保持一致
|
||||||
export PYSPARK_SUBMIT_ARGS="${PYSPARK_SUBMIT_ARGS:---master local[2] pyspark-shell}"
|
export PYSPARK_SUBMIT_ARGS="${PYSPARK_SUBMIT_ARGS:---master local[2] pyspark-shell}"
|
||||||
|
|
||||||
# MLXLAB devbox code disk 标记(如果启动脚本已经设置,就不要覆盖)
|
|
||||||
if [[ -n "${MLXLAB_DEVBOX_CODE_DISK}" ]]; then
|
|
||||||
export MLXLAB_DEVBOX_CODE_DISK=''
|
|
||||||
fi
|
|
||||||
|
|
||||||
# MLX / Merlin 相关变量(假设在容器启动时已经由 start_devbox.sh 导出)
|
|
||||||
# 这里统一再 export 一遍,保证交互 shell 也能继承
|
|
||||||
export MLX_USER_TOKEN='bd2a3f1b71d54ab497f13f2eefc4f5bc'
|
|
||||||
export MLX_USER='qingyuhao'
|
|
||||||
export MLX_IMAGE_VID='d51qjdbc77u9kebl603g'
|
|
||||||
export MLX_IMAGE_URL='hub.byted.org/reckon/data.reckon.mlx.image_10786:4aa09c59c9cbb1fcde50526696177c84'
|
|
||||||
export MLX_ENGINE_SID='bgi0zldy6943b7db'
|
|
||||||
export MLX_DEVBOX_ID='132783'
|
|
||||||
export MLX_HOST_URL='https://ml.bytedance.net/'
|
|
||||||
export MERLIN_HOST_URL='https://ml.bytedance.net'
|
|
||||||
export TCC_CDN_HOST='//lf6-config.bytetcc.com/obj/tcc-config-web'
|
|
||||||
export ZTI_ENV='cn'
|
|
||||||
export IS_SEED='true'
|
|
||||||
export MLXLAB_DEVBOX_CODE_DISK=''
|
|
||||||
|
|
||||||
# DOAS_ZONE(从 BYTE_REGION 推导)
|
# DOAS_ZONE(从 BYTE_REGION 推导)
|
||||||
if [[ "${BYTE_REGION}" == "CN" ]]; then
|
if [[ "${BYTE_REGION}" == "CN" ]]; then
|
||||||
export DOAS_ZONE="cn"
|
export DOAS_ZONE="cn"
|
||||||
@@ -154,7 +134,9 @@ if [[ "$WORKSPACE_ENVS_SET" != "1" ]]; then
|
|||||||
envfile="/etc/.container_env"
|
envfile="/etc/.container_env"
|
||||||
if [[ -f $envfile ]]; then
|
if [[ -f $envfile ]]; then
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
|
[[ "$line" == *=* ]] || continue
|
||||||
_varname="${line%%=*}"
|
_varname="${line%%=*}"
|
||||||
|
[[ "$_varname" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]] || continue
|
||||||
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
|
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
|
||||||
export "${_varname}=${line#*=}"
|
export "${_varname}=${line#*=}"
|
||||||
fi
|
fi
|
||||||
@@ -226,7 +208,9 @@ worker_envfile="/etc/worker_envs_$ARNOLD_WORKER_ID"
|
|||||||
user_worker_envfile="$HOME/.worker_envs/worker_envs_$ARNOLD_WORKER_ID"
|
user_worker_envfile="$HOME/.worker_envs/worker_envs_$ARNOLD_WORKER_ID"
|
||||||
if [[ -f $user_worker_envfile ]]; then
|
if [[ -f $user_worker_envfile ]]; then
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
|
[[ "$line" == *=* ]] || continue
|
||||||
_varname="${line%%=*}"
|
_varname="${line%%=*}"
|
||||||
|
[[ "$_varname" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]] || continue
|
||||||
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
|
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
|
||||||
export "${_varname}=${line#*=}"
|
export "${_varname}=${line#*=}"
|
||||||
fi
|
fi
|
||||||
@@ -234,7 +218,9 @@ if [[ -f $user_worker_envfile ]]; then
|
|||||||
unset _varname
|
unset _varname
|
||||||
elif [[ -f $worker_envfile ]]; then
|
elif [[ -f $worker_envfile ]]; then
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
|
[[ "$line" == *=* ]] || continue
|
||||||
_varname="${line%%=*}"
|
_varname="${line%%=*}"
|
||||||
|
[[ "$_varname" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]] || continue
|
||||||
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
|
if eval "[[ -z \"\${${_varname}+x}\" ]]"; then # env is not set
|
||||||
export "${_varname}=${line#*=}"
|
export "${_varname}=${line#*=}"
|
||||||
fi
|
fi
|
||||||
@@ -276,6 +262,7 @@ if [[ -f "$envfile" ]]; then
|
|||||||
# 跳过注释行和空行
|
# 跳过注释行和空行
|
||||||
[[ "$line" =~ ^[[:space:]]*# ]] && continue
|
[[ "$line" =~ ^[[:space:]]*# ]] && continue
|
||||||
[[ "$line" =~ ^[[:space:]]*$ ]] && continue
|
[[ "$line" =~ ^[[:space:]]*$ ]] && continue
|
||||||
|
[[ "$line" == *=* ]] || continue
|
||||||
|
|
||||||
# 提取变量名和值
|
# 提取变量名和值
|
||||||
var_name="${line%%=*}"
|
var_name="${line%%=*}"
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# Initialize pyenv (Python Version Manager)
|
# Initialize pyenv (Python Version Manager)
|
||||||
export PYENV_ROOT="$HOME/.pyenv"
|
export PYENV_ROOT="$HOME/.pyenv"
|
||||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" # Add pyenv to PATH
|
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" # Add pyenv to PATH
|
||||||
eval "$(pyenv init - zsh)" # This loads pyenv
|
command -v pyenv &> /dev/null && eval "$(pyenv init - zsh)"
|
||||||
|
|||||||
Reference in New Issue
Block a user