This repository was archived by the owner on Feb 4, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
95 lines (73 loc) · 2.9 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# Configuration settings
PLUGIN_NAME ?= $(shell basename $(PWD))
PLUGIN_FILENAME ?= $(shell basename $(PWD) | tr '[:upper:]' '[:lower:]' )
PLUGIN_VERSION ?= 0.3.0
# Source files
TS_FILES := $(shell find src -name *.ts)
TSX_FILES := $(shell find src -name *.tsx)
SRC_FILES := $(TS_FILES) $(TSX_FILES) plugin.toml
# Output files to include in tar.gz
TAR_FILES := dist plugin.toml bin
# Crankshaft
CRANKSHAFT_DATA_PATH ?= .var/app/space.crankshaft.Crankshaft/data/crankshaft
# SSH Configuration
SSH_USER ?= gamer
SSH_HOST ?= 192.168.0.176
SSH_MOUNT_PATH ?= /tmp/remote
SSH_CRANKSHAFT_DATA_PATH ?= /home/$(SSH_USER)/$(CRANKSHAFT_DATA_PATH)
# Default target is to build and restart crankshaft
.PHONY: default
default: build restart
.PHONY: build
build: build/$(PLUGIN_FILENAME)-v$(PLUGIN_VERSION).tar.gz ## Builds the project
build/$(PLUGIN_FILENAME)-v$(PLUGIN_VERSION).tar.gz: dist
mkdir -p build/$(PLUGIN_NAME)
cp -R $(TAR_FILES) build/$(PLUGIN_NAME)
cd build && tar -czvf $(PLUGIN_FILENAME)-v$(PLUGIN_VERSION).tar.gz $(PLUGIN_NAME)
dist: $(SRC_FILES) node_modules
npm run build
.PHONY: watch
watch: ## Build and watch for source code changes
npm run build-watch
package-lock.json: package.json
npm i
node_modules: node_modules/installed ## Install dependencies
node_modules/installed: package-lock.json
npm ci
touch $@
.PHONY: restart
restart: ## Restart crankshaft
ssh $(SSH_USER)@$(SSH_HOST) systemctl --user restart crankshaft
.PHONY: debug
debug: ## Show Makefile variables
@echo "Source Files: $(SRC_FILES)"
.PHONY: cef-debug
cef-debug: ## Open Chrome CEF debugging. Add a network target: localhost:8080
chromium "chrome://inspect/#devices"
.PHONY: tunnel
tunnel: ## Create an SSH tunnel to remote Steam Client (accessible on localhost:4040)
ssh $(SSH_USER)@$(SSH_HOST) -N -f -L 4040:localhost:8080
$(SSH_MOUNT_PATH)/.mounted:
mkdir -p $(SSH_MOUNT_PATH)
sshfs -o default_permissions $(SSH_USER)@$(SSH_HOST):$(SSH_CRANKSHAFT_DATA_PATH) $(SSH_MOUNT_PATH)
touch $(SSH_MOUNT_PATH)/.mounted
$(MAKE) tunnel
# Cleans and transfers the project
$(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME): $(SRC_FILES)
rm -rf $(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME)
mkdir -p $(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME)
cp -r $(TAR_FILES) $(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME)
# Cleans and transfers the project
#$(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME): $(SRC_FILES)
# rsync -avh $(PWD)/ $(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME) --delete
.PHONY: remote-restart
remote-restart: ## Restart remote crankshaft
ssh $(SSH_USER)@$(SSH_HOST) systemctl --user restart crankshaft
.PHONY: remote-update
remote-update: dist $(SSH_MOUNT_PATH)/.mounted $(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME) remote-restart
.PHONY: clean
clean: ## Clean all build artifacts
rm -rf build dist
.PHONY: help
help: ## Show this help message
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'