TARGETS := help install build clean clean-all dist-clean all check

.PHONY: $(TARGETS)
.SILENT: $(TARGETS) ts/node_modules

# Default target
help:
	echo "Available targets:"
	echo "  make install    - Install npm dependencies"
	echo "  make build      - Compile TypeScript files to JavaScript"
	echo "  make check      - Check if TypeScript has been compiled"
	echo "  make clean      - Remove compiled JavaScript files"
	echo "  make clean-all  - Remove compiled JavaScript files AND node_modules"
	echo "  make dist-clean - Remove node_modules but keep compiled JavaScript files"
	echo "  make all        - Install dependencies and build everything"

# Install npm dependencies if not already installed
ts/node_modules:
	echo "Installing dependencies..."
	cd ts/config \
		&& npm install \
		&& mv node_modules ..
	echo "Dependencies installed successfully."

install: ts/node_modules

# Compile both TypeScript files
build: ts/node_modules
	echo "Compiling TypeScript files..."
	cd ts/config && npm run build
	echo "Running ESLint fix..."
	cd ts/config && npm run eslint:fix
	rm -rf ts/config/node_modules
	echo "Compilation complete."

# Clean compiled JavaScript files
clean:
	echo "Cleaning compiled JavaScript files..."
	rm -f main/main.js settings/settings.js
	echo "Cleaned main/main.js and settings/settings.js"

# Clean everything including node_modules
clean-all: clean
	echo "Removing node_modules directory..."
	rm -rf ts/node_modules ts/config/package-lock.json
	echo "Full clean complete."

# Remove node_modules but keep compiled JavaScript files (for distribution)
dist-clean:
	echo "Removing node_modules directory..."
	rm -rf ts/node_modules ts/config/package-lock.json
	echo "Distribution clean complete (JavaScript files preserved)."

# Install and build everything
all: build
	echo "Setup complete!"

# Check if TypeScript has been compiled
check:
	if [ -f main/main.js ] && [ -f settings/settings.js ]; then \
		echo "✓ TypeScript compiled: main/main.js and settings/settings.js exist."; \
	elif [ -f main/main.js ]; then \
		echo "✗ Partially compiled: main/main.js exists but settings/settings.js is missing."; \
		echo "Run make clean && make build to fully compile both files."; \
	elif [ -f settings/settings.js ]; then \
		echo "✗ Partially compiled: settings/settings.js exists but main/main.js is missing."; \
		echo "Run make clean && make build to fully compile both files."; \
	else \
		echo "✗ Not compiled: both main/main.js and settings/settings.js are missing"; \
	fi
