mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-30 21:33:39 +00:00
Major restructuring of the scripts/ directory with consistent output
formatting, improved organization, and stricter error handling.
Breaking Changes:
- Updated development environment to Home Assistant 2025.7+
- Removed Python 3.12 compatibility (HA 2025.7+ requires Python 3.13)
- Updated all HA core requirements from 2025.7 requirement files
- Added new dependencies: python-multipart, uv (for faster package management)
- Updated GitHub Actions workflows to use Python 3.13
Changes:
- Created centralized output library (scripts/.lib/output.sh)
- Unified color codes and Unicode symbols
- Consistent formatting functions (log_header, log_success, log_error, etc.)
- Support for embedded formatting codes (${BOLD}, ${GREEN}, etc.)
- Reorganized into logical subdirectories:
- scripts/setup/ - Setup and maintenance scripts
- bootstrap: Install/update dependencies (used in CI/CD)
- setup: Full DevContainer setup (pyright, copilot, HACS)
- reset: Reset config/ directory to fresh state (NEW)
- sync-hacs: Sync HACS integrations
- scripts/release/ - Release management scripts
- prepare: Version bump and tagging
- suggest-version: Semantic version suggestion
- generate-notes: Release notes generation
- check-if-released: Check release status
- hassfest: Local integration validation
- Updated all scripts with:
- set -euo pipefail for stricter error handling
- Consistent SCRIPT_DIR pattern for reliable sourcing
- Professional output with colors and emojis
- Unified styling across all 17 scripts
- Removed redundant scripts:
- scripts/update (was just wrapper around bootstrap)
- scripts/json_schemas/ (moved to schemas/json/)
- Enhanced clean script:
- Improved artifact cleanup
- Better handling of accidental package installations
- Hints for reset and deep clean options
- New reset script features:
- Standard mode: Keep configuration.yaml
- Full mode (--full): Reset configuration.yaml from git
- Automatic re-setup after reset
- Updated documentation:
- AGENTS.md: Updated script references and workflow guidance
- docs/development/: Updated all references to new script structure
Impact: Development environment now requires Python 3.13 and Home Assistant
2025.7+. Developers get consistent, professional script output with better
error handling and logical organization. Single source of truth for styling
makes future updates trivial.
73 lines
2 KiB
Bash
Executable file
73 lines
2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# script/help: Display information about available scripts
|
|
#
|
|
# Shows all available scripts grouped by category (development, release, setup)
|
|
# with descriptions extracted from script headers.
|
|
#
|
|
# Usage:
|
|
# ./scripts/help
|
|
#
|
|
# Examples:
|
|
# ./scripts/help
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
cd "$SCRIPT_DIR/.."
|
|
|
|
# shellcheck source=scripts/.lib/output.sh
|
|
source "$SCRIPT_DIR/.lib/output.sh"
|
|
|
|
REPO_NAME=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || basename "$(pwd)")
|
|
|
|
printf "%bDevelopment environment for %s%b\n\n" "$BOLD" "$REPO_NAME" "$NC"
|
|
|
|
# Helper function to display scripts from a directory
|
|
show_scripts() {
|
|
local dir="$1"
|
|
local prefix="$2"
|
|
|
|
find "$dir" -maxdepth 1 -type f -perm -111 -print0 2>/dev/null | sort -z | while IFS= read -r -d '' script; do
|
|
script_name=$(basename "$script")
|
|
script_path="$prefix$script_name"
|
|
|
|
description=$(awk -v prefix="# script/$script_name:" '
|
|
BEGIN {desc=""}
|
|
$0 ~ prefix {
|
|
line = $0
|
|
sub(prefix, "", line)
|
|
sub(/^# */, "", line)
|
|
desc = desc (desc ? " " : "") line
|
|
next
|
|
}
|
|
desc != "" {exit}
|
|
END {print desc}
|
|
' "$script")
|
|
|
|
if [[ -z $description ]]; then
|
|
description="No description available"
|
|
fi
|
|
if [[ ${#description} -gt 60 ]]; then
|
|
description=$(echo "$description" | cut -c1-57)...
|
|
fi
|
|
printf " %b%-25s%b %s\n" "$CYAN" "$script_path" "$NC" "$description"
|
|
done
|
|
}
|
|
|
|
printf "%bDevelopment scripts (daily use):%b\n\n" "$BOLD" "$NC"
|
|
show_scripts "scripts" "scripts/"
|
|
|
|
if [[ -d scripts/release ]]; then
|
|
echo ""
|
|
printf "%bRelease management:%b\n\n" "$BOLD" "$NC"
|
|
show_scripts "scripts/release" "scripts/release/"
|
|
fi
|
|
|
|
if [[ -d scripts/setup ]]; then
|
|
echo ""
|
|
printf "%bSetup & maintenance:%b\n\n" "$BOLD" "$NC"
|
|
show_scripts "scripts/setup" "scripts/setup/"
|
|
fi
|
|
|
|
echo ""
|