Spaces:
Sleeping
Sleeping
| 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 | |
| echo "Setup completed successfully!" |