64 lines
1.8 KiB
Makefile
64 lines
1.8 KiB
Makefile
# Makefile for building and running the POP3 to IMAP Importer
|
|
|
|
# Variables
|
|
IMAGE_NAME = pop-imap-importer
|
|
DOCKER_PLATFORM = linux/amd64
|
|
|
|
# Default target
|
|
.PHONY: help
|
|
help: ## Show this help message
|
|
@echo "Usage: make [target]"
|
|
@echo ""
|
|
@echo "Targets:"
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
|
|
|
# Local build targets
|
|
.PHONY: build-local
|
|
build-local: ## Build both binaries locally (release mode)
|
|
cargo build --release
|
|
|
|
.PHONY: pop-to-imap
|
|
pop-to-imap: ## Run the POP3 to IMAP migration tool
|
|
cargo run --release --bin pop-to-imap
|
|
|
|
.PHONY: normalize-imap
|
|
normalize-imap: ## Run the IMAP normalization tool
|
|
cargo run --release --bin normalize-imap
|
|
|
|
.PHONY: normalize-dry-run
|
|
normalize-dry-run: ## Run the IMAP normalization tool in dry-run mode
|
|
cargo run --release --bin normalize-imap -- --dry-run
|
|
|
|
.PHONY: test
|
|
test: ## Run all tests
|
|
cargo test
|
|
|
|
# Docker targets
|
|
|
|
.PHONY: build
|
|
build: ## Build the Docker image for linux/amd64 platform
|
|
docker build --platform=$(DOCKER_PLATFORM) -t $(IMAGE_NAME) .
|
|
|
|
.PHONY: run
|
|
run: ## Run the Docker container
|
|
docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME)
|
|
|
|
.PHONY: run-with-env
|
|
run-with-env: ## Run the Docker container with a custom .env file
|
|
docker run --platform=$(DOCKER_PLATFORM) --rm -it -v $(PWD)/.env:/app/.env $(IMAGE_NAME)
|
|
|
|
.PHONY: clean
|
|
clean: ## Remove the Docker image
|
|
docker rmi $(IMAGE_NAME)
|
|
|
|
.PHONY: push
|
|
push: ## Push the Docker image to a registry (requires REPOSITORY variable)
|
|
ifndef REPOSITORY
|
|
$(error REPOSITORY is not set. Please set it with: make push REPOSITORY=your-repo/image-name)
|
|
endif
|
|
docker tag $(IMAGE_NAME) $(REPOSITORY):latest
|
|
docker push $(REPOSITORY):latest
|
|
|
|
.PHONY: shell
|
|
shell: ## Run a shell in the Docker container
|
|
docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME) sh
|