86 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# Makefile for Nostr Poster
 | 
						|
 | 
						|
# Variables
 | 
						|
BINARY_NAME=nostr-poster
 | 
						|
BUILD_DIR=./build
 | 
						|
BIN_DIR=$(BUILD_DIR)/bin
 | 
						|
CONFIG_DIR=$(BUILD_DIR)/config
 | 
						|
CONTENT_DIR=$(BUILD_DIR)/content
 | 
						|
ARCHIVE_DIR=$(BUILD_DIR)/archive
 | 
						|
DB_DIR=$(BUILD_DIR)/db
 | 
						|
 | 
						|
# Go parameters
 | 
						|
GOCMD=go
 | 
						|
GOBUILD=$(GOCMD) build
 | 
						|
GOCLEAN=$(GOCMD) clean
 | 
						|
GOTEST=$(GOCMD) test
 | 
						|
GOGET=$(GOCMD) get
 | 
						|
 | 
						|
# Main package
 | 
						|
MAIN_PKG=./cmd/server
 | 
						|
 | 
						|
# Default target
 | 
						|
.PHONY: all
 | 
						|
all: clean build
 | 
						|
 | 
						|
# Build binary
 | 
						|
.PHONY: build
 | 
						|
build:
 | 
						|
	mkdir -p $(BIN_DIR)
 | 
						|
	mkdir -p $(CONFIG_DIR)
 | 
						|
	mkdir -p $(CONTENT_DIR)
 | 
						|
	mkdir -p $(ARCHIVE_DIR)
 | 
						|
	mkdir -p $(DB_DIR)
 | 
						|
	# Copy config file if it exists
 | 
						|
	if [ -f ./config/config.yaml ]; then cp ./config/config.yaml $(CONFIG_DIR)/config.yaml; fi
 | 
						|
	$(GOBUILD) -o $(BIN_DIR)/$(BINARY_NAME) $(MAIN_PKG)
 | 
						|
 | 
						|
# Run the application
 | 
						|
.PHONY: run
 | 
						|
run: build
 | 
						|
	$(BIN_DIR)/$(BINARY_NAME) --config=$(CONFIG_DIR)/config.yaml --db=$(DB_DIR)/nostr-poster.db
 | 
						|
 | 
						|
# Clean build artifacts
 | 
						|
.PHONY: clean
 | 
						|
clean:
 | 
						|
	$(GOCLEAN)
 | 
						|
	rm -rf $(BUILD_DIR)
 | 
						|
 | 
						|
# Run tests
 | 
						|
.PHONY: test
 | 
						|
test:
 | 
						|
	$(GOTEST) -v ./...
 | 
						|
 | 
						|
# Update dependencies
 | 
						|
.PHONY: deps
 | 
						|
deps:
 | 
						|
	$(GOGET) -u
 | 
						|
 | 
						|
# Install required tools
 | 
						|
.PHONY: tools
 | 
						|
tools:
 | 
						|
	go install golang.org/x/tools/cmd/goimports@latest
 | 
						|
	go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
 | 
						|
 | 
						|
# Lint the code
 | 
						|
.PHONY: lint
 | 
						|
lint:
 | 
						|
	golangci-lint run ./...
 | 
						|
 | 
						|
# Format the code
 | 
						|
.PHONY: fmt
 | 
						|
fmt:
 | 
						|
	goimports -w .
 | 
						|
 | 
						|
# Show help
 | 
						|
.PHONY: help
 | 
						|
help:
 | 
						|
	@echo "make - Build the application"
 | 
						|
	@echo "make build - Build the application"
 | 
						|
	@echo "make run - Run the application"
 | 
						|
	@echo "make clean - Clean build artifacts"
 | 
						|
	@echo "make test - Run tests"
 | 
						|
	@echo "make deps - Update dependencies"
 | 
						|
	@echo "make tools - Install required tools"
 | 
						|
	@echo "make lint - Lint the code"
 | 
						|
	@echo "make fmt - Format the code"
 |