# Default rename values (can be overridden if needed)
FROM_NAME ?= baseplus
TO_NAME ?= basecore
TO_DISPLAY_NAME ?= BaseCore

BASE_DIR := templates
JS_DIRS := js/revolution js/isotope
SETTINGS_FILE := config/install/$(FROM_NAME).settings.yml
LIBRARIES_FILE := $(FROM_NAME).libraries.yml
API_KEY := AIzaSyDyL-4KyWw_3hp-0jmZLGcJ3zMWkkJ44VI
PLACEHOLDER_KEY := your_google_maps_api_key
COLOR ?= revert

# List of files to keep (relative to BASE_DIR)
KEEP_FILES := \
  partials/_mt-teaser-tile-card.html.twig \
  block--page-title-block.html.twig \
  block--system-branding-block.html.twig \
  block--views-block.html.twig \
  block.html.twig \
  breadcrumb.html.twig \
  comment.html.twig \
  field--entity-reference.html.twig \
  field--node--field-event--date--event--default.html.twig \
  field--node--field-image.html.twig \
  field--node--field-person--role-job-title--person--default.html.twig \
  field--node--field-tags.html.twig \
  image-formatter--media--thumbnail.html.twig \
  image-formatter--node--field-image.html.twig \
  maintenance-page.html.twig \
  node--blog--full.html.twig \
  node--card.html.twig \
  node--news--full.html.twig \
  node--person--full.html.twig \
  node.html.twig \
  page--404.html.twig \
  page--node--blog.html.twig \
  page--node--layout.html.twig \
  page--node--mt-landing-page.html.twig \
  page--node--news.html.twig \
  page-title.html.twig \
  page.html.twig \
  pager.html.twig \
  status-messages.html.twig \
  views-view-unformatted--blog.html.twig \
  views-view-unformatted--case-studies.html.twig \
  views-view-unformatted--events.html.twig \
  views-view-unformatted--latest.html.twig \
  views-view-unformatted--news.html.twig \
  views-view-unformatted--person-profiles.html.twig \
  views-view-unformatted--projects.html.twig \
  views-view.html.twig

.PHONY: all clean_twig clean_js clean_misc replace_key remove_premium_block rename_theme revert

all: clean_twig clean_js clean_misc replace_key remove_premium_block rename_theme
	@echo "File cleanup, replacements, and theme renaming completed."

clean_twig:
	@echo "Cleaning Twig files..."
	@find $(BASE_DIR) -type f -name "*.twig" | while read FILE; do \
		REL=$${FILE#$(BASE_DIR)/}; \
		FOUND=0; \
		for KEEP in $(KEEP_FILES); do \
			if [ "$$REL" = "$$KEEP" ]; then FOUND=1; fi; \
		done; \
		if [ "$$FOUND" -eq 0 ]; then \
			echo "Removing: $$FILE"; rm -f "$$FILE"; \
		fi; \
	done

clean_js:
	@echo "Removing premium JS directories..."
	@for DIR in $(JS_DIRS); do \
		if [ -d "$$DIR" ]; then \
			echo "Removing directory: $$DIR"; \
			rm -rf "$$DIR"; \
		else \
			echo "Directory not found: $$DIR"; \
		fi; \
	done

clean_misc:
	@echo "Removing misc and .github folders..."
	@for DIR in misc .github; do \
		if [ -d "$$DIR" ]; then \
			echo "Removing: $$DIR"; \
			rm -rf "$$DIR"; \
		fi; \
	done

replace_key:
	@if [ -f "$(SETTINGS_FILE)" ]; then \
		sed -i "s/$(API_KEY)/$(PLACEHOLDER_KEY)/" "$(SETTINGS_FILE)"; \
		echo "Replaced Google Maps API key in $(SETTINGS_FILE)"; \
	else \
		echo "YAML file not found: $(SETTINGS_FILE)"; \
	fi

remove_premium_block:
	@echo "Removing premium blocks from YAML files..."
	@find . -type f \( -name "*.yml" -o -name "*.yaml" \) -not -path "./.git/*" | while read FILE; do \
		if grep -q "# BEGIN PREMIUM" "$$FILE"; then \
			sed -i '/# BEGIN PREMIUM/,/# END PREMIUM/d' "$$FILE"; \
			echo "Removed premium block from $$FILE"; \
		fi; \
	done

rename_theme:
	@echo "Renaming all instances of $(FROM_NAME) → $(TO_NAME)..."

	# Replace inside files (excluding .git and Makefile)
	@find . -type f -not -path "./.git/*" -not -name "Makefile" \
		-exec grep -Il "$(FROM_NAME)" {} \; | xargs sed -i "s/$(FROM_NAME)/$(TO_NAME)/g"

	# Rename files and folders (excluding .git)
	@find . -depth -name "*$(FROM_NAME)*" -not -path "./.git/*" | while read OLD; do \
		NEW=$$(echo $$OLD | sed "s/$(FROM_NAME)/$(TO_NAME)/g"); \
		echo "Renaming: $$OLD → $$NEW"; \
		mv "$$OLD" "$$NEW"; \
	done

	# Update the 'name:' field in the .info.yml file
	@INFO_FILE=$$(find . -type f -name "$(TO_NAME).info.yml" | head -n 1); \
	if [ -n "$$INFO_FILE" ]; then \
		sed -i "s/^name: .*/name: $(TO_DISPLAY_NAME)/" "$$INFO_FILE"; \
		echo "Updated 'name:' field in $$INFO_FILE to '$(TO_DISPLAY_NAME)'"; \
	else \
		echo "No .info.yml file found for theme $(TO_NAME)"; \
	fi

# Removes transparent color from drupal-off-canvas-wrapper 
update-color:
	sed -i 's/--canvas-bg: .*;/--canvas-bg: $(COLOR);/' css/components/node-layout-page.css

# Reverts the CSS variable back to transparent
revert-update-color:
	sed -i 's/--canvas-bg: .*;/--canvas-bg: transparent;/' css/components/node-layout-page.css

revert:
	@$(MAKE) FROM_NAME=basecore TO_NAME=baseplus TO_DISPLAY_NAME=Base+ rename_theme
