Initial Push
This commit is contained in:
99
Makefile
Normal file
99
Makefile
Normal file
@@ -0,0 +1,99 @@
|
||||
BINARY := streamdeck-go
|
||||
HELPER := streamdeck-helper
|
||||
PREFIX ?= $(HOME)/.local
|
||||
BIN_DIR := $(PREFIX)/bin
|
||||
SYS_BIN := /usr/local/bin
|
||||
CONFIG_DIR := $(HOME)/.config/streamdeck-go
|
||||
SYSTEMD_USER := $(HOME)/.config/systemd/user
|
||||
SYSTEMD_SYS := /etc/systemd/system
|
||||
ETC_DIR := /etc/streamdeck-go
|
||||
UDEV_RULE := /etc/udev/rules.d/99-streamdeck.rules
|
||||
GROUP := streamdeck
|
||||
|
||||
.PHONY: build build-helper install install-helper uninstall udev
|
||||
|
||||
# ── Build ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
build:
|
||||
go build -o $(BINARY) ./cmd/streamdeck/
|
||||
|
||||
build-helper:
|
||||
go build -o $(HELPER) ./cmd/streamdeck-helper/
|
||||
|
||||
# ── Install ───────────────────────────────────────────────────────────────────
|
||||
|
||||
install: build udev _install-user
|
||||
@echo ""
|
||||
@echo "Done. Edit $(CONFIG_DIR)/config.yaml to configure your keys."
|
||||
@echo "To enable privileged commands (suspend, reboot, etc): make install-helper"
|
||||
|
||||
_install-user:
|
||||
install -Dm755 $(BINARY) $(BIN_DIR)/$(BINARY)
|
||||
mkdir -p $(CONFIG_DIR)/icons
|
||||
@if [ ! -f $(CONFIG_DIR)/config.yaml ]; then \
|
||||
install -Dm644 config.example.yaml $(CONFIG_DIR)/config.yaml; \
|
||||
echo "Default config written to $(CONFIG_DIR)/config.yaml"; \
|
||||
else \
|
||||
echo "Config already exists — not overwriting"; \
|
||||
fi
|
||||
install -Dm644 systemd/streamdeck-go.service $(SYSTEMD_USER)/streamdeck-go.service
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable --now streamdeck-go.service
|
||||
|
||||
# Install the privileged helper (requires sudo).
|
||||
# Creates a 'streamdeck' group, adds the current user to it, installs the
|
||||
# helper binary as root, and enables it as a system service.
|
||||
install-helper: build-helper
|
||||
# Create group and add current user.
|
||||
@if ! getent group $(GROUP) > /dev/null; then \
|
||||
sudo groupadd $(GROUP); \
|
||||
echo "Created group '$(GROUP)'"; \
|
||||
fi
|
||||
sudo usermod -aG $(GROUP) $(USER)
|
||||
# Install helper binary (owned root, not world-executable by others).
|
||||
sudo install -Dm750 $(HELPER) $(SYS_BIN)/$(HELPER)
|
||||
sudo chown root:$(GROUP) $(SYS_BIN)/$(HELPER)
|
||||
# Install whitelist config (root-owned, not world-writable).
|
||||
sudo mkdir -p $(ETC_DIR)
|
||||
@if [ ! -f $(ETC_DIR)/privileged.yaml ]; then \
|
||||
sudo install -Dm640 config/privileged.example.yaml $(ETC_DIR)/privileged.yaml; \
|
||||
sudo chown root:$(GROUP) $(ETC_DIR)/privileged.yaml; \
|
||||
echo "Whitelist written to $(ETC_DIR)/privileged.yaml"; \
|
||||
else \
|
||||
echo "Whitelist already exists — not overwriting"; \
|
||||
fi
|
||||
# Install and enable system service.
|
||||
sudo install -Dm644 systemd/streamdeck-go-helper.service $(SYSTEMD_SYS)/streamdeck-go-helper.service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now streamdeck-go-helper.service
|
||||
@echo ""
|
||||
@echo "Helper installed. Edit $(ETC_DIR)/privileged.yaml (as root) to add commands."
|
||||
@echo "NOTE: log out and back in for group membership to take effect,"
|
||||
@echo " or run: newgrp $(GROUP)"
|
||||
|
||||
udev:
|
||||
@if [ ! -f $(UDEV_RULE) ]; then \
|
||||
echo 'KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", MODE="0666"' \
|
||||
| sudo tee $(UDEV_RULE); \
|
||||
sudo udevadm control --reload; \
|
||||
sudo udevadm trigger; \
|
||||
echo "udev rule installed."; \
|
||||
else \
|
||||
echo "udev rule already exists."; \
|
||||
fi
|
||||
|
||||
# ── Uninstall ─────────────────────────────────────────────────────────────────
|
||||
|
||||
uninstall:
|
||||
systemctl --user disable --now streamdeck-go.service || true
|
||||
rm -f $(BIN_DIR)/$(BINARY)
|
||||
rm -f $(SYSTEMD_USER)/streamdeck-go.service
|
||||
systemctl --user daemon-reload
|
||||
@echo "Uninstalled. Config at $(CONFIG_DIR) preserved."
|
||||
|
||||
uninstall-helper:
|
||||
sudo systemctl disable --now streamdeck-go-helper.service || true
|
||||
sudo rm -f $(SYS_BIN)/$(HELPER)
|
||||
sudo rm -f $(SYSTEMD_SYS)/streamdeck-go-helper.service
|
||||
sudo systemctl daemon-reload
|
||||
@echo "Helper uninstalled. Whitelist at $(ETC_DIR)/privileged.yaml preserved."
|
||||
Reference in New Issue
Block a user