File size: 2,543 Bytes
1855ec1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
#!/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"
# Download and install NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash || {
echo "Failed to download NVM installer"
exit 1
}
# Add NVM to bashrc for future sessions
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
# Load NVM for current session
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
# Verify NVM is available
if ! command -v nvm &> /dev/null; then
echo "NVM command not found after sourcing. Trying alternative approach..."
# Try to source it with bash explicitly
bash -c "source $NVM_DIR/nvm.sh && nvm --version" || {
echo "Failed to verify NVM installation"
exit 1
}
fi
echo "π¦ Installing Node.js LTS..."
# Run nvm commands in a bash subshell to ensure proper environment
bash -c "source $NVM_DIR/nvm.sh && nvm install --lts" || {
echo "Failed to install Node.js"
exit 1
}
# Run nvm use in a bash subshell
bash -c "source $NVM_DIR/nvm.sh && nvm use --lts" || {
echo "Failed to use Node.js LTS"
exit 1
}
echo "π§° Installing latest npm..."
# Run npm in a bash subshell to ensure node is available
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
# Function to get git branch
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
# Color definitions
BLUE='\[\033[34m\]'
GREEN='\[\033[32m\]'
YELLOW='\[\033[33m\]'
RESET='\[\033[00m\]'
# Set prompt with current directory and git branch
export PS1="${BLUE}\W${RESET}${YELLOW}\$(parse_git_branch)${RESET}${GREEN} $ ${RESET}"
EOF
export ENABLE_BACKGROUND_TASKS=1
echo "Setup completed successfully!" |