build: add Makefile with build and check targets for Chrome Web Store package
This commit is contained in:
@@ -8,6 +8,7 @@ emmy/
|
||||
exports/
|
||||
data/
|
||||
test_data/
|
||||
dist/
|
||||
*.zip
|
||||
*.crx
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
# ==============================================================================
|
||||
# Makefile for Brightwheel Exporter Chrome Extension
|
||||
# ==============================================================================
|
||||
|
||||
SHELL := /usr/bin/env bash
|
||||
|
||||
# Extract version from manifest.json
|
||||
VERSION := $(shell node -p "require('./manifest.json').version" 2>/dev/null || echo "1.0.0")
|
||||
DIST_DIR := dist
|
||||
ZIP_NAME := brightwheel-exporter-v$(VERSION).zip
|
||||
ZIP_PATH := $(DIST_DIR)/$(ZIP_NAME)
|
||||
|
||||
.PHONY: all build zip check clean help
|
||||
|
||||
all: build
|
||||
|
||||
## help: Display this help message
|
||||
help:
|
||||
@echo "Available commands:"
|
||||
@echo " make build (or make zip) - Build the Chrome Web Store production ZIP package"
|
||||
@echo " make check - Verify JavaScript syntax and manifest validity"
|
||||
@echo " make clean - Remove the dist directory and build artifacts"
|
||||
|
||||
## check: Verify JavaScript syntax and manifest validity
|
||||
check:
|
||||
@echo "🔍 Validating manifest.json and JavaScript files..."
|
||||
@node -e "const m = JSON.parse(require('fs').readFileSync('manifest.json')); if (m.manifest_version !== 3) process.exit(1); console.log('✅ Manifest v' + m.version + ' OK');"
|
||||
@find scripts dashboard popup -name "*.js" | while read -r jsfile; do \
|
||||
node --check "$$jsfile" && echo " ✓ $$jsfile valid"; \
|
||||
done
|
||||
@echo "✅ All syntax checks passed!"
|
||||
|
||||
## build: Package the extension into a clean production ZIP for Chrome Web Store
|
||||
build: check
|
||||
@echo "📦 Packaging Chrome Extension (v$(VERSION))..."
|
||||
@mkdir -p $(DIST_DIR)
|
||||
@rm -f $(ZIP_PATH)
|
||||
@zip -r $(ZIP_PATH) . \
|
||||
-x "*.git*" \
|
||||
-x ".githooks/*" \
|
||||
-x ".github/*" \
|
||||
-x "$(DIST_DIR)/*" \
|
||||
-x "emmy/*" \
|
||||
-x "exports/*" \
|
||||
-x "data/*" \
|
||||
-x "test_data/*" \
|
||||
-x "Makefile" \
|
||||
-x "*.md" \
|
||||
-x "LICENSE" \
|
||||
-x "*.zip" \
|
||||
-x "*.tar.gz" \
|
||||
-x "*.tmp" \
|
||||
-x ".DS_Store" \
|
||||
-x "*/.DS_Store"
|
||||
@echo ""
|
||||
@echo "🎉 Production ZIP created successfully!"
|
||||
@echo "📍 File location: $(ZIP_PATH)"
|
||||
@echo ""
|
||||
@echo "📋 ZIP Contents:"
|
||||
@unzip -l $(ZIP_PATH)
|
||||
|
||||
## zip: Alias for build
|
||||
zip: build
|
||||
|
||||
## clean: Clean build output directory
|
||||
clean:
|
||||
@echo "🧹 Cleaning $(DIST_DIR)..."
|
||||
@rm -rf $(DIST_DIR)
|
||||
@echo "Done."
|
||||
Reference in New Issue
Block a user