ppanel-web/scripts/prepare.sh
shanshanzhong 56a955ae81
All checks were successful
CI / build (20.15.1) (push) Successful in 14m4s
feat: 1
2026-01-05 03:04:09 -08:00

62 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Skip entire script in CI environment
if [ "$CI" = "true" ]; then
echo "CI environment detected, skipping script execution."
exit 0
fi
# Exit if not a Git repository
if [ ! -d ".git" ]; then
echo "Not a Git repository. Exiting."
exit 1
fi
# Function to set up a Husky hook
setup_husky_hook() {
local hook_name=$1
local hook_content=$2
if [ ! -f ".husky/$hook_name" ]; then
echo "Setting up $hook_name hook..."
echo "$hook_content" > ".husky/$hook_name" || echo "Failed to set up $hook_name hook. Skipping."
chmod +x ".husky/$hook_name" || echo "Failed to make $hook_name hook executable. Skipping."
else
echo "$hook_name hook is already set up."
fi
}
# Ensure Husky is installed and initialized
if [ ! -d ".husky" ]; then
echo "Setting up Husky..."
npx husky || echo "Failed to set up Husky. Skipping."
else
echo "Husky is already set up."
fi
# Set up pre-commit hook
setup_husky_hook "pre-commit" "npx --no-install lint-staged"
# Set up commit-msg hook
setup_husky_hook "commit-msg" "npx --no-install commitlint --edit \"\$1\""
# Function to globally install an npm package if not installed
install_global_package() {
local package_name=$1
if ! npm list -g --depth=0 "$package_name" > /dev/null 2>&1; then
echo "Installing $package_name globally..."
npm install -g "$package_name" || echo "Failed to install $package_name globally. Skipping."
else
echo "$package_name is already installed."
fi
}
# Check and install required global npm packages
install_global_package "@lobehub/i18n-cli"
install_global_package "@lobehub/commit-cli"
# Run lobe-commit interactively
echo "Running lobe-commit -i..."
lobe-commit -i || echo "lobe-commit failed. Skipping."