mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
77 lines
2.8 KiB
Makefile
77 lines
2.8 KiB
Makefile
SLEEP_INTERVAL ?= 32
|
|
SCREEN_WIDTH ?= $(shell system_profiler -json SPDisplaysDataType 2>/dev/null | jq -r '.. | objects | select(.spdisplays_main) | ._spdisplays_pixels | split(" ")[0]')
|
|
SCREEN_HEIGHT ?= $(shell system_profiler -json SPDisplaysDataType 2>/dev/null | jq -r '.. | objects | select(.spdisplays_main) | ._spdisplays_pixels | split(" ")[2]')
|
|
PROJECT ?= bun
|
|
PACKAGE_NAME ?= bun-cli
|
|
RUN_COUNT ?= 128
|
|
ENDPOINT ?= /
|
|
|
|
ifeq ($(PROJECT),bun)
|
|
PACKAGE_NAME := bun-cli
|
|
endif
|
|
|
|
ifeq ($(PROJECT),next)
|
|
PACKAGE_NAME := next
|
|
endif
|
|
|
|
generate:
|
|
@killall -9 bun next node || echo ""
|
|
PROJECT=$(PROJECT) SCREEN_WIDTH=$(SCREEN_WIDTH) SCREEN_HEIGHT=$(SCREEN_HEIGHT) ENDPOINT=$(ENDPOINT) node browser.js
|
|
|
|
generate-css-in-js:
|
|
@killall -9 bun next node || echo ""
|
|
PROJECT=$(PROJECT) SCREEN_WIDTH=$(SCREEN_WIDTH) SCREEN_HEIGHT=$(SCREEN_HEIGHT) ENDPOINT=/css-in-js node browser.js
|
|
loop:
|
|
cp src/colors.css.0 src/colors.css
|
|
sleep 3
|
|
osascript -e 'tell application "System Events" to tell process "Chromium"' \
|
|
-e 'set frontmost to true' \
|
|
-e 'if windows is not {} then perform action "AXRaise" of item 1 of windows' \
|
|
-e 'end tell'
|
|
sleep 0.5
|
|
cd src; zig run -Drelease-fast ../color-looper.zig -- ./colors.css:0 $(SLEEP_INTERVAL)
|
|
cp src/colors.css.blob $(PROJECT)/colors.css.blob
|
|
|
|
loop-emotion:
|
|
cp src/css-in-js-styles.0 src/css-in-js-styles.tsx
|
|
sleep 3
|
|
osascript -e 'tell application "System Events" to tell process "Chromium"' \
|
|
-e 'set frontmost to true' \
|
|
-e 'if windows is not {} then perform action "AXRaise" of item 1 of windows' \
|
|
-e 'end tell'
|
|
sleep 0.5
|
|
cd src; zig run -Drelease-fast ../color-looper.emotion.zig -- ./css-in-js-styles.tsx:0 $(SLEEP_INTERVAL)
|
|
cp src/css-in-js-styles.tsx.blob $(PROJECT)/css-in-js-styles.blob
|
|
|
|
process_video:
|
|
rm -rf $(FRAMES_DIR); mkdir -p $(FRAMES_DIR); ffmpeg -i src/colors.css.mov -vf fps=120,format=gray $(FRAMES_DIR)/%d.tif
|
|
|
|
FRAMES_DIR ?= $(shell mkdir -p ./$(PROJECT)/frames; realpath ./$(PROJECT)/frames)
|
|
|
|
TIF_FILES := $(wildcard $(FRAMES_DIR)/*.tif)
|
|
TXT_FILES := $(wildcard $(FRAMES_DIR)/*.txt)
|
|
|
|
OBJ_FILES := $(patsubst $(SRC_DIR)/%.tif,$(OBJ_DIR)/%.txt,$(TIF_FILES))
|
|
TRIM_FILES := $(patsubst $(SRC_DIR)/%.txt,$(OBJ_DIR)/%.trim,$(TXT_FILES))
|
|
|
|
frames: $(OBJ_FILES)
|
|
|
|
|
|
$(FRAMES_DIR)/%.txt: $(FRAMES_DIR)/%.tif
|
|
tesseract -l eng $< $@
|
|
|
|
trim: $(TRIM_FILES) cleanup print
|
|
|
|
|
|
|
|
$(FRAMES_DIR)/%.trim: $(FRAMES_DIR)/%.txt
|
|
(grep "Ran:" $< || echo "\n") >> $(PROJECT)/frames.all
|
|
|
|
cleanup:
|
|
sed 's/^Ran: *//' $(PROJECT)/frames.all | tr -d ' ' | sort | uniq > $(PROJECT)/frames.all.clean
|
|
|
|
print:
|
|
PACKAGE_NAME=$(PACKAGE_NAME) SLEEP_INTERVAL=$(SLEEP_INTERVAL) PROJECT=$(PROJECT) OUTFILE=timings/$(PACKAGE_NAME) node read-frames.js
|
|
|
|
print-emotion:
|
|
PACKAGE_NAME=$(PACKAGE_NAME) SLEEP_INTERVAL=$(SLEEP_INTERVAL) PROJECT=$(PROJECT) OUTFILE=timings/emotion_$(PACKAGE_NAME) node read-frames.js
|