8258ed804a
Standards Compliance / Secret Scanning (push) Successful in 3s
Standards Compliance / License Header Validation (push) Successful in 4s
Standards Compliance / Repository Structure Validation (push) Successful in 5s
Standards Compliance / Coding Standards Check (push) Failing after 3s
Standards Compliance / Version Consistency Check (push) Successful in 3s
Standards Compliance / Workflow Configuration Check (push) Failing after 2s
Standards Compliance / Documentation Quality Check (push) Successful in 3s
Standards Compliance / README Completeness Check (push) Successful in 3s
Standards Compliance / Git Repository Hygiene (push) Successful in 2s
Standards Compliance / Script Integrity Validation (push) Successful in 4s
Standards Compliance / Line Length Check (push) Failing after 4s
Standards Compliance / File Naming Standards (push) Successful in 2s
Standards Compliance / Insecure Code Pattern Detection (push) Successful in 3s
Standards Compliance / Code Complexity Analysis (push) Successful in 3s
Standards Compliance / Code Duplication Detection (push) Successful in 4s
Standards Compliance / Dead Code Detection (push) Successful in 3s
Standards Compliance / File Size Limits (push) Successful in 2s
CodeQL Security Scanning / Analyze (javascript) (push) Failing after 1m9s
Standards Compliance / Binary File Detection (push) Successful in 4s
CodeQL Security Scanning / Analyze (actions) (push) Failing after 1m11s
Standards Compliance / TODO/FIXME Tracking (push) Successful in 3s
Standards Compliance / Dependency Vulnerability Scanning (push) Successful in 5s
Standards Compliance / Broken Link Detection (push) Successful in 5s
Standards Compliance / Unused Dependencies Check (push) Successful in 7s
Standards Compliance / API Documentation Coverage (push) Successful in 3s
Standards Compliance / Accessibility Check (push) Successful in 3s
Standards Compliance / Performance Metrics (push) Successful in 3s
Standards Compliance / Enterprise Readiness Check (push) Successful in 3s
Standards Compliance / Repository Health Check (push) Successful in 4s
Standards Compliance / Terraform Configuration Validation (push) Successful in 6s
CodeQL Security Scanning / Security Scan Summary (push) Successful in 1s
Standards Compliance / Compliance Summary (push) Successful in 1s
Repo Health / Access control (push) Successful in 1s
Repo Health / Release configuration (push) Failing after 3s
Repo Health / Scripts governance (push) Successful in 3s
Repo Health / Repository health (push) Failing after 3s
Auto-Update SHA Hash / Update SHA-256 Hash in updates.xml (release) Failing after 5s
All files renamed from mokocassiopeia to mokoonyx. Update server points to MokoOnyx repo. Bridge migration removed (clean standalone template). Version reset to 01.00.00. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
200 lines
8.9 KiB
Makefile
200 lines
8.9 KiB
Makefile
# Makefile for MokoOnyx Joomla Template
|
|
# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
#
|
|
# Build and validation powered by MokoStandards Enterprise API
|
|
# Install: composer install
|
|
|
|
# ==============================================================================
|
|
# CONFIGURATION
|
|
# ==============================================================================
|
|
|
|
EXTENSION_NAME := mokoonyx
|
|
EXTENSION_TYPE := template
|
|
EXTENSION_VERSION := $(shell grep -oP 'VERSION:\s*\K[0-9.]+' README.md 2>/dev/null || echo "0.0.0")
|
|
|
|
SRC_DIR := src
|
|
BUILD_DIR := build
|
|
DIST_DIR := dist
|
|
|
|
PHP := php
|
|
COMPOSER := composer
|
|
MOKO := vendor/bin/moko
|
|
|
|
# Colors
|
|
COLOR_RESET := \033[0m
|
|
COLOR_GREEN := \033[32m
|
|
COLOR_YELLOW := \033[33m
|
|
COLOR_BLUE := \033[34m
|
|
COLOR_RED := \033[31m
|
|
|
|
# ==============================================================================
|
|
# TARGETS
|
|
# ==============================================================================
|
|
|
|
.PHONY: help
|
|
help: ## Show this help message
|
|
@echo "$(COLOR_BLUE)╔════════════════════════════════════════════════════════════╗$(COLOR_RESET)"
|
|
@echo "$(COLOR_BLUE)║ MokoOnyx Template Build ║$(COLOR_RESET)"
|
|
@echo "$(COLOR_BLUE)╚════════════════════════════════════════════════════════════╝$(COLOR_RESET)"
|
|
@echo ""
|
|
@echo "Extension: $(EXTENSION_NAME) ($(EXTENSION_TYPE)) v$(EXTENSION_VERSION)"
|
|
@echo "Powered by: MokoStandards Enterprise API"
|
|
@echo ""
|
|
@echo "$(COLOR_GREEN)Available targets:$(COLOR_RESET)"
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(COLOR_BLUE)%-20s$(COLOR_RESET) %s\n", $$1, $$2}'
|
|
@echo ""
|
|
|
|
# ── Dependencies ──────────────────────────────────────────────────────────────
|
|
|
|
.PHONY: install-deps
|
|
install-deps: ## Install Composer dependencies (includes MokoStandards API)
|
|
@echo "$(COLOR_BLUE)Installing dependencies...$(COLOR_RESET)"
|
|
@$(COMPOSER) install
|
|
@echo "$(COLOR_GREEN)✓ Dependencies installed$(COLOR_RESET)"
|
|
|
|
.PHONY: update-deps
|
|
update-deps: ## Update Composer dependencies
|
|
@echo "$(COLOR_BLUE)Updating dependencies...$(COLOR_RESET)"
|
|
@$(COMPOSER) update
|
|
@echo "$(COLOR_GREEN)✓ Dependencies updated$(COLOR_RESET)"
|
|
|
|
# ── Validation (MokoStandards API) ────────────────────────────────────────────
|
|
|
|
.PHONY: check-moko
|
|
check-moko:
|
|
@if [ ! -f "$(MOKO)" ]; then \
|
|
echo "$(COLOR_RED)✗ MokoStandards CLI not found. Run: make install-deps$(COLOR_RESET)"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: lint
|
|
lint: check-moko ## PHP syntax check via MokoStandards
|
|
@echo "$(COLOR_BLUE)Running PHP syntax check...$(COLOR_RESET)"
|
|
@$(PHP) $(MOKO) check:syntax -- --path .
|
|
@echo "$(COLOR_GREEN)✓ PHP syntax OK$(COLOR_RESET)"
|
|
|
|
.PHONY: check-joomla
|
|
check-joomla: check-moko ## Validate Joomla manifest via MokoStandards
|
|
@echo "$(COLOR_BLUE)Validating Joomla manifest...$(COLOR_RESET)"
|
|
@$(PHP) $(MOKO) check:joomla -- --path .
|
|
@echo "$(COLOR_GREEN)✓ Joomla manifest valid$(COLOR_RESET)"
|
|
|
|
.PHONY: check-version
|
|
check-version: check-moko ## Verify version consistency across files
|
|
@echo "$(COLOR_BLUE)Checking version consistency...$(COLOR_RESET)"
|
|
@$(PHP) $(MOKO) check:version -- --path .
|
|
@echo "$(COLOR_GREEN)✓ Versions consistent$(COLOR_RESET)"
|
|
|
|
.PHONY: check-headers
|
|
check-headers: check-moko ## Check license headers on source files
|
|
@echo "$(COLOR_BLUE)Checking license headers...$(COLOR_RESET)"
|
|
@$(PHP) $(MOKO) check:headers -- --path .
|
|
@echo "$(COLOR_GREEN)✓ Headers OK$(COLOR_RESET)"
|
|
|
|
.PHONY: check-secrets
|
|
check-secrets: check-moko ## Scan for leaked credentials
|
|
@echo "$(COLOR_BLUE)Scanning for secrets...$(COLOR_RESET)"
|
|
@$(PHP) $(MOKO) check:secrets -- --path .
|
|
@echo "$(COLOR_GREEN)✓ No secrets found$(COLOR_RESET)"
|
|
|
|
.PHONY: check-xml
|
|
check-xml: check-moko ## Validate XML files are well-formed
|
|
@echo "$(COLOR_BLUE)Checking XML files...$(COLOR_RESET)"
|
|
@$(PHP) $(MOKO) check:xml -- --path .
|
|
@echo "$(COLOR_GREEN)✓ XML well-formed$(COLOR_RESET)"
|
|
|
|
.PHONY: validate
|
|
validate: lint check-joomla check-version check-xml check-headers check-secrets ## Run all MokoStandards validation checks
|
|
@echo "$(COLOR_GREEN)✓ All validation checks passed$(COLOR_RESET)"
|
|
|
|
.PHONY: health
|
|
health: check-moko ## Full repository health check via MokoStandards
|
|
@echo "$(COLOR_BLUE)Running full health check...$(COLOR_RESET)"
|
|
@$(PHP) $(MOKO) health -- --path .
|
|
|
|
# ── Build ─────────────────────────────────────────────────────────────────────
|
|
|
|
.PHONY: clean
|
|
clean: ## Clean build artifacts
|
|
@echo "$(COLOR_BLUE)Cleaning build artifacts...$(COLOR_RESET)"
|
|
@rm -rf $(BUILD_DIR) $(DIST_DIR)
|
|
@echo "$(COLOR_GREEN)✓ Build artifacts cleaned$(COLOR_RESET)"
|
|
|
|
.PHONY: build
|
|
build: clean ## Build template installable ZIP from src/
|
|
@echo "$(COLOR_BLUE)Building $(EXTENSION_NAME) v$(EXTENSION_VERSION)...$(COLOR_RESET)"
|
|
@mkdir -p $(BUILD_DIR)/package $(DIST_DIR)
|
|
@cp -r $(SRC_DIR)/* $(BUILD_DIR)/package/
|
|
@cd $(BUILD_DIR)/package && \
|
|
if command -v zip >/dev/null 2>&1; then \
|
|
zip -r "../../$(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip" .; \
|
|
elif command -v pwsh >/dev/null 2>&1; then \
|
|
pwsh -Command "Compress-Archive -Path '*' -DestinationPath '../../$(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip' -Force"; \
|
|
elif command -v powershell >/dev/null 2>&1; then \
|
|
powershell -Command "Compress-Archive -Path '*' -DestinationPath '../../$(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip' -Force"; \
|
|
else \
|
|
echo "$(COLOR_RED)✗ No zip tool found (zip, pwsh, powershell)$(COLOR_RESET)"; \
|
|
exit 1; \
|
|
fi
|
|
@echo "$(COLOR_GREEN)✓ Package: $(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip$(COLOR_RESET)"
|
|
|
|
.PHONY: build-beta
|
|
build-beta: clean ## Build beta release ZIP
|
|
@echo "$(COLOR_BLUE)Building $(EXTENSION_NAME) v$(EXTENSION_VERSION)-beta...$(COLOR_RESET)"
|
|
@mkdir -p $(BUILD_DIR)/package $(DIST_DIR)
|
|
@cp -r $(SRC_DIR)/* $(BUILD_DIR)/package/
|
|
@cd $(BUILD_DIR)/package && \
|
|
if command -v zip >/dev/null 2>&1; then \
|
|
zip -r "../../$(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION)-beta.zip" .; \
|
|
elif command -v pwsh >/dev/null 2>&1; then \
|
|
pwsh -Command "Compress-Archive -Path '*' -DestinationPath '../../$(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION)-beta.zip' -Force"; \
|
|
elif command -v powershell >/dev/null 2>&1; then \
|
|
powershell -Command "Compress-Archive -Path '*' -DestinationPath '../../$(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION)-beta.zip' -Force"; \
|
|
else \
|
|
echo "$(COLOR_RED)✗ No zip tool found$(COLOR_RESET)"; \
|
|
exit 1; \
|
|
fi
|
|
@echo "$(COLOR_GREEN)✓ Package: $(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION)-beta.zip$(COLOR_RESET)"
|
|
|
|
.PHONY: checksum
|
|
checksum: ## Generate SHA-256 checksums for dist packages
|
|
@echo "$(COLOR_BLUE)Generating checksums...$(COLOR_RESET)"
|
|
@for f in $(DIST_DIR)/*.zip; do \
|
|
sha256sum "$$f" | tee "$${f}.sha256"; \
|
|
done
|
|
@echo "$(COLOR_GREEN)✓ Checksums generated$(COLOR_RESET)"
|
|
|
|
# ── Release ───────────────────────────────────────────────────────────────────
|
|
|
|
.PHONY: release
|
|
release: validate build checksum ## Full release pipeline (validate + build + checksum)
|
|
@echo "$(COLOR_GREEN)✓ Release package ready$(COLOR_RESET)"
|
|
@echo ""
|
|
@echo "$(COLOR_BLUE)Next steps:$(COLOR_RESET)"
|
|
@echo " 1. Tag: git tag $(EXTENSION_VERSION)"
|
|
@echo " 2. Push: git push origin --tags"
|
|
@echo " 3. Create Gitea release and attach $(DIST_DIR)/$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip"
|
|
@echo ""
|
|
|
|
# ── Info ──────────────────────────────────────────────────────────────────────
|
|
|
|
.PHONY: version
|
|
version: ## Display version and extension info
|
|
@echo "$(COLOR_BLUE)Extension Information:$(COLOR_RESET)"
|
|
@echo " Name: $(EXTENSION_NAME)"
|
|
@echo " Type: $(EXTENSION_TYPE)"
|
|
@echo " Version: $(EXTENSION_VERSION)"
|
|
|
|
.PHONY: security-check
|
|
security-check: ## Run Composer security audit
|
|
@echo "$(COLOR_BLUE)Running security checks...$(COLOR_RESET)"
|
|
@$(COMPOSER) audit
|
|
@echo "$(COLOR_GREEN)✓ Security check complete$(COLOR_RESET)"
|
|
|
|
.PHONY: all
|
|
all: install-deps validate build checksum ## Full pipeline: deps → validate → build → checksum
|
|
@echo "$(COLOR_GREEN)✓ Complete build pipeline finished$(COLOR_RESET)"
|
|
|
|
.DEFAULT_GOAL := help
|