145 lines
4.7 KiB
Bash
Executable File
145 lines
4.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Migration Script: Move to .example Config Pattern
|
|
#
|
|
# This script migrates the configuration system to use .example files
|
|
# for white-label protection. Run this once per repository.
|
|
#
|
|
# What it does:
|
|
# 1. Removes config files from git tracking (keeps local files)
|
|
# 2. Adds .example files to git tracking
|
|
# 3. Updates .gitignore
|
|
# 4. Creates a commit with these changes
|
|
#
|
|
|
|
set -e # Exit on error
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
BLUE='\033[0;34m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo -e "${BLUE} Config Migration to .example Pattern ${NC}"
|
|
echo -e "${BLUE}========================================${NC}\n"
|
|
|
|
# Check if in git repository
|
|
if [ ! -d .git ]; then
|
|
echo -e "${RED}Error: Must be run from repository root${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Files to migrate
|
|
config_files=(
|
|
"config/themes.php"
|
|
"config/timebank-default.php"
|
|
"config/timebank_cc.php"
|
|
)
|
|
|
|
echo -e "${YELLOW}This script will:${NC}"
|
|
echo "1. Remove config files from git tracking (local files remain)"
|
|
echo "2. Add .example template files to git"
|
|
echo "3. Update .gitignore if needed"
|
|
echo -e "\n${YELLOW}Your custom config files will be preserved locally.${NC}\n"
|
|
|
|
read -p "Continue? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "Migration cancelled."
|
|
exit 0
|
|
fi
|
|
|
|
echo -e "\n${BLUE}Step 1: Verifying .example files exist${NC}"
|
|
for config_file in "${config_files[@]}"; do
|
|
if [ ! -f "${config_file}.example" ]; then
|
|
if [ -f "$config_file" ]; then
|
|
echo -e "${YELLOW}Creating ${config_file}.example from current file...${NC}"
|
|
cp "$config_file" "${config_file}.example"
|
|
else
|
|
echo -e "${RED}Warning: $config_file doesn't exist, skipping...${NC}"
|
|
continue
|
|
fi
|
|
else
|
|
echo -e "${GREEN}✓ ${config_file}.example exists${NC}"
|
|
fi
|
|
done
|
|
|
|
echo -e "\n${BLUE}Step 2: Removing config files from git tracking${NC}"
|
|
for config_file in "${config_files[@]}"; do
|
|
if git ls-files --error-unmatch "$config_file" > /dev/null 2>&1; then
|
|
echo -e "${YELLOW}Removing $config_file from git (keeping local file)...${NC}"
|
|
git rm --cached "$config_file"
|
|
echo -e "${GREEN}✓ Removed $config_file from git tracking${NC}"
|
|
else
|
|
echo -e "${YELLOW}$config_file not tracked in git, skipping...${NC}"
|
|
fi
|
|
done
|
|
|
|
echo -e "\n${BLUE}Step 3: Adding .example files to git${NC}"
|
|
for config_file in "${config_files[@]}"; do
|
|
if [ -f "${config_file}.example" ]; then
|
|
git add "${config_file}.example"
|
|
echo -e "${GREEN}✓ Added ${config_file}.example to git${NC}"
|
|
fi
|
|
done
|
|
|
|
echo -e "\n${BLUE}Step 4: Verifying .gitignore${NC}"
|
|
if grep -q "/config/themes.php" .gitignore; then
|
|
echo -e "${GREEN}✓ .gitignore already updated${NC}"
|
|
else
|
|
echo -e "${YELLOW}Updating .gitignore...${NC}"
|
|
git add .gitignore
|
|
echo -e "${GREEN}✓ Added .gitignore changes${NC}"
|
|
fi
|
|
|
|
echo -e "\n${BLUE}Step 5: Adding enhanced deploy.sh${NC}"
|
|
if grep -q "CHECKING CONFIGURATION FILES" deploy.sh; then
|
|
git add deploy.sh
|
|
echo -e "${GREEN}✓ Added deploy.sh changes${NC}"
|
|
else
|
|
echo -e "${YELLOW}Warning: deploy.sh doesn't have config checking logic${NC}"
|
|
fi
|
|
|
|
echo -e "\n${BLUE}Step 6: Creating git commit${NC}"
|
|
cat > /tmp/migration_commit_msg.txt << 'EOF'
|
|
Migrate to .example config pattern for white-label protection
|
|
|
|
- Add .example template files for themes and platform configs
|
|
- Remove actual config files from git tracking (gitignored)
|
|
- Update .gitignore to protect custom configurations
|
|
- Enhance deploy.sh to copy .example files if configs missing
|
|
- Add WHITE_LABEL_CONFIG.md documentation
|
|
|
|
This ensures white-label installations can customize configs
|
|
without git conflicts during deployments.
|
|
|
|
Config files affected:
|
|
- config/themes.php
|
|
- config/timebank-default.php
|
|
- config/timebank_cc.php
|
|
|
|
Local config files are preserved. Future git pulls will not
|
|
overwrite installation-specific customizations.
|
|
EOF
|
|
|
|
git commit -F /tmp/migration_commit_msg.txt
|
|
rm /tmp/migration_commit_msg.txt
|
|
|
|
echo -e "\n${GREEN}========================================${NC}"
|
|
echo -e "${GREEN} Migration Complete!${NC}"
|
|
echo -e "${GREEN}========================================${NC}\n"
|
|
|
|
echo -e "${YELLOW}What changed:${NC}"
|
|
echo "✓ .example files are now tracked in git (templates)"
|
|
echo "✓ Actual config files are gitignored (your customizations)"
|
|
echo "✓ deploy.sh will auto-create configs from templates if missing"
|
|
echo ""
|
|
echo -e "${YELLOW}Next steps:${NC}"
|
|
echo "1. Push these changes: git push origin main"
|
|
echo "2. On other installations, pull updates: git pull origin main"
|
|
echo "3. Their custom configs will be preserved automatically"
|
|
echo ""
|
|
echo -e "${BLUE}For more info, see: references/BRANDING_CUSTOMIZATION.md${NC}"
|