release: v0.1.0
This commit is contained in:
92
Makefile
Normal file
92
Makefile
Normal file
@@ -0,0 +1,92 @@
|
||||
APP_NAME = ddns-updater
|
||||
BIN_DIR = bin
|
||||
VERSION = 1.0.0
|
||||
|
||||
# Go parameters
|
||||
GOCMD = go
|
||||
GOBUILD = $(GOCMD) build
|
||||
GOCLEAN = $(GOCMD) clean
|
||||
GORUN = $(GOCMD) run
|
||||
|
||||
# Build targets
|
||||
.PHONY: all build clean run init-config install install-linux install-macos service-linux service-macos
|
||||
|
||||
all: build
|
||||
|
||||
# Build binary for current platform
|
||||
build:
|
||||
mkdir -p $(BIN_DIR)
|
||||
$(GOBUILD) -o $(BIN_DIR)/$(APP_NAME) -ldflags "-X main.Version=$(VERSION)" main.go
|
||||
@echo "Built $(BIN_DIR)/$(APP_NAME)"
|
||||
|
||||
# Build for multiple platforms
|
||||
build-all:
|
||||
mkdir -p $(BIN_DIR)
|
||||
GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(BIN_DIR)/$(APP_NAME)-linux-amd64 main.go
|
||||
GOOS=linux GOARCH=arm64 $(GOBUILD) -o $(BIN_DIR)/$(APP_NAME)-linux-arm64 main.go
|
||||
GOOS=darwin GOARCH=amd64 $(GOBUILD) -o $(BIN_DIR)/$(APP_NAME)-darwin-amd64 main.go
|
||||
GOOS=darwin GOARCH=arm64 $(GOBUILD) -o $(BIN_DIR)/$(APP_NAME)-darwin-arm64 main.go
|
||||
@echo "Built all platform binaries in $(BIN_DIR)/"
|
||||
|
||||
# Run locally
|
||||
run:
|
||||
$(GORUN) main.go -config config.yaml
|
||||
|
||||
# Generate config template
|
||||
init-config:
|
||||
$(GORUN) main.go -init-config > config.yaml
|
||||
@echo "Generated config.yaml - edit with your Cloudflare credentials"
|
||||
|
||||
# Clean build artifacts
|
||||
clean:
|
||||
$(GOCLEAN)
|
||||
rm -rf $(BIN_DIR)
|
||||
|
||||
# Install binary system-wide
|
||||
install: build
|
||||
sudo install -m 755 $(BIN_DIR)/$(APP_NAME) /usr/local/bin/$(APP_NAME)
|
||||
@echo "Installed to /usr/local/bin/$(APP_NAME)"
|
||||
|
||||
# Linux-specific installation
|
||||
install-linux: install
|
||||
sudo mkdir -p /etc/ddns-updater
|
||||
@if [ ! -f /etc/ddns-updater/config.yaml ]; then \
|
||||
sudo cp config.yaml /etc/ddns-updater/config.yaml; \
|
||||
sudo chmod 600 /etc/ddns-updater/config.yaml; \
|
||||
echo "Config installed to /etc/ddns-updater/config.yaml"; \
|
||||
else \
|
||||
echo "Config already exists at /etc/ddns-updater/config.yaml"; \
|
||||
fi
|
||||
|
||||
# macOS-specific installation
|
||||
install-macos: install
|
||||
sudo mkdir -p /usr/local/etc
|
||||
sudo mkdir -p /usr/local/var/log
|
||||
@if [ ! -f /usr/local/etc/ddns-updater.yaml ]; then \
|
||||
sudo cp config.yaml /usr/local/etc/ddns-updater.yaml; \
|
||||
sudo chmod 600 /usr/local/etc/ddns-updater.yaml; \
|
||||
echo "Config installed to /usr/local/etc/ddns-updater.yaml"; \
|
||||
else \
|
||||
echo "Config already exists at /usr/local/etc/ddns-updater.yaml"; \
|
||||
fi
|
||||
|
||||
# Set up systemd service (Linux)
|
||||
service-linux:
|
||||
@echo "Creating systemd service..."
|
||||
@echo "[Unit]\nDescription=DDNS Updater Service\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nExecStart=/usr/local/bin/$(APP_NAME) -config /etc/ddns-updater/config.yaml\nRestart=always\nRestartSec=10\nUser=root\nWorkingDirectory=/usr/local/bin\n\n[Install]\nWantedBy=multi-user.target" | sudo tee /etc/systemd/system/ddns-updater.service >/dev/null
|
||||
@echo "\nSystemd service created. Run these commands:"
|
||||
@echo " sudo systemctl daemon-reload"
|
||||
@echo " sudo systemctl enable ddns-updater"
|
||||
@echo " sudo systemctl start ddns-updater"
|
||||
@echo " sudo systemctl status ddns-updater"
|
||||
|
||||
# Set up launchd service (macOS)
|
||||
service-macos:
|
||||
@echo "Creating launchd plist..."
|
||||
@mkdir -p ~/Library/LaunchAgents
|
||||
@echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>com.ddns-updater</string>\n <key>ProgramArguments</key>\n <array>\n <string>/usr/local/bin/$(APP_NAME)</string>\n <string>-config</string>\n <string>/usr/local/etc/ddns-updater.yaml</string>\n </array>\n <key>RunAtLoad</key>\n <true/>\n <key>KeepAlive</key>\n <true/>\n <key>StandardOutPath</key>\n <string>/usr/local/var/log/ddns-updater.log</string>\n <key>StandardErrorPath</key>\n <string>/usr/local/var/log/ddns-updater.err</string>\n</dict>\n</plist>" > ~/Library/LaunchAgents/com.ddns-updater.plist
|
||||
@echo "\nLaunchd plist created. Run these commands:"
|
||||
@echo " launchctl load ~/Library/LaunchAgents/com.ddns-updater.plist"
|
||||
@echo " launchctl start com.ddns-updater"
|
||||
@echo "\nView logs with:"
|
||||
@echo " tail -f /usr/local/var/log/ddns-updater.log"
|
||||
Reference in New Issue
Block a user