feat: consolidate GitHub workflows and improve install script

- Remove redundant workflows (build.yml, snapshots.yml, cli-verify.yml)
- Integrate all functionality into comprehensive ci.yml workflow
- Add job dependencies to optimize CI execution and avoid duplicate work
- Update all workflows to use node-version-file with .nvmrc
- Enhance install script with better tool availability checking
- Add install_tool_config function to skip missing tools with clear notifications

This reduces workflow files by 50% (6→3) while maintaining all functionality
and improving CI efficiency through better job orchestration.
This commit is contained in:
2025-09-06 01:16:39 +03:00
parent e67a6b775a
commit 68e300ead6
5 changed files with 295 additions and 395 deletions

View File

@@ -1,40 +0,0 @@
name: Build
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup Node.js
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: ".nvmrc"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Lint code
run: npm run lint
- name: Generate themes
run: npm run generate
- name: Validate output
run: npm run validate
- name: Check for uncommitted changes
run: |
if ! git diff --quiet; then
echo "Generated files have uncommitted changes!"
git diff
exit 1
fi

View File

@@ -28,6 +28,7 @@ jobs:
generate: generate:
name: Generate Themes name: Generate Themes
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: lint
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -57,8 +58,9 @@ jobs:
echo "✅ All generated files are up to date" echo "✅ All generated files are up to date"
test: test:
name: Test Web Components name: Test Web Components & Snapshots
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: generate
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -74,9 +76,15 @@ jobs:
- name: Install Playwright browsers - name: Install Playwright browsers
run: npx playwright install --with-deps run: npx playwright install --with-deps
- name: Run Playwright tests - name: Generate themes
run: npm run generate
- name: Run Playwright e2e tests
run: npm run test:e2e run: npm run test:e2e
- name: Generate snapshots
run: npm run snapshots
- name: Upload Playwright report - name: Upload Playwright report
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: always() if: always()
@@ -88,6 +96,7 @@ jobs:
verify-installation: verify-installation:
name: Verify Installation Scripts name: Verify Installation Scripts
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
needs: generate
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest, macos-latest] os: [ubuntu-latest, macos-latest]
@@ -142,6 +151,7 @@ jobs:
build-stats: build-stats:
name: Build Statistics name: Build Statistics
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: generate
if: github.event_name == 'push' && github.ref == 'refs/heads/main' if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

View File

@@ -1,37 +0,0 @@
name: CLI Verify
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
cli-verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup Node.js
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: ".nvmrc"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Generate themes
run: npm run generate
- name: Run installer
run: |
export HOME=$(mktemp -d)
./cli/install.sh
- name: Run verifier
run: |
export HOME=$(mktemp -d)
./cli/install.sh
ENGINE=docker ./verify/verify.sh

View File

@@ -1,40 +0,0 @@
name: Snapshots
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
snapshots:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup Node.js
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: ".nvmrc"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Install Playwright browsers
run: npx playwright install --with-deps
- name: Generate themes
run: npm run generate
- name: Run Playwright tests
run: npm run snapshots
- name: Upload snapshots
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: failure()
with:
name: playwright-report
path: playwright-report/
retention-days: 30

View File

@@ -29,7 +29,7 @@ log_header() { echo -e "${PURPLE}🎨 $1${NC}"; }
# Usage information # Usage information
usage() { usage() {
cat <<EOF cat <<EOF
Everforest Resources Installer Everforest Resources Installer
Usage: $0 [OPTIONS] [CATEGORY] Usage: $0 [OPTIONS] [CATEGORY]
@@ -70,328 +70,335 @@ FORCE=false
CREATE_BACKUP=false CREATE_BACKUP=false
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
-h | --help) -h | --help)
usage usage
exit 0 exit 0
;; ;;
-v | --variant) -v | --variant)
VARIANT="$2" VARIANT="$2"
shift 2 shift 2
;; ;;
-b | --backup) -b | --backup)
CREATE_BACKUP=true CREATE_BACKUP=true
shift shift
;; ;;
-n | --dry-run) -n | --dry-run)
DRY_RUN=true DRY_RUN=true
shift shift
;; ;;
-f | --force) -f | --force)
FORCE=true FORCE=true
shift shift
;; ;;
--list-variants) --list-variants)
echo "Available variants:" echo "Available variants:"
echo " dark-hard, dark-medium, dark-soft" echo " dark-hard, dark-medium, dark-soft"
echo " light-hard, light-medium, light-soft" echo " light-hard, light-medium, light-soft"
exit 0 exit 0
;; ;;
all | terminals | editors | cli | web) all | terminals | editors | cli | web)
CATEGORY="$1" CATEGORY="$1"
shift shift
;; ;;
*) *)
log_error "Unknown option: $1" log_error "Unknown option: $1"
usage usage
exit 1 exit 1
;; ;;
esac esac
done done
# Tool detection functions # Tool detection functions
check_tool() { check_tool() {
command -v "$1" >/dev/null 2>&1 command -v "$1" >/dev/null 2>&1
} }
check_directory() { check_directory() {
[[ -d "$1" ]] [[ -d "$1" ]]
} }
check_config_dir() { check_config_dir() {
local dir="$1" local dir="$1"
[[ -d "$CONFIG_DIR/$dir" ]] || [[ -d "$HOME/.$dir" ]] || [[ -d "$HOME/Library/Application Support/$dir" ]] [[ -d "$CONFIG_DIR/$dir" ]] || [[ -d "$HOME/.$dir" ]] || [[ -d "$HOME/Library/Application Support/$dir" ]]
}
# Check if tool is available (installed or has config directory)
check_tool_available() {
local tool="$1"
local config_dir="$2"
if check_tool "$tool"; then
return 0
elif check_config_dir "$config_dir"; then
return 0
else
return 1
fi
}
# Install with tool availability check
install_tool_config() {
local tool_name="$1"
local config_name="$2"
local src="$3"
local dest="$4"
local display_name="$5"
if check_tool_available "$tool_name" "$config_name"; then
install_file "$src" "$dest" "$display_name"
else
log_info "Skipping $display_name (tool not installed and no config directory found)"
fi
} }
# Validate variant # Validate variant
validate_variant() { validate_variant() {
local valid_variants=("dark-hard" "dark-medium" "dark-soft" "light-hard" "light-medium" "light-soft") local valid_variants=("dark-hard" "dark-medium" "dark-soft" "light-hard" "light-medium" "light-soft")
for valid in "${valid_variants[@]}"; do for valid in "${valid_variants[@]}"; do
[[ "$VARIANT" == "$valid" ]] && return 0 [[ "$VARIANT" == "$valid" ]] && return 0
done done
log_error "Invalid variant: $VARIANT" log_error "Invalid variant: $VARIANT"
echo "Valid variants: ${valid_variants[*]}" echo "Valid variants: ${valid_variants[*]}"
exit 1 exit 1
} }
# Create backup # Create backup
create_backup() { create_backup() {
[[ "$CREATE_BACKUP" == "false" ]] && return [[ "$CREATE_BACKUP" == "false" ]] && return
log_info "Creating backup at $BACKUP_DIR" log_info "Creating backup at $BACKUP_DIR"
mkdir -p "$BACKUP_DIR" mkdir -p "$BACKUP_DIR"
# Backup common config directories # Backup common config directories
for dir in alacritty kitty wezterm starship tmux htop fish nvim vscode; do for dir in alacritty kitty wezterm starship tmux htop fish nvim vscode; do
if [[ -d "$CONFIG_DIR/$dir" ]]; then if [[ -d "$CONFIG_DIR/$dir" ]]; then
cp -r "$CONFIG_DIR/$dir" "$BACKUP_DIR/" 2>/dev/null || true cp -r "$CONFIG_DIR/$dir" "$BACKUP_DIR/" 2>/dev/null || true
fi fi
done done
log_success "Backup created at $BACKUP_DIR" log_success "Backup created at $BACKUP_DIR"
} }
# Install file with safety checks # Install file with safety checks
install_file() { install_file() {
local src="$1" local src="$1"
local dest="$2" local dest="$2"
local name="$3" local name="$3"
if [[ ! -f "$src" ]]; then if [[ ! -f "$src" ]]; then
log_warning "$name source file not found: $src" log_warning "$name source file not found: $src"
return 1 return 1
fi fi
if [[ -f "$dest" && "$FORCE" == "false" ]]; then if [[ -f "$dest" && "$FORCE" == "false" ]]; then
log_warning "$name already exists: $dest (use --force to overwrite)" log_warning "$name already exists: $dest (use --force to overwrite)"
return 1 return 1
fi fi
if [[ "$DRY_RUN" == "true" ]]; then if [[ "$DRY_RUN" == "true" ]]; then
log_info "[DRY RUN] Would install $name: $src -> $dest" log_info "[DRY RUN] Would install $name: $src -> $dest"
return 0 return 0
fi fi
mkdir -p "$(dirname "$dest")" mkdir -p "$(dirname "$dest")"
cp "$src" "$dest" cp "$src" "$dest"
log_success "Installed $name" log_success "Installed $name"
} }
# Install terminal themes # Install terminal themes
install_terminals() { install_terminals() {
log_header "Installing Terminal Themes ($VARIANT)" log_header "Installing Terminal Themes ($VARIANT)"
# Alacritty # Alacritty
if check_tool "alacritty" || check_config_dir "alacritty"; then install_tool_config "alacritty" "alacritty" \
install_file \ "$SCRIPT_DIR/terminals/alacritty/everforest-$VARIANT.yml" \
"$SCRIPT_DIR/terminals/alacritty/everforest-$VARIANT.yml" \ "$CONFIG_DIR/alacritty/themes/everforest-$VARIANT.yml" \
"$CONFIG_DIR/alacritty/themes/everforest-$VARIANT.yml" \ "Alacritty theme"
"Alacritty theme"
# Kitty
install_tool_config "kitty" "kitty" \
"$SCRIPT_DIR/terminals/kitty/everforest-$VARIANT.conf" \
"$CONFIG_DIR/kitty/themes/everforest-$VARIANT.conf" \
"Kitty theme"
# WezTerm
install_tool_config "wezterm" "wezterm" \
"$SCRIPT_DIR/terminals/wezterm/everforest-$VARIANT.lua" \
"$CONFIG_DIR/wezterm/colors/everforest-$VARIANT.lua" \
"WezTerm theme"
# Windows Terminal (if on Windows or WSL)
if [[ -n "${WSL_DISTRO_NAME:-}" ]] || command -v wsl.exe >/dev/null 2>&1; then
local wt_dest="$HOME/AppData/Local/Packages/Microsoft.WindowsTerminal_8wekyb3d8bbwe/LocalState"
if [[ -d "$wt_dest" ]]; then
install_file \
"$SCRIPT_DIR/terminals/windows-terminal/everforest-$VARIANT.json" \
"$wt_dest/everforest-$VARIANT.json" \
"Windows Terminal theme"
else else
log_info "Skipping Alacritty (not installed)" log_info "Skipping Windows Terminal (config directory not found)"
fi fi
fi
# Kitty # Ghostty
if check_tool "kitty" || check_config_dir "kitty"; then install_tool_config "ghostty" "ghostty" \
install_file \ "$SCRIPT_DIR/terminals/ghostty/everforest-$VARIANT.conf" \
"$SCRIPT_DIR/terminals/kitty/everforest-$VARIANT.conf" \ "$CONFIG_DIR/ghostty/themes/everforest-$VARIANT.conf" \
"$CONFIG_DIR/kitty/themes/everforest-$VARIANT.conf" \ "Ghostty theme"
"Kitty theme"
else
log_info "Skipping Kitty (not installed)"
fi
# WezTerm
if check_tool "wezterm" || check_config_dir "wezterm"; then
install_file \
"$SCRIPT_DIR/terminals/wezterm/everforest-$VARIANT.lua" \
"$CONFIG_DIR/wezterm/colors/everforest-$VARIANT.lua" \
"WezTerm theme"
else
log_info "Skipping WezTerm (not installed)"
fi
# Windows Terminal (if on Windows or WSL)
if [[ -n "${WSL_DISTRO_NAME:-}" ]] || command -v wsl.exe >/dev/null 2>&1; then
local wt_dest="$HOME/AppData/Local/Packages/Microsoft.WindowsTerminal_8wekyb3d8bbwe/LocalState"
if [[ -d "$wt_dest" ]]; then
install_file \
"$SCRIPT_DIR/terminals/windows-terminal/everforest-$VARIANT.json" \
"$wt_dest/everforest-$VARIANT.json" \
"Windows Terminal theme"
fi
fi
# Ghostty
if check_tool "ghostty" || check_config_dir "ghostty"; then
install_file \
"$SCRIPT_DIR/terminals/ghostty/everforest-$VARIANT.conf" \
"$CONFIG_DIR/ghostty/themes/everforest-$VARIANT.conf" \
"Ghostty theme"
else
log_info "Skipping Ghostty (not installed)"
fi
} }
# Install editor themes # Install editor themes
install_editors() { install_editors() {
log_header "Installing Editor Themes ($VARIANT)" log_header "Installing Editor Themes ($VARIANT)"
# Neovim # Neovim
install_file \
"$SCRIPT_DIR/editors/vim-nvim/everforest-$VARIANT.lua" \
"$CONFIG_DIR/nvim/colors/everforest-$VARIANT.lua" \
"Neovim theme"
# VS Code
local vscode_dir="$HOME/.vscode/extensions"
[[ -d "$HOME/.vscode-insiders/extensions" ]] && vscode_dir="$HOME/.vscode-insiders/extensions"
if [[ -d "$vscode_dir" ]]; then
mkdir -p "$vscode_dir/everforest-themes/themes"
install_file \ install_file \
"$SCRIPT_DIR/editors/vim-nvim/everforest-$VARIANT.lua" \ "$SCRIPT_DIR/editors/vscode/everforest-theme-$VARIANT.json" \
"$CONFIG_DIR/nvim/colors/everforest-$VARIANT.lua" \ "$vscode_dir/everforest-themes/themes/everforest-$VARIANT.json" \
"Neovim theme" "VS Code theme"
fi
# VS Code # JetBrains
local vscode_dir="$HOME/.vscode/extensions" local jetbrains_config=""
[[ -d "$HOME/.vscode-insiders/extensions" ]] && vscode_dir="$HOME/.vscode-insiders/extensions" for ide in IntelliJIdea PyCharm WebStorm PhpStorm GoLand RustRover; do
local config_path="$HOME/Library/Application Support/JetBrains/$ide*/colors"
if [[ -d "$vscode_dir" ]]; then if [[ -d $config_path ]]; then
mkdir -p "$vscode_dir/everforest-themes/themes" install_file \
install_file \ "$SCRIPT_DIR/editors/jetbrains/everforest-$VARIANT.xml" \
"$SCRIPT_DIR/editors/vscode/everforest-theme-$VARIANT.json" \ "$config_path/everforest-$VARIANT.icls" \
"$vscode_dir/everforest-themes/themes/everforest-$VARIANT.json" \ "JetBrains theme"
"VS Code theme" break
fi fi
done
# JetBrains # Zed
local jetbrains_config="" install_file \
for ide in IntelliJIdea PyCharm WebStorm PhpStorm GoLand RustRover; do "$SCRIPT_DIR/editors/zed/everforest-$VARIANT.json" \
local config_path="$HOME/Library/Application Support/JetBrains/$ide*/colors" "$CONFIG_DIR/zed/themes/everforest-$VARIANT.json" \
if [[ -d $config_path ]]; then "Zed theme"
install_file \
"$SCRIPT_DIR/editors/jetbrains/everforest-$VARIANT.xml" \
"$config_path/everforest-$VARIANT.icls" \
"JetBrains theme"
break
fi
done
# Zed # Sublime Text
local sublime_packages="$HOME/Library/Application Support/Sublime Text/Packages/User"
[[ ! -d "$sublime_packages" ]] && sublime_packages="$HOME/.config/sublime-text/Packages/User"
if [[ -d "$sublime_packages" ]]; then
install_file \ install_file \
"$SCRIPT_DIR/editors/zed/everforest-$VARIANT.json" \ "$SCRIPT_DIR/editors/sublime/everforest-$VARIANT.tmTheme" \
"$CONFIG_DIR/zed/themes/everforest-$VARIANT.json" \ "$sublime_packages/everforest-$VARIANT.tmTheme" \
"Zed theme" "Sublime Text theme"
fi
# Sublime Text
local sublime_packages="$HOME/Library/Application Support/Sublime Text/Packages/User"
[[ ! -d "$sublime_packages" ]] && sublime_packages="$HOME/.config/sublime-text/Packages/User"
if [[ -d "$sublime_packages" ]]; then
install_file \
"$SCRIPT_DIR/editors/sublime/everforest-$VARIANT.tmTheme" \
"$sublime_packages/everforest-$VARIANT.tmTheme" \
"Sublime Text theme"
fi
} }
# Install CLI tools # Install CLI tools
install_cli() { install_cli() {
log_header "Installing CLI Tools ($VARIANT)" log_header "Installing CLI Tools ($VARIANT)"
# Core shell tools # Core shell tools
if check_tool "starship"; then install_tool_config "starship" "starship" \
install_file \ "$SCRIPT_DIR/cli/starship/starship-$VARIANT.toml" \
"$SCRIPT_DIR/cli/starship/starship-$VARIANT.toml" \ "$CONFIG_DIR/starship/themes/everforest-$VARIANT.toml" \
"$CONFIG_DIR/starship/themes/everforest-$VARIANT.toml" \ "Starship theme"
"Starship theme"
else
log_info "Skipping Starship prompt (not installed)"
fi
install_file \ install_tool_config "fish" "fish" \
"$SCRIPT_DIR/cli/fish/everforest-$VARIANT.fish" \ "$SCRIPT_DIR/cli/fish/everforest-$VARIANT.fish" \
"$CONFIG_DIR/fish/conf.d/everforest-$VARIANT.fish" \ "$CONFIG_DIR/fish/conf.d/everforest-$VARIANT.fish" \
"Fish colors" "Fish colors"
# File and directory tools # File and directory tools
install_file \ install_file \
"$SCRIPT_DIR/cli/ls_colors/everforest-$VARIANT.sh" \ "$SCRIPT_DIR/cli/ls_colors/everforest-$VARIANT.sh" \
"$CONFIG_DIR/dircolors/everforest.sh" \ "$CONFIG_DIR/dircolors/everforest.sh" \
"LS_COLORS" "LS_COLORS"
install_file \ install_tool_config "eza" "eza" \
"$SCRIPT_DIR/cli/eza/everforest-$VARIANT.sh" \ "$SCRIPT_DIR/cli/eza/everforest-$VARIANT.sh" \
"$CONFIG_DIR/eza/theme.sh" \ "$CONFIG_DIR/eza/theme.sh" \
"eza colors" "eza colors"
# Git tools # Git tools
install_file \ install_file \
"$SCRIPT_DIR/cli/delta/gitconfig-$VARIANT.delta" \ "$SCRIPT_DIR/cli/delta/gitconfig-$VARIANT.delta" \
"$CONFIG_DIR/git/everforest-delta" \ "$CONFIG_DIR/git/everforest-delta" \
"Git delta" "Git delta"
install_file \ install_tool_config "lazygit" "lazygit" \
"$SCRIPT_DIR/cli/lazygit/config-$VARIANT.yml" \ "$SCRIPT_DIR/cli/lazygit/config-$VARIANT.yml" \
"$CONFIG_DIR/lazygit/themes/everforest-$VARIANT.yml" \ "$CONFIG_DIR/lazygit/themes/everforest-$VARIANT.yml" \
"LazyGit theme" "LazyGit theme"
install_file \ install_tool_config "gitui" "gitui" \
"$SCRIPT_DIR/cli/gitui/theme-$VARIANT.ron" \ "$SCRIPT_DIR/cli/gitui/theme-$VARIANT.ron" \
"$CONFIG_DIR/gitui/themes/everforest-$VARIANT.ron" \ "$CONFIG_DIR/gitui/themes/everforest-$VARIANT.ron" \
"GitUI theme" "GitUI theme"
# System monitoring # System monitoring
install_file \ install_tool_config "htop" "htop" \
"$SCRIPT_DIR/cli/htop/htoprc-$VARIANT" \ "$SCRIPT_DIR/cli/htop/htoprc-$VARIANT" \
"$CONFIG_DIR/htop/themes/everforest-$VARIANT" \ "$CONFIG_DIR/htop/themes/everforest-$VARIANT" \
"htop theme" "htop theme"
install_file \ install_tool_config "btop" "btop" \
"$SCRIPT_DIR/cli/btop/everforest-$VARIANT.theme" \ "$SCRIPT_DIR/cli/btop/everforest-$VARIANT.theme" \
"$CONFIG_DIR/btop/themes/everforest.theme" \ "$CONFIG_DIR/btop/themes/everforest.theme" \
"btop theme" "btop theme"
install_file \ install_tool_config "bottom" "bottom" \
"$SCRIPT_DIR/cli/bottom/bottom-$VARIANT.toml" \ "$SCRIPT_DIR/cli/bottom/bottom-$VARIANT.toml" \
"$CONFIG_DIR/bottom/themes/everforest-$VARIANT.toml" \ "$CONFIG_DIR/bottom/themes/everforest-$VARIANT.toml" \
"bottom theme" "bottom theme"
# Other tools # Other tools
if check_tool "fzf"; then install_tool_config "fzf" "fzf" \
install_file \ "$SCRIPT_DIR/cli/fzf/everforest-$VARIANT.sh" \
"$SCRIPT_DIR/cli/fzf/everforest-$VARIANT.sh" \ "$CONFIG_DIR/fzf/everforest.sh" \
"$CONFIG_DIR/fzf/everforest.sh" \ "FZF colors"
"FZF colors"
else
log_info "Skipping FZF colors (not installed)"
fi
install_file \ install_tool_config "tmux" "tmux" \
"$SCRIPT_DIR/cli/tmux/everforest.tmux-$VARIANT.conf" \ "$SCRIPT_DIR/cli/tmux/everforest.tmux-$VARIANT.conf" \
"$CONFIG_DIR/tmux/themes/everforest.conf" \ "$CONFIG_DIR/tmux/themes/everforest.conf" \
"tmux theme" "tmux theme"
} }
# Install web resources # Install web resources
install_web() { install_web() {
log_header "Installing Web Resources ($VARIANT)" log_header "Installing Web Resources ($VARIANT)"
local web_dir="$HOME/.everforest-web" local web_dir="$HOME/.everforest-web"
mkdir -p "$web_dir" mkdir -p "$web_dir"
install_file \
"$SCRIPT_DIR/web/css/everforest-$VARIANT.css" \
"$web_dir/everforest-$VARIANT.css" \
"CSS theme"
# Copy demo files
if [[ -f "$SCRIPT_DIR/docs/examples/web-demo.html" ]]; then
install_file \ install_file \
"$SCRIPT_DIR/web/css/everforest-$VARIANT.css" \ "$SCRIPT_DIR/docs/examples/web-demo.html" \
"$web_dir/everforest-$VARIANT.css" \ "$web_dir/demo.html" \
"CSS theme" "Web demo"
fi
# Copy demo files log_info "Web resources installed to $web_dir"
if [[ -f "$SCRIPT_DIR/docs/examples/web-demo.html" ]]; then
install_file \
"$SCRIPT_DIR/docs/examples/web-demo.html" \
"$web_dir/demo.html" \
"Web demo"
fi
log_info "Web resources installed to $web_dir"
} }
# Print post-installation instructions # Print post-installation instructions
print_instructions() { print_instructions() {
log_header "Installation Complete!" log_header "Installation Complete!"
cat <<EOF cat <<EOF
Next steps to activate themes: Next steps to activate themes:
@@ -423,43 +430,43 @@ ${CYAN}Environment Variables:${NC}
EOF EOF
if [[ "$CREATE_BACKUP" == "true" ]]; then if [[ "$CREATE_BACKUP" == "true" ]]; then
log_info "Backup saved to: $BACKUP_DIR" log_info "Backup saved to: $BACKUP_DIR"
fi fi
} }
# Main installation logic # Main installation logic
main() { main() {
log_header "Everforest Resources Installer" log_header "Everforest Resources Installer"
log_info "Variant: $VARIANT" log_info "Variant: $VARIANT"
log_info "Category: $CATEGORY" log_info "Category: $CATEGORY"
[[ "$DRY_RUN" == "true" ]] && log_info "Mode: DRY RUN" [[ "$DRY_RUN" == "true" ]] && log_info "Mode: DRY RUN"
validate_variant validate_variant
create_backup create_backup
case "$CATEGORY" in case "$CATEGORY" in
all) all)
install_terminals install_terminals
install_editors install_editors
install_cli install_cli
install_web install_web
;; ;;
terminals) terminals)
install_terminals install_terminals
;; ;;
editors) editors)
install_editors install_editors
;; ;;
cli) cli)
install_cli install_cli
;; ;;
web) web)
install_web install_web
;; ;;
esac esac
[[ "$DRY_RUN" == "false" ]] && print_instructions [[ "$DRY_RUN" == "false" ]] && print_instructions
} }
# Run main function # Run main function