mirror of
https://github.com/acedanger/shell.git
synced 2025-12-06 03:20:12 -08:00
feat: Implement SKIP_OLLAMA feature for optional setup without Ollama installation and add documentation
refactor: Enhance .profile for Go path management and environment variable setup
This commit is contained in:
@@ -49,8 +49,12 @@ if [ -d "$HOME/go/bin" ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Add Go version-specific paths if they exist
|
# Add Go version-specific paths if they exist
|
||||||
|
shopt -s nullglob 2>/dev/null || setopt nullglob 2>/dev/null || true
|
||||||
for go_path in /usr/lib/go-*/bin /usr/lib/go/bin; do
|
for go_path in /usr/lib/go-*/bin /usr/lib/go/bin; do
|
||||||
if [ -d "$go_path" ] ; then
|
if [ -d "$go_path" ] ; then
|
||||||
PATH="$go_path:$PATH"
|
PATH="$go_path:$PATH"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
shopt -u nullglob 2>/dev/null || unsetopt nullglob 2>/dev/null || true
|
||||||
|
|
||||||
|
export GOROOT=/usr/local/go
|
||||||
|
|||||||
32
setup-no-ollama.sh
Executable file
32
setup-no-ollama.sh
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Convenience script to run setup without Ollama installation
|
||||||
|
# This script sets SKIP_OLLAMA=true and runs the main setup script
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[0;33m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
echo -e "${GREEN}=== Shell Setup (Without Ollama) ===${NC}"
|
||||||
|
echo -e "${YELLOW}This will install all packages and configurations except Ollama Docker setup${NC}"
|
||||||
|
echo -e "${YELLOW}Fabric will be installed but configured for external AI providers${NC}"
|
||||||
|
|
||||||
|
# Get the directory of this script
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Set SKIP_OLLAMA environment variable and run setup
|
||||||
|
export SKIP_OLLAMA=true
|
||||||
|
|
||||||
|
echo -e "\n${YELLOW}Running setup with SKIP_OLLAMA=true...${NC}"
|
||||||
|
|
||||||
|
# Run the main setup script
|
||||||
|
"$SCRIPT_DIR/setup/setup.sh" "$@"
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}=== Setup completed without Ollama ===${NC}"
|
||||||
|
echo -e "${YELLOW}To configure Fabric with your preferred AI provider:${NC}"
|
||||||
|
echo -e "${YELLOW}1. Edit ~/.config/fabric/.env${NC}"
|
||||||
|
echo -e "${YELLOW}2. Add your API keys (OpenAI, Anthropic, Google, etc.)${NC}"
|
||||||
|
echo -e "${YELLOW}3. Set DEFAULT_MODEL to your preferred model${NC}"
|
||||||
|
echo -e "${YELLOW}4. Test with: fabric --list-patterns${NC}"
|
||||||
@@ -246,17 +246,21 @@ echo -e "${GREEN}Package installation completed for $OS_NAME $OS_VERSION.${NC}"
|
|||||||
# Install Go if not present (required for Fabric and other Go tools)
|
# Install Go if not present (required for Fabric and other Go tools)
|
||||||
echo -e "${YELLOW}Checking Go installation...${NC}"
|
echo -e "${YELLOW}Checking Go installation...${NC}"
|
||||||
if ! command -v go &> /dev/null; then
|
if ! command -v go &> /dev/null; then
|
||||||
echo -e "${YELLOW}Installing Go programming language via package manager...${NC}"
|
echo -e "${YELLOW}Installing Go programming language...${NC}"
|
||||||
|
GO_VERSION="1.21.5" # Stable version that works well with Fabric
|
||||||
|
|
||||||
# Install Go via package manager (preferred approach)
|
# Download and install Go
|
||||||
if command -v nala &> /dev/null; then
|
wget -q "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -O /tmp/go.tar.gz
|
||||||
sudo nala install -y golang-go
|
|
||||||
else
|
|
||||||
sudo apt update && sudo apt install -y golang-go
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "${GREEN}Go installed successfully via package manager!${NC}"
|
# Remove any existing Go installation
|
||||||
echo -e "${YELLOW}GOROOT will be auto-detected, GOPATH configured in shell${NC}"
|
sudo rm -rf /usr/local/go
|
||||||
|
|
||||||
|
# Extract Go to /usr/local
|
||||||
|
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
|
||||||
|
rm /tmp/go.tar.gz
|
||||||
|
|
||||||
|
echo -e "${GREEN}Go ${GO_VERSION} installed successfully!${NC}"
|
||||||
|
echo -e "${YELLOW}Go PATH will be configured in shell configuration${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${GREEN}Go is already installed: $(go version)${NC}"
|
echo -e "${GREEN}Go is already installed: $(go version)${NC}"
|
||||||
fi
|
fi
|
||||||
@@ -369,7 +373,8 @@ done
|
|||||||
if [ "${SKIP_OLLAMA:-false}" = "true" ]; then
|
if [ "${SKIP_OLLAMA:-false}" = "true" ]; then
|
||||||
echo -e "${YELLOW}Skipping Ollama installation (SKIP_OLLAMA=true)${NC}"
|
echo -e "${YELLOW}Skipping Ollama installation (SKIP_OLLAMA=true)${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${YELLOW}Setting up Ollama with Docker for local AI support...${NC}"
|
# Setup Ollama with Docker for local AI (required for Fabric)
|
||||||
|
echo -e "${YELLOW}Setting up Ollama with Docker for local AI support...${NC}"
|
||||||
|
|
||||||
# Check if user can run docker commands without sudo
|
# Check if user can run docker commands without sudo
|
||||||
if docker ps >/dev/null 2>&1; then
|
if docker ps >/dev/null 2>&1; then
|
||||||
@@ -514,6 +519,7 @@ FABRIC_CONFIG_EOF
|
|||||||
if docker ps | grep -q ollama; then
|
if docker ps | grep -q ollama; then
|
||||||
configure_fabric_for_ollama
|
configure_fabric_for_ollama
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi # End SKIP_OLLAMA check
|
fi # End SKIP_OLLAMA check
|
||||||
|
|
||||||
# Install Zsh if not already installed
|
# Install Zsh if not already installed
|
||||||
|
|||||||
148
skip_ollama.patch
Normal file
148
skip_ollama.patch
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
# SKIP_OLLAMA Feature Documentation
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
The SKIP_OLLAMA feature allows users to run the shell setup script without installing Ollama Docker containers and related AI infrastructure. This is useful for environments where:
|
||||||
|
|
||||||
|
- Docker is not available or desired
|
||||||
|
- Local AI models are not needed
|
||||||
|
- Users prefer external AI providers (OpenAI, Anthropic, Google, etc.)
|
||||||
|
- Resource constraints make running local AI models impractical
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Method 1: Environment Variable
|
||||||
|
```bash
|
||||||
|
export SKIP_OLLAMA=true
|
||||||
|
./setup/setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Method 2: Inline Variable
|
||||||
|
```bash
|
||||||
|
SKIP_OLLAMA=true ./setup/setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Method 3: Convenience Script
|
||||||
|
```bash
|
||||||
|
./setup-no-ollama.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## What Gets Skipped
|
||||||
|
|
||||||
|
When SKIP_OLLAMA=true, the following components are NOT installed:
|
||||||
|
|
||||||
|
1. **Ollama Docker Container**: No Docker container setup for local AI models
|
||||||
|
2. **Ollama Docker Aliases**: No shell aliases for Ollama container management
|
||||||
|
3. **Local AI Models**: No phi3:mini or other local models downloaded
|
||||||
|
4. **Ollama-specific Fabric Configuration**: Fabric is configured for external providers
|
||||||
|
|
||||||
|
## What Still Gets Installed
|
||||||
|
|
||||||
|
The following components are still installed normally:
|
||||||
|
|
||||||
|
1. **Fabric CLI Tool**: AI pattern processing tool for text manipulation
|
||||||
|
2. **All Other Packages**: Everything from setup/packages.list except Ollama
|
||||||
|
3. **Shell Configuration**: Zsh, Oh My Zsh, plugins, and dotfiles
|
||||||
|
4. **Development Tools**: Node.js, VS Code, Git, and other development utilities
|
||||||
|
|
||||||
|
## Fabric Configuration
|
||||||
|
|
||||||
|
When SKIP_OLLAMA=true, Fabric is installed but configured differently:
|
||||||
|
|
||||||
|
### Standard Configuration (with Ollama):
|
||||||
|
```env
|
||||||
|
# Fabric Configuration for Ollama
|
||||||
|
DEFAULT_MODEL=phi3:mini
|
||||||
|
OLLAMA_API_BASE=http://localhost:11434
|
||||||
|
```
|
||||||
|
|
||||||
|
### Skip Ollama Configuration:
|
||||||
|
```env
|
||||||
|
# Fabric Configuration - Ollama installation skipped
|
||||||
|
# Configure your preferred AI provider (OpenAI, Anthropic, Google, etc.)
|
||||||
|
# DEFAULT_MODEL=your_model_here
|
||||||
|
# OPENAI_API_KEY=your_key_here
|
||||||
|
# For more configuration options, see: fabric --help
|
||||||
|
```
|
||||||
|
|
||||||
|
## Post-Installation Configuration
|
||||||
|
|
||||||
|
After running setup with SKIP_OLLAMA=true, configure your preferred AI provider:
|
||||||
|
|
||||||
|
1. **Edit the Fabric configuration**:
|
||||||
|
```bash
|
||||||
|
nano ~/.config/fabric/.env
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Add your preferred provider**:
|
||||||
|
```env
|
||||||
|
# Example for OpenAI
|
||||||
|
OPENAI_API_KEY=your_api_key_here
|
||||||
|
DEFAULT_MODEL=gpt-4
|
||||||
|
|
||||||
|
# Example for Anthropic
|
||||||
|
ANTHROPIC_API_KEY=your_api_key_here
|
||||||
|
DEFAULT_MODEL=claude-3-sonnet-20240229
|
||||||
|
|
||||||
|
# Example for Google
|
||||||
|
GOOGLE_API_KEY=your_api_key_here
|
||||||
|
DEFAULT_MODEL=gemini-pro
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Test the configuration**:
|
||||||
|
```bash
|
||||||
|
fabric --list-patterns
|
||||||
|
echo "Test text" | fabric -p summarize
|
||||||
|
```
|
||||||
|
|
||||||
|
## Implementation Details
|
||||||
|
|
||||||
|
The SKIP_OLLAMA feature is implemented through conditional blocks in setup.sh:
|
||||||
|
|
||||||
|
- Lines 369-510: Main Ollama Docker setup wrapped in conditional
|
||||||
|
- Lines 276-340: Fabric configuration adapts based on SKIP_OLLAMA
|
||||||
|
- Lines 740+: Testing and summary sections adjust output accordingly
|
||||||
|
|
||||||
|
## Benefits
|
||||||
|
|
||||||
|
- **Faster Installation**: Skips Docker image downloads and container setup
|
||||||
|
- **Lower Resource Usage**: No background AI containers consuming memory/CPU
|
||||||
|
- **Flexibility**: Users can choose their preferred AI providers
|
||||||
|
- **Compatibility**: Works in environments without Docker access
|
||||||
|
|
||||||
|
## Migration
|
||||||
|
|
||||||
|
Users can always add Ollama later by:
|
||||||
|
|
||||||
|
1. Running the full setup script without SKIP_OLLAMA
|
||||||
|
2. Manually setting up Ollama Docker containers
|
||||||
|
3. Updating Fabric configuration to use local models
|
||||||
|
|
||||||
|
Date: May 30, 2025
|
||||||
|
Version: Compatible with shell repository setup.sh v2.x
|
||||||
|
|
||||||
|
## Implementation Status
|
||||||
|
|
||||||
|
✅ **COMPLETED** - The SKIP_OLLAMA feature is fully implemented and functional.
|
||||||
|
|
||||||
|
### What's Implemented:
|
||||||
|
|
||||||
|
1. **Core Logic**: Conditional wrapper around Ollama Docker installation (lines 373-523)
|
||||||
|
2. **Fabric Configuration**: Conditional setup for external AI providers vs. Ollama
|
||||||
|
3. **Testing Section**: Conditional testing based on SKIP_OLLAMA setting (lines 752-796)
|
||||||
|
4. **Post-Installation Instructions**: Different guidance for external AI provider mode
|
||||||
|
5. **Convenience Script**: `setup-no-ollama.sh` for easy access
|
||||||
|
6. **Documentation**: This comprehensive guide
|
||||||
|
|
||||||
|
### Files Modified:
|
||||||
|
|
||||||
|
- `setup/setup.sh`: Main implementation with conditional logic
|
||||||
|
- `setup-no-ollama.sh`: Convenience script (NEW)
|
||||||
|
- `skip_ollama.patch`: Documentation (NEW)
|
||||||
|
|
||||||
|
### Testing Status:
|
||||||
|
|
||||||
|
- ✅ Syntax validation passed
|
||||||
|
- ✅ Conditional logic implemented
|
||||||
|
- ⏳ End-to-end testing recommended
|
||||||
|
|
||||||
|
The implementation is complete and ready for use.
|
||||||
0
test-newline-output.sh
Normal file
0
test-newline-output.sh
Normal file
Reference in New Issue
Block a user