#!/usr/bin/env bash # ────────────────────────────────────────────────────────────────────── # install.sh — Install jupyter-hub to ~/bin via symlink # # Usage: # bash install.sh Install (symlink to ~/bin/jupyter-hub) # bash install.sh --remove Remove the symlink # ────────────────────────────────────────────────────────────────────── set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TARGET="$HOME/bin/jupyter-hub" SOURCE="$SCRIPT_DIR/bin/jupyter-hub" CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/jupyter-hub" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BOLD='\033[1m' NC='\033[0m' if [[ "${1:-}" == "--remove" ]]; then if [[ -L "$TARGET" ]]; then rm "$TARGET" echo -e "${GREEN}Removed${NC} $TARGET" elif [[ -f "$TARGET" ]]; then echo -e "${YELLOW}Warning:${NC} $TARGET is not a symlink (may be a standalone copy)" echo " Remove manually: rm $TARGET" else echo "Nothing to remove — $TARGET does not exist." fi exit 0 fi # Create ~/bin if needed mkdir -p "$(dirname "$TARGET")" # Remove old standalone copy if present (from before this project existed) if [[ -f "$TARGET" && ! -L "$TARGET" ]]; then echo -e "${YELLOW}Replacing standalone ~/bin/jupyter-hub with symlink${NC}" rm "$TARGET" fi # Create symlink ln -sf "$SOURCE" "$TARGET" echo -e "${GREEN}Installed${NC} $TARGET → $SOURCE" # Create default config if not present if [[ ! -f "$CONFIG_DIR/config.sh" ]]; then mkdir -p "$CONFIG_DIR" cat > "$CONFIG_DIR/config.sh" << 'CONF' # ────────────────────────────────────────────────────────────────────── # jupyter-hub user configuration # # Override defaults here. Sourced by jupyter-hub on startup. # ────────────────────────────────────────────────────────────────────── # Port range to scan # PORT_RANGE_START=8888 # PORT_RANGE_END=8899 # Directories to scan for Jupyter projects # Uncomment and edit: # SCAN_DIRS=( # "$HOME/GitClone/ClaudeCodeProjects" # "$HOME/GitClone/CodexProjects" # "$HOME/Projects" # ) CONF echo -e "${GREEN}Created${NC} $CONFIG_DIR/config.sh" fi # Check PATH if ! echo "$PATH" | tr ':' '\n' | grep -q "$HOME/bin"; then echo "" echo -e "${YELLOW}Note:${NC} ~/bin is not in your PATH." echo " Add to your shell profile (~/.zshrc or ~/.bashrc):" echo ' export PATH="$HOME/bin:$PATH"' fi echo "" echo -e "${BOLD}Done.${NC} Run: jupyter-hub status"