# Makefile for pkpgcounter Python 3 port

SOURCEDIR = /home/mpardee/Downloads/gdb24/pkpgcounter-py2/usr/lib/python2.7/dist-packages/pkpgpdls
TARGETDIR = /home/mpardee/Downloads/gdb24/pkpgcounter-py3/usr/lib/python3/dist-packages/pkpgpdls
CONVERTER = ./convert_py2_to_py3.py
PYTHON = python3
PIP = pip3

.PHONY: all convert status install clean dist

all: convert status

# Convert all remaining Python files
convert:
	@echo "Converting Python 2 files to Python 3..."
	@mkdir -p $(TARGETDIR)
	@for file in $(SOURCEDIR)/*.py; do \
		basename=$$(basename $$file); \
		if [ ! -f $(TARGETDIR)/$$basename ]; then \
			echo "Converting $$basename..."; \
			$(PYTHON) $(CONVERTER) $$file -o $(TARGETDIR)/$$basename -v; \
			if [ -d $(TARGETDIR)/$$basename ]; then \
				echo "Error: Output for $$basename is a directory, fixing..."; \
				outfile=$$(find $(TARGETDIR)/$$basename -name "$$basename" -type f); \
				if [ -f "$$outfile" ]; then \
					mv "$$outfile" $(TARGETDIR)/; \
					rm -rf $(TARGETDIR)/$$basename; \
				fi; \
			fi; \
		fi; \
	done

# Convert a specific file (usage: make convert_file FILE=filename.py)
convert_file:
	@if [ -z "$(FILE)" ]; then \
		echo "Error: No file specified. Use 'make convert_file FILE=filename.py'"; \
		exit 1; \
	fi
	@if [ ! -f $(SOURCEDIR)/$(FILE) ]; then \
		echo "Error: File $(SOURCEDIR)/$(FILE) does not exist"; \
		exit 1; \
	fi
	@echo "Converting $(FILE)..."
	@mkdir -p $(TARGETDIR)
	@$(PYTHON) $(CONVERTER) $(SOURCEDIR)/$(FILE) -o $(TARGETDIR)/$(FILE) -v
	@# Verify output is correct
	@if [ -d $(TARGETDIR)/$(FILE) ]; then \
		echo "Error: Output is a directory, fixing..."; \
		outfile=$$(find $(TARGETDIR)/$(FILE) -name "$(FILE)" -type f); \
		if [ -f "$$outfile" ]; then \
			mv "$$outfile" $(TARGETDIR)/; \
			rm -rf $(TARGETDIR)/$(FILE); \
		fi; \
	fi

# Check conversion status
status:
	@$(PYTHON) check_conversion_status.py

# Install the package
install:
	$(PIP) install -e .

# Clean build artifacts
clean:
	rm -rf build/ dist/ *.egg-info/
	find . -name "__pycache__" -type d -exec rm -rf {} +
	find . -name "*.pyc" -delete

# Create a distribution package
dist:
	$(PYTHON) setup.py sdist bdist_wheel

# Manual post-conversion fixes (requires manual review)
fixups:
	@echo "Applying manual fixups to converted files..."
	@grep -l "except .* as " $(TARGETDIR)/*.py | xargs sed -i 's/raise \([^(]\+\)(\(.*\))/raise \1("\2")/g'
	@grep -l "b%" $(TARGETDIR)/*.py | xargs sed -i 's/b%/%/g'
	@echo "Manual fixups applied. Please review the changes!"