mirror of
https://github.com/khodges42/nightShift.git
synced 2026-06-14 10:08:37 +00:00
117 lines
3.1 KiB
Bash
117 lines
3.1 KiB
Bash
#!/usr/bin/env sh
|
|
set -eu
|
|
|
|
YES=0
|
|
if [ "${1:-}" = "-y" ] || [ "${1:-}" = "--yes" ]; then
|
|
YES=1
|
|
fi
|
|
|
|
ask_yes_no() {
|
|
question="$1"
|
|
default="${2:-yes}"
|
|
if [ "$YES" -eq 1 ]; then
|
|
return 0
|
|
fi
|
|
if [ "$default" = "yes" ]; then
|
|
prompt="[Y/n]"
|
|
else
|
|
prompt="[y/N]"
|
|
fi
|
|
printf "%s %s " "$question" "$prompt"
|
|
read answer
|
|
if [ -z "$answer" ]; then
|
|
[ "$default" = "yes" ]
|
|
return
|
|
fi
|
|
case "$answer" in
|
|
y|Y|yes|YES|Yes) return 0 ;;
|
|
*) return 1 ;;
|
|
esac
|
|
}
|
|
|
|
has_command() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
repo_root=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
cd "$repo_root"
|
|
|
|
echo "NightShift setup"
|
|
echo "Repo: $repo_root"
|
|
|
|
if has_command python3; then
|
|
PYTHON=python3
|
|
elif has_command python; then
|
|
PYTHON=python
|
|
else
|
|
echo "Python was not found on PATH. Install Python 3.11+ and rerun setup.sh." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Python: $($PYTHON -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
|
|
|
|
echo "Installing NightShift in editable mode..."
|
|
$PYTHON -m pip install -e .
|
|
|
|
scripts_dir=$($PYTHON -c 'import sysconfig; print(sysconfig.get_path("scripts"))')
|
|
case ":$PATH:" in
|
|
*":$scripts_dir:"*)
|
|
echo "PATH already includes Python scripts directory."
|
|
;;
|
|
*)
|
|
if ask_yes_no "Add Python scripts directory to PATH in your shell profile? $scripts_dir" "yes"; then
|
|
shell_name=$(basename "${SHELL:-sh}")
|
|
case "$shell_name" in
|
|
zsh) profile="$HOME/.zshrc" ;;
|
|
bash) profile="$HOME/.bashrc" ;;
|
|
*) profile="$HOME/.profile" ;;
|
|
esac
|
|
line="export PATH=\"$scripts_dir:\$PATH\""
|
|
if [ -f "$profile" ] && grep -F "$scripts_dir" "$profile" >/dev/null 2>&1; then
|
|
echo "Profile already mentions $scripts_dir"
|
|
else
|
|
printf "\n# NightShift CLI\n%s\n" "$line" >> "$profile"
|
|
echo "Added PATH update to $profile"
|
|
fi
|
|
export PATH="$scripts_dir:$PATH"
|
|
else
|
|
echo "Skipped PATH update. You can still run: $PYTHON -m nightshift.cli"
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if has_command nightshift; then
|
|
echo "NightShift CLI is available:"
|
|
nightshift --help | sed -n '1,5p'
|
|
else
|
|
echo "NightShift CLI is not visible in this shell yet. Open a new terminal or run: $PYTHON -m nightshift.cli --help"
|
|
fi
|
|
|
|
if has_command ollama; then
|
|
echo "Ollama is installed:"
|
|
ollama --version
|
|
else
|
|
echo "Ollama was not found."
|
|
os_name=$(uname -s 2>/dev/null || echo unknown)
|
|
if [ "$os_name" = "Darwin" ] && has_command brew; then
|
|
if ask_yes_no "Install Ollama with Homebrew now?" "yes"; then
|
|
brew install ollama
|
|
else
|
|
echo "Skipped Ollama install. Install later from https://ollama.com/download"
|
|
fi
|
|
elif [ "$os_name" = "Linux" ]; then
|
|
if ask_yes_no "Install Ollama with the official install script now?" "no"; then
|
|
curl -fsSL https://ollama.com/install.sh | sh
|
|
else
|
|
echo "Skipped Ollama install. Install later from https://ollama.com/download"
|
|
fi
|
|
else
|
|
echo "Install Ollama from https://ollama.com/download"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "Setup complete."
|
|
echo "Validate this repo with: nightshift validate"
|
|
echo "Start the dashboard with: nightshift web"
|