|
| 1 | +# Lumo Makefile |
| 2 | + |
| 3 | +# Variables |
| 4 | +BINARY_NAME=lumo |
| 5 | +BUILD_DIR=build |
| 6 | +VERSION=$(shell grep -oP 'Version = "\K[^"]+' pkg/version/version.go) |
| 7 | +BUILD_DATE=$(shell date +%Y-%m-%d) |
| 8 | +GIT_COMMIT=$(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") |
| 9 | +GO_VERSION=$(shell go version | awk '{print $$3}') |
| 10 | +LDFLAGS=-ldflags "-X github.com/agnath18/lumo/pkg/version.Version=${VERSION} -X github.com/agnath18/lumo/pkg/version.BuildDate=${BUILD_DATE} -X github.com/agnath18/lumo/pkg/version.GitCommit=${GIT_COMMIT} -X github.com/agnath18/lumo/pkg/version.GoVersion=${GO_VERSION}" |
| 11 | +DEB_PACKAGE=${BUILD_DIR}/lumo_${VERSION}_amd64.deb |
| 12 | + |
| 13 | +# Default target |
| 14 | +.PHONY: all |
| 15 | +all: build |
| 16 | + |
| 17 | +# Build the binary |
| 18 | +.PHONY: build |
| 19 | +build: |
| 20 | + @echo "Building Lumo v${VERSION}..." |
| 21 | + @mkdir -p ${BUILD_DIR} |
| 22 | + @go build ${LDFLAGS} -o ${BUILD_DIR}/${BINARY_NAME} cmd/lumo/main.go |
| 23 | + @echo "Build complete: ${BUILD_DIR}/${BINARY_NAME}" |
| 24 | + |
| 25 | +# Install the binary |
| 26 | +.PHONY: install |
| 27 | +install: build |
| 28 | + @echo "Installing Lumo to /usr/bin/${BINARY_NAME}..." |
| 29 | + @sudo cp ${BUILD_DIR}/${BINARY_NAME} /usr/bin/${BINARY_NAME} |
| 30 | + @echo "Installation complete" |
| 31 | + |
| 32 | +# Run tests |
| 33 | +.PHONY: test |
| 34 | +test: |
| 35 | + @echo "Running tests..." |
| 36 | + @go test ./... |
| 37 | + |
| 38 | +# Clean build artifacts |
| 39 | +.PHONY: clean |
| 40 | +clean: |
| 41 | + @echo "Cleaning..." |
| 42 | + @rm -rf ${BUILD_DIR} |
| 43 | + @echo "Clean complete" |
| 44 | + |
| 45 | +# Clean Debian package files |
| 46 | +.PHONY: clean-deb |
| 47 | +clean-deb: |
| 48 | + @echo "Cleaning Debian package files..." |
| 49 | + @rm -rf debian |
| 50 | + @rm -f *.deb |
| 51 | + @rm -f ${BUILD_DIR}/*.deb |
| 52 | + @echo "Debian package files cleaned" |
| 53 | + |
| 54 | +# Show version |
| 55 | +.PHONY: version |
| 56 | +version: |
| 57 | + @echo "Lumo v${VERSION}" |
| 58 | + @echo "Build date: ${BUILD_DATE}" |
| 59 | + @echo "Git commit: ${GIT_COMMIT}" |
| 60 | + @echo "Go version: ${GO_VERSION}" |
| 61 | + |
| 62 | +# Build Debian package |
| 63 | +.PHONY: deb |
| 64 | +deb: build |
| 65 | + @echo "Building Debian package..." |
| 66 | + @./scripts/generate_control.sh |
| 67 | + @mkdir -p debian/usr/bin debian/usr/share/doc/lumo |
| 68 | + @cp ${BUILD_DIR}/${BINARY_NAME} debian/usr/bin/ |
| 69 | + @cp README.md debian/usr/share/doc/lumo/ |
| 70 | + @chmod 755 debian/usr/bin/${BINARY_NAME} |
| 71 | + @find debian -type d -exec chmod 755 {} \; |
| 72 | + @mkdir -p ${BUILD_DIR} |
| 73 | + @dpkg-deb --build debian ${DEB_PACKAGE} |
| 74 | + @echo "Debian package built: ${DEB_PACKAGE}" |
| 75 | + |
| 76 | +# Help |
| 77 | +.PHONY: help |
| 78 | +help: |
| 79 | + @echo "Lumo Makefile" |
| 80 | + @echo "" |
| 81 | + @echo "Targets:" |
| 82 | + @echo " all - Build the binary (default)" |
| 83 | + @echo " build - Build the binary in the ${BUILD_DIR} directory" |
| 84 | + @echo " install - Install the binary to /usr/bin" |
| 85 | + @echo " test - Run tests" |
| 86 | + @echo " clean - Clean build artifacts from ${BUILD_DIR}" |
| 87 | + @echo " deb - Build a Debian package (.deb)" |
| 88 | + @echo " clean-deb - Clean Debian package files" |
| 89 | + @echo " version - Show version information" |
| 90 | + @echo " help - Show this help" |
0 commit comments