66 lines
2.1 KiB
Makefile
66 lines
2.1 KiB
Makefile
.PHONY: frontend build dev-frontend dev-backend dev-proxy dev-transcode lint clean jellyfin-web-bundle migrate-continuum-check
|
|
|
|
GIT_COMMON_DIR := $(strip $(shell git rev-parse --git-common-dir 2>/dev/null))
|
|
MAIN_CHECKOUT_ROOT := $(if $(GIT_COMMON_DIR),$(abspath $(GIT_COMMON_DIR)/..))
|
|
SHARED_MAKEFILE_LOCAL := $(if $(GIT_COMMON_DIR),$(abspath $(GIT_COMMON_DIR)/../Makefile.local))
|
|
DEFAULT_PLUGIN_SDK_DIR := $(abspath ../silo-plugin-sdk)
|
|
SHARED_PLUGIN_SDK_DIR := $(if $(MAIN_CHECKOUT_ROOT),$(abspath $(MAIN_CHECKOUT_ROOT)/../silo-plugin-sdk))
|
|
|
|
ifneq ($(wildcard $(DEFAULT_PLUGIN_SDK_DIR)),)
|
|
DEV_PLUGIN_SDK_DIR ?= $(DEFAULT_PLUGIN_SDK_DIR)
|
|
else ifneq ($(wildcard $(SHARED_PLUGIN_SDK_DIR)),)
|
|
DEV_PLUGIN_SDK_DIR ?= $(SHARED_PLUGIN_SDK_DIR)
|
|
endif
|
|
|
|
JELLYFIN_WEB_OUTPUT_DIR ?= third_party/jellyfin-web
|
|
|
|
# Build the frontend (requires pnpm)
|
|
frontend:
|
|
cd web && pnpm install --frozen-lockfile && pnpm run build
|
|
|
|
# Build the Go binary (depends on frontend)
|
|
build: frontend
|
|
go build -o silo ./cmd/silo/
|
|
|
|
# Run frontend dev server (proxies API to localhost:8080)
|
|
dev-frontend:
|
|
cd web && pnpm run dev
|
|
|
|
# Run the Go backend (integrated mode)
|
|
dev-backend:
|
|
go run ./cmd/silo/
|
|
|
|
# Run a proxy node (stateless stream proxy, no DB required)
|
|
dev-proxy:
|
|
go run ./cmd/silo/ --mode=proxy
|
|
|
|
# Run a transcode node (HLS transcode worker, no DB required)
|
|
dev-transcode:
|
|
go run ./cmd/silo/ --mode=transcode
|
|
|
|
# Lint Go and frontend code
|
|
lint:
|
|
golangci-lint run
|
|
cd web && pnpm run lint
|
|
|
|
# Fetch and build the pinned Jellyfin Web bundle
|
|
jellyfin-web-bundle:
|
|
JELLYFIN_WEB_OUTPUT_DIR=$(JELLYFIN_WEB_OUTPUT_DIR) scripts/fetch-jellyfin-web.sh
|
|
|
|
# Read-only preflight for Continuum Docker installs moving to Silo.
|
|
migrate-continuum-check:
|
|
scripts/migrate-continuum-docker.sh check
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
rm -rf web/dist web/node_modules silo
|
|
|
|
# Include developer-specific targets (gitignored, optional).
|
|
# In Git worktrees, fall back to the main checkout's Makefile.local so custom
|
|
# targets like dev-deploy work without per-worktree symlinks or copies.
|
|
ifneq ($(wildcard Makefile.local),)
|
|
include Makefile.local
|
|
else ifneq ($(wildcard $(SHARED_MAKEFILE_LOCAL)),)
|
|
include $(SHARED_MAKEFILE_LOCAL)
|
|
endif
|