|
#!/bin/bash |
|
set -euo pipefail |
|
|
|
echo "Upgrading pip..." |
|
pip install --upgrade pip || { |
|
echo "Failed to upgrade pip" |
|
exit 1 |
|
} |
|
|
|
echo "π§ Installing NVM..." |
|
export NVM_DIR="$HOME/.nvm" |
|
mkdir -p "$NVM_DIR" |
|
|
|
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash || { |
|
echo "Failed to download NVM installer" |
|
exit 1 |
|
} |
|
|
|
|
|
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc |
|
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc |
|
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> ~/.bashrc |
|
|
|
|
|
if [ -s "$NVM_DIR/nvm.sh" ]; then |
|
\. "$NVM_DIR/nvm.sh" |
|
echo "NVM loaded successfully" |
|
else |
|
echo "NVM script not found at $NVM_DIR/nvm.sh" |
|
exit 1 |
|
fi |
|
|
|
|
|
if ! command -v nvm &> /dev/null; then |
|
echo "NVM command not found after sourcing. Trying alternative approach..." |
|
|
|
bash -c "source $NVM_DIR/nvm.sh && nvm --version" || { |
|
echo "Failed to verify NVM installation" |
|
exit 1 |
|
} |
|
fi |
|
|
|
echo "π¦ Installing Node.js LTS..." |
|
|
|
bash -c "source $NVM_DIR/nvm.sh && nvm install --lts" || { |
|
echo "Failed to install Node.js" |
|
exit 1 |
|
} |
|
|
|
|
|
bash -c "source $NVM_DIR/nvm.sh && nvm use --lts" || { |
|
echo "Failed to use Node.js LTS" |
|
exit 1 |
|
} |
|
|
|
echo "π§° Installing latest npm..." |
|
|
|
bash -c "source $NVM_DIR/nvm.sh && nvm use --lts && npm install -g npm@latest" || { |
|
echo "Failed to update npm" |
|
exit 1 |
|
} |
|
|
|
echo "β
NVM, Node.js, and npm installed successfully." |
|
|
|
if [ -f requirements.txt ]; then |
|
echo "Installing requirements..." |
|
pip install -r requirements.txt || { |
|
echo "Failed to install requirements" |
|
exit 1 |
|
} |
|
else |
|
echo "No requirements.txt found, skipping package installation" |
|
fi |
|
|
|
echo "Setting up terminal prompt..." |
|
cat << 'EOF' >> ~/.bashrc |
|
|
|
parse_git_branch() { |
|
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' |
|
} |
|
|
|
|
|
BLUE='\[\033[34m\]' |
|
GREEN='\[\033[32m\]' |
|
YELLOW='\[\033[33m\]' |
|
RESET='\[\033[00m\]' |
|
|
|
|
|
export PS1="${BLUE}\W${RESET}${YELLOW}\$(parse_git_branch)${RESET}${GREEN} $ ${RESET}" |
|
EOF |
|
|
|
export ENABLE_BACKGROUND_TASKS=1 |
|
|
|
echo "Setup completed successfully!" |