jobs-monorepo/Makefile
2025-11-01 10:59:58 +05:00

96 lines
2.7 KiB
Makefile

# Jobs Scraper Monorepo Makefile
# Variables
APP_NAME=jobs-scraper
API_DIR=./packages/api
SCRAPER_DIR=./packages/linked-scraper
GLASSDOOR_DIR=./packages/glassdoor-scraper
DOCS_DIR=./docs
BIN_DIR=./bin
MAIN_FILE=$(API_DIR)/main.go
SCRAPER_MAIN_FILE=$(SCRAPER_DIR)/main.go
CRON_DIR=./cmd/cron-analyzer
CRON_MAIN_FILE=$(CRON_DIR)/main.go
MIGRATE_DIR=./cmd/migrate
MIGRATE_MAIN_FILE=$(MIGRATE_DIR)/main.go
# Default target
.DEFAULT_GOAL := help
# RabbitMQ server
rabbitmq-server:
@echo "Starting RabbitMQ server..."
docker run --rm -p 5672:5672 -p 15672:15672 rabbitmq:3-management
.PHONY: run
run: ## Run the API application
@echo "Running $(APP_NAME) API..."
@go run $(MAIN_FILE)
.PHONY: scraper
scraper: ## Run the scraper service
@echo "Running scraper service..."
@cd $(SCRAPER_DIR) && go run main.go
.PHONY: build-scraper
build-scraper: ## Build the linked scraper service
@echo "Building linked scraper service..."
@cd $(SCRAPER_DIR) && go build -o scraper main.go
.PHONY: glassdoor-scraper
glassdoor-scraper: ## Run the glassdoor scraper service
@echo "Running glassdoor scraper service..."
@cd $(GLASSDOOR_DIR) && npm run dev
.PHONY: build-glassdoor
build-glassdoor: ## Build the glassdoor scraper service
@echo "Building glassdoor scraper service..."
@cd $(GLASSDOOR_DIR) && npm run build
.PHONY: build-api
build-api: ## Build the API service
@echo "Building API service..."
@cd $(API_DIR) && go build -o api main.go
.PHONY: cron
cron: ## Run the job analysis cron service
@echo "Starting Job Analysis Cron Service..."
@go run $(CRON_MAIN_FILE)
.PHONY: migrate
migrate: ## Run database migrations
@echo "Running database migrations..."
@go run $(MIGRATE_MAIN_FILE)
.PHONY: clean
clean: ## Clean build artifacts
@echo "Cleaning build artifacts..."
@rm -rf $(BIN_DIR)
@rm -f $(SCRAPER_DIR)/scraper
@echo "Clean complete"
.PHONY: help
help: ## Show this help message
@echo "Jobs Scraper Monorepo - Available commands:"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
# Swagger documentation
.PHONY: swagger
swagger: ## Generate Swagger documentation
@echo "Generating Swagger documentation..."
@go run github.com/swaggo/swag/cmd/swag@latest init -g $(MAIN_FILE) -o $(DOCS_DIR)
@echo "Swagger documentation generated in $(DOCS_DIR)/"
# Docker operations (if needed in the future)
.PHONY: docker-build
docker-build: ## Build Docker image
@echo "Building Docker image..."
@docker build -t $(APP_NAME) .
@echo "Docker image built: $(APP_NAME)"
.PHONY: docker-run
docker-run: ## Run Docker container
@echo "Running Docker container..."
@docker run -p 8080:8080 $(APP_NAME)