74 lines
2.6 KiB
Makefile
74 lines
2.6 KiB
Makefile
# Configuration defaults (please use Makefile.env to override these, see Makefile.env.example)
|
|
LIGHTBAR_HOST = 192.168.13.12
|
|
LIGHTBAR_URL = http://$(LIGHTBAR_HOST)
|
|
WEBREPL_CLI = webrepl_cli.py
|
|
WEBREPL_HOST = $(LIGHTBAR_HOST)
|
|
WEBREPL_PASSWORD = secret-pw
|
|
REPL_TTY_PATH = /dev/ttyUSB0
|
|
|
|
# Include local config
|
|
-include Makefile.env
|
|
|
|
# Directory for saving timestamps of when files were last uploaded
|
|
UPLOAD_CACHE_DIR := .upload_cache
|
|
|
|
# Auto-detect all .py files that should be uploaded
|
|
SRC_UPLOAD_TARGETS := $(patsubst %.py,$(UPLOAD_CACHE_DIR)/%.py.timestamp,$(wildcard src/*.py src/**/*.py src/**/**/*.py))
|
|
LIB_UPLOAD_TARGETS := $(patsubst %.py,$(UPLOAD_CACHE_DIR)/%.py.timestamp,$(wildcard lib/*.py))
|
|
|
|
# Default target
|
|
.DEFAULT_GOAL := upload-reboot
|
|
|
|
# Make password variable available to the environment so that it doesn't appear in the output
|
|
export WEBREPL_PASSWORD
|
|
|
|
# -- Device control
|
|
|
|
# Reboot the ESP32 via REST API
|
|
.PHONY: reboot
|
|
reboot:
|
|
curl -X POST $(LIGHTBAR_URL)/api/reboot
|
|
|
|
# Shutdown the HTTP server via REST API, allowing access to the WebREPL
|
|
.PHONY: shutdown
|
|
shutdown:
|
|
curl -X POST $(LIGHTBAR_URL)/api/shutdown
|
|
|
|
# -- Deployment
|
|
|
|
# Upload all files (or only /src, or only /lib) to the ESP32 via WebREPL
|
|
.PHONY: upload upload-all upload-src upload-lib
|
|
upload: upload-all
|
|
upload-all: upload-src upload-lib
|
|
upload-src: $(SRC_UPLOAD_TARGETS)
|
|
upload-lib: $(LIB_UPLOAD_TARGETS)
|
|
|
|
# Upload all files via WebREPL and reboot
|
|
.PHONY: upload-reboot
|
|
upload-reboot: upload-all reboot
|
|
|
|
# Pattern rules for uploading files to the ESP32 via WebREPL if they were changed since the last upload
|
|
$(UPLOAD_CACHE_DIR)/%.py.timestamp :: %.py
|
|
$(WEBREPL_CLI) -p $$WEBREPL_PASSWORD $*.py $(WEBREPL_HOST):/$(subst src/,,$*).py >/dev/null
|
|
@mkdir -p $(@D) && touch $@
|
|
|
|
# Create necessary directories on the ESP32 filesystem via REPL (not WebREPL!)
|
|
# TODO: This cannot be done via webrepl_cli.py, so you either need to use REPL over USB, or create the directories manually
|
|
.PHONY: repl-create-directories
|
|
repl-create-directories:
|
|
@echo "(Note: If the directory already exists, rshell will print \"Unable to create [DIR]\")"
|
|
@echo
|
|
rshell -p $(REPL_TTY_PATH) mkdir /pyboard/lib /pyboard/lightbar /pyboard/lightbar/endpoints
|
|
|
|
# Clear the .upload_cache directory that contains the last upload timestamps
|
|
.PHONY: clear-upload-cache clear-upload-cache-src
|
|
clear-upload-cache-all:
|
|
rm -rf $(UPLOAD_CACHE_DIR)
|
|
clear-upload-cache-src:
|
|
rm -rf $(UPLOAD_CACHE_DIR)/src/
|
|
|
|
# Clear the upload timestamp cache and re-upload all files
|
|
.PHONY: reupload-all reupload-src
|
|
reupload-all: clear-upload-cache-all upload-all
|
|
reupload-src: clear-upload-cache-src upload-src
|