Adding make reinstall
This commit is contained in:
90
Makefile
90
Makefile
@@ -24,7 +24,7 @@ else
|
||||
UDEV_RULE := /etc/udev/rules.d/99-streamdeck.rules
|
||||
endif
|
||||
|
||||
.PHONY: build build-helper build-init install install-helper install-watchdog uninstall uninstall-helper uninstall-watchdog udev
|
||||
.PHONY: build build-helper build-init install install-helper install-watchdog reinstall uninstall uninstall-helper uninstall-watchdog udev
|
||||
|
||||
# ── Build ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
@@ -135,6 +135,94 @@ else
|
||||
fi
|
||||
endif
|
||||
|
||||
# ── Reinstall ─────────────────────────────────────────────────────────────────
|
||||
# Refresh only the pieces that are already installed: binary, service unit,
|
||||
# helper, watchdog, and modules.yaml. Skips dependency/dotfile/symlink setup.
|
||||
# Use this after a code change to redeploy without going through install.sh.
|
||||
|
||||
ifeq ($(OS),Darwin)
|
||||
reinstall: build
|
||||
@echo " ━━━ streamdeck-go reinstall ━━━"
|
||||
@if [ -f $(BIN_DIR)/$(BINARY) ]; then \
|
||||
install -m 755 $(BINARY) $(BIN_DIR)/$(BINARY); \
|
||||
echo " ✓ binary → $(BIN_DIR)/$(BINARY)"; \
|
||||
else \
|
||||
echo " · binary not installed (skipping — run 'make install' first)"; \
|
||||
fi
|
||||
@if [ -f $(AGENT_PLIST) ]; then \
|
||||
LOG_PATH="$$HOME/Library/Logs/streamdeck-go.log"; \
|
||||
sed -e "s|STREAMDECK_BINARY_PATH|$(BIN_DIR)/$(BINARY)|g" \
|
||||
-e "s|STREAMDECK_LOG_PATH|$$LOG_PATH|g" \
|
||||
launchd/com.woodarddigital.streamdeck-go.plist > $(AGENT_PLIST); \
|
||||
launchctl unload $(AGENT_PLIST) 2>/dev/null || true; \
|
||||
launchctl load $(AGENT_PLIST); \
|
||||
echo " ✓ launchd agent reloaded"; \
|
||||
else \
|
||||
echo " · launchd agent not installed (skipping)"; \
|
||||
fi
|
||||
@if [ -f $(WATCHDOG_PLIST) ]; then \
|
||||
install -m 755 systemd/streamdeck-go-watchdog.sh $(BIN_DIR)/streamdeck-go-watchdog; \
|
||||
sed -e 's|STREAMDECK_WATCHDOG_PATH|$(BIN_DIR)/streamdeck-go-watchdog|' \
|
||||
-e 's|STREAMDECK_WATCHDOG_LOG_PATH|$(WATCHDOG_LOG)|g' \
|
||||
launchd/com.woodarddigital.streamdeck-go-watchdog.plist > $(WATCHDOG_PLIST); \
|
||||
launchctl bootout gui/$$(id -u)/com.woodarddigital.streamdeck-go-watchdog 2>/dev/null || true; \
|
||||
launchctl bootstrap gui/$$(id -u) $(WATCHDOG_PLIST); \
|
||||
echo " ✓ watchdog refreshed"; \
|
||||
else \
|
||||
echo " · watchdog not installed (skipping)"; \
|
||||
fi
|
||||
@if [ -f $(CONFIG_DIR)/modules.yaml ]; then \
|
||||
install -m 644 modules.example.yaml $(CONFIG_DIR)/modules.yaml; \
|
||||
echo " ✓ modules.yaml updated"; \
|
||||
else \
|
||||
echo " · config dir not set up (skipping modules.yaml)"; \
|
||||
fi
|
||||
else
|
||||
reinstall: build
|
||||
@echo " ━━━ streamdeck-go reinstall ━━━"
|
||||
@if [ -f $(BIN_DIR)/$(BINARY) ]; then \
|
||||
install -m 755 $(BINARY) $(BIN_DIR)/$(BINARY); \
|
||||
echo " ✓ binary → $(BIN_DIR)/$(BINARY)"; \
|
||||
else \
|
||||
echo " · binary not installed (skipping — run 'make install' first)"; \
|
||||
fi
|
||||
@if [ -f $(SYSTEMD_USER)/streamdeck-go.service ]; then \
|
||||
install -m 644 systemd/streamdeck-go.service $(SYSTEMD_USER)/streamdeck-go.service; \
|
||||
systemctl --user daemon-reload; \
|
||||
systemctl --user restart streamdeck-go.service; \
|
||||
echo " ✓ systemd unit refreshed and service restarted"; \
|
||||
else \
|
||||
echo " · systemd user service not installed (skipping)"; \
|
||||
fi
|
||||
@if [ -f $(SYS_BIN)/$(HELPER) ]; then \
|
||||
$(MAKE) -s build-helper; \
|
||||
sudo install -m 750 $(HELPER) $(SYS_BIN)/$(HELPER); \
|
||||
sudo chown root:$(GROUP) $(SYS_BIN)/$(HELPER); \
|
||||
sudo install -m 644 systemd/streamdeck-go-helper.service $(SYSTEMD_SYS)/streamdeck-go-helper.service; \
|
||||
sudo systemctl daemon-reload; \
|
||||
sudo systemctl restart streamdeck-go-helper.service; \
|
||||
echo " ✓ helper refreshed and restarted"; \
|
||||
else \
|
||||
echo " · helper not installed (skipping)"; \
|
||||
fi
|
||||
@if [ -f $(SYSTEMD_USER)/streamdeck-go-watchdog.timer ]; then \
|
||||
install -m 755 systemd/streamdeck-go-watchdog.sh $(BIN_DIR)/streamdeck-go-watchdog; \
|
||||
install -m 644 systemd/streamdeck-go-watchdog.service $(SYSTEMD_USER)/streamdeck-go-watchdog.service; \
|
||||
install -m 644 systemd/streamdeck-go-watchdog.timer $(SYSTEMD_USER)/streamdeck-go-watchdog.timer; \
|
||||
systemctl --user daemon-reload; \
|
||||
systemctl --user restart streamdeck-go-watchdog.timer; \
|
||||
echo " ✓ watchdog refreshed"; \
|
||||
else \
|
||||
echo " · watchdog not installed (skipping)"; \
|
||||
fi
|
||||
@if [ -f $(CONFIG_DIR)/modules.yaml ]; then \
|
||||
install -m 644 modules.example.yaml $(CONFIG_DIR)/modules.yaml; \
|
||||
echo " ✓ modules.yaml updated"; \
|
||||
else \
|
||||
echo " · config dir not set up (skipping modules.yaml)"; \
|
||||
fi
|
||||
endif
|
||||
|
||||
# ── Uninstall ─────────────────────────────────────────────────────────────────
|
||||
|
||||
ifeq ($(OS),Darwin)
|
||||
|
||||
27
README.md
27
README.md
@@ -233,6 +233,33 @@ first (respecting `$XDG_CONFIG_HOME`). The repo's `config.yaml` is gitignored.
|
||||
|
||||
---
|
||||
|
||||
### Updating — `make reinstall`
|
||||
|
||||
After pulling new code or editing a Go source file, refresh whatever's already
|
||||
deployed without going through the full installer:
|
||||
|
||||
```bash
|
||||
git pull
|
||||
make reinstall
|
||||
```
|
||||
|
||||
`reinstall` rebuilds the binary and refreshes only the pieces that are already
|
||||
installed:
|
||||
|
||||
| Component | Action when present |
|
||||
|-------------------|--------------------------------------------------------------------|
|
||||
| Main binary | rebuilt and copied into `~/.local/bin` (Linux) or `~/go/bin` (macOS) |
|
||||
| Service unit | systemd unit / launchd plist re-installed; service restarted |
|
||||
| Helper (Linux) | rebuilt, re-installed under `/usr/local/bin`, helper service restarted (sudo) |
|
||||
| Watchdog | script + unit/plist refreshed and timer restarted |
|
||||
| `modules.yaml` | re-copied from `modules.example.yaml` into the active config dir |
|
||||
|
||||
Anything not currently installed prints `· skipped` instead of failing.
|
||||
No dependency installs, no dotfile prompts, no symlink logic — that's still
|
||||
`make install`'s job.
|
||||
|
||||
---
|
||||
|
||||
### AUR (Arch Linux)
|
||||
|
||||
> AUR package coming soon. Until then, use `make install` above.
|
||||
|
||||
@@ -754,7 +754,7 @@ func loadImage(path string) (image.Image, error) {
|
||||
}
|
||||
|
||||
func loadSVG(path string) (image.Image, error) {
|
||||
icon, err := oksvg.ReadIcon(path, oksvg.WarnErrorMode)
|
||||
icon, err := oksvg.ReadIcon(path, oksvg.IgnoreErrorMode)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user