diff --git a/.mokogitea/workflows/pre-release.yml b/.mokogitea/workflows/pre-release.yml index 780150d..b341df8 100644 --- a/.mokogitea/workflows/pre-release.yml +++ b/.mokogitea/workflows/pre-release.yml @@ -7,7 +7,7 @@ # INGROUP: moko-platform.Release # REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform # PATH: /templates/workflows/universal/pre-release.yml.template -# VERSION: 05.01.00 +# VERSION: 09.23.00 # BRIEF: Manual pre-release -- builds dev/alpha/beta/rc packages from any branch name: "Universal: Pre-Release" @@ -17,10 +17,6 @@ on: types: [closed] branches: - dev - pull_request_target: - types: [synchronize, opened, reopened] - branches: - - main workflow_dispatch: inputs: stability: @@ -47,8 +43,7 @@ jobs: runs-on: release if: >- github.event_name == 'workflow_dispatch' || - (github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev') || - (github.event_name == 'pull_request_target' && github.event.pull_request.base.ref == 'main') + (github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev') steps: - name: Checkout @@ -56,7 +51,6 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.MOKOGITEA_TOKEN }} - ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || '' }} - name: Setup moko-platform tools env: @@ -66,7 +60,7 @@ jobs: if ! command -v composer &> /dev/null; then sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer >/dev/null 2>&1 fi - # Always fetch latest CLI tools — never use stale cache from previous runs + # Always fetch latest CLI tools — never use stale cache from previous runs rm -rf /tmp/moko-platform-api git clone --depth 1 --branch main --quiet \ "https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git" \ @@ -82,37 +76,31 @@ jobs: - name: Resolve metadata and bump version id: meta run: | - # Auto-detect stability: RC for PRs targeting main, else use input or default to development - if [ "${{ github.event_name }}" = "pull_request_target" ] && [ "${{ github.event.pull_request.base.ref }}" = "main" ]; then - STABILITY="release-candidate" - else - STABILITY="${{ inputs.stability || 'development' }}" - fi + STABILITY="${{ inputs.stability || 'development' }}" case "$STABILITY" in - development) SUFFIX="-dev"; TAG="development" ;; - alpha) SUFFIX="-alpha"; TAG="alpha" ;; - beta) SUFFIX="-beta"; TAG="beta" ;; - release-candidate) SUFFIX="-rc"; TAG="release-candidate" ;; + development) TAG="development" ;; + alpha) TAG="alpha" ;; + beta) TAG="beta" ;; + release-candidate) TAG="release-candidate" ;; esac - # Read current version (bump already handled by push workflow) - VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null) - [ -z "$VERSION" ] && VERSION="00.00.01" + # Bump version: patch for dev/alpha/beta, minor for RC + case "$STABILITY" in + release-candidate) php ${MOKO_CLI}/version_bump.php --path . --minor 2>/dev/null || true ;; + *) php ${MOKO_CLI}/version_bump.php --path . 2>/dev/null || true ;; + esac - # Strip any existing suffix from version before applying stability + # Set stability suffix and fix consistency + VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null || echo '00.00.01') VERSION=$(echo "$VERSION" | sed 's/-\(dev\|alpha\|beta\|rc\)$//') - php ${MOKO_CLI}/version_set_platform.php \ --path . --version "$VERSION" --branch "${{ github.ref_name }}" --stability "$STABILITY" 2>/dev/null || true - - # Verify version consistency across all files php ${MOKO_CLI}/version_check.php --path . --fix 2>/dev/null || true - # Update VERSION variable with suffix - if [ -n "$SUFFIX" ]; then - VERSION="${VERSION}${SUFFIX}" - fi + # Read final version with suffix + VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null) + [ -z "$VERSION" ] && VERSION="00.00.01" # Commit version bump git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" @@ -137,12 +125,11 @@ jobs: echo "version=${VERSION}" >> "$GITHUB_OUTPUT" echo "stability=${STABILITY}" >> "$GITHUB_OUTPUT" - echo "suffix=${SUFFIX}" >> "$GITHUB_OUTPUT" echo "tag=${TAG}" >> "$GITHUB_OUTPUT" echo "zip_name=${ZIP_NAME}" >> "$GITHUB_OUTPUT" echo "ext_element=${EXT_ELEMENT}" >> "$GITHUB_OUTPUT" - echo "=== Pre-Release: ${EXT_ELEMENT} ${VERSION}${SUFFIX} ===" + echo "=== Pre-Release: ${EXT_ELEMENT} ${VERSION} ===" - name: Create release id: release @@ -155,21 +142,6 @@ jobs: --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ --repo "${GITEA_REPO}" --branch dev --prerelease - - name: Ensure prerelease flag - run: | - TAG="${{ steps.meta.outputs.tag }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - # Get release ID by tag and force prerelease=true - RELEASE_ID=$(curl -s "${API_BASE}/releases/tags/${TAG}" \ - -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" | jq -r '.id // empty') - if [ -n "$RELEASE_ID" ]; then - curl -s -X PATCH "${API_BASE}/releases/${RELEASE_ID}" \ - -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ - -H "Content-Type: application/json" \ - -d '{"prerelease": true}' - echo "Marked release ${TAG} (id=${RELEASE_ID}) as prerelease" - fi - - name: Build package and upload id: package run: | @@ -181,55 +153,8 @@ jobs: --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ --repo "${GITEA_REPO}" --output /tmp || true - - name: Update updates.xml - if: steps.platform.outputs.platform == 'joomla' - run: | - VERSION="${{ steps.meta.outputs.version }}" - STABILITY="${{ steps.meta.outputs.stability }}" - SHA256="${{ steps.package.outputs.sha256_zip }}" - - if [ ! -f "updates.xml" ]; then - echo "No updates.xml -- skipping" - exit 0 - fi - - SHA_FLAG="" - [ -n "$SHA256" ] && SHA_FLAG="--sha ${SHA256}" - - php ${MOKO_CLI}/updates_xml_build.php \ - --path . --version "${VERSION}" --stability "${STABILITY}" \ - --gitea-url "${GITEA_URL}" --org "${GITEA_ORG}" --repo "${GITEA_REPO}" \ - ${SHA_FLAG} - - # Commit and push - if ! git diff --quiet updates.xml 2>/dev/null; then - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - git add updates.xml - git commit -m "chore: update ${STABILITY} channel ${VERSION} [skip ci]" - git push origin HEAD 2>&1 || echo "WARNING: push failed" - fi - - - name: "Sync updates.xml to all branches" - if: steps.platform.outputs.platform == 'joomla' - run: | - CURRENT_BRANCH="${{ github.ref_name }}" - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - - for BRANCH in main dev; do - [ "$BRANCH" = "$CURRENT_BRANCH" ] && continue - echo "Syncing updates.xml -> ${BRANCH}" - git fetch origin "${BRANCH}" 2>/dev/null || continue - git checkout "origin/${BRANCH}" -- updates.xml 2>/dev/null || continue - git checkout "${CURRENT_BRANCH}" -- updates.xml - if ! git diff --quiet updates.xml 2>/dev/null; then - git add updates.xml - git commit -m "chore: sync updates.xml from ${CURRENT_BRANCH} [skip ci]" - git push origin HEAD:refs/heads/${BRANCH} 2>&1 || echo "WARNING: push to ${BRANCH} failed" - fi - git checkout "${CURRENT_BRANCH}" 2>/dev/null - done + # updates.xml is generated dynamically by MokoGitea license server + # No need to build, commit, or sync updates.xml from workflows - name: "Delete lesser pre-release channels (cascade)" continue-on-error: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cb3125..9f46298 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,15 +10,12 @@ BRIEF: Release changelog --> # Changelog + ## [Unreleased] +## [09.23] --- 2026-05-31 -## [09.24.00] --- 2026-06-04 - - -## [09.23.00] --- 2026-05-31 - -## [09.22.00] --- 2026-05-31 +## [09.22] --- 2026-05-31 ### Changed - **refactor(cli):** migrate 64 legacy scripts to CliFramework (#235) — all tools in cli/, automation/, maintenance/, deploy/, release/ now extend CliFramework with free --help, --verbose, --quiet, --dry-run, --json, banners, and coloured logging @@ -30,6 +27,12 @@ BRIEF: Release changelog - fix: remove lesser stream copies, each stream updates independently - fix: sort updates.xml entries dev first, stable last -## [09.21.00] --- 2026-05-30 +## [09.21] --- 2026-05-30 -## [09.20.00] --- 2026-05-30 +## [09.20] --- 2026-05-30 + +## [09.19] --- 2026-05-30 + +## [09.18] --- 2026-05-30 + +## [09.17] --- 2026-05-30 diff --git a/build/index.md b/build/index.md deleted file mode 100644 index 46be81f..0000000 --- a/build/index.md +++ /dev/null @@ -1,19 +0,0 @@ -# Build Index: /api/build - -## Purpose - -This folder contains build system management and compilation scripts. - -## Quick Links - -- [README](./README.md) - Build scripts documentation - -## Scripts - -- [moko-make](./moko-make) - Build system wrapper -- [resolve_makefile.py](./resolve_makefile.py) - Makefile resolution - -## Metadata - -- **Document Type:** index -- **Auto-generated:** This file is manually maintained for ignored directory diff --git a/build/moko-make b/build/moko-make deleted file mode 100644 index ff51dc8..0000000 --- a/build/moko-make +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env bash -# Copyright (C) 2026 Moko Consulting -# SPDX-License-Identifier: GPL-3.0-or-later -# -# Moko Build Wrapper -# Automatically finds and uses appropriate Makefile from MokoStandards - -set -e - -# Colors -COLOR_RESET="\033[0m" -COLOR_GREEN="\033[32m" -COLOR_BLUE="\033[34m" -COLOR_RED="\033[31m" - -# Find MokoStandards root -find_mokostandards() { - # Check environment variable - if [ -n "$MOKOSTANDARDS_ROOT" ] && [ -d "$MOKOSTANDARDS_ROOT/templates/build" ]; then - echo "$MOKOSTANDARDS_ROOT" - return 0 - fi - - # Check adjacent directories - if [ -d "../MokoStandards/templates/build" ]; then - echo "$(cd ../MokoStandards && pwd)" - return 0 - fi - - if [ -d "../../MokoStandards/templates/build" ]; then - echo "$(cd ../../MokoStandards && pwd)" - return 0 - fi - - # Check home directory - if [ -d "$HOME/.mokostandards/templates/build" ]; then - echo "$HOME/.mokostandards" - return 0 - fi - - # Check system location - if [ -d "/opt/mokostandards/templates/build" ]; then - echo "/opt/mokostandards" - return 0 - fi - - return 1 -} - -# Find appropriate Makefile -find_makefile() { - # Check for local Makefile - if [ -f "Makefile" ]; then - echo "Makefile" - return 0 - fi - - # Check for .moko/Makefile - if [ -f ".moko/Makefile" ]; then - echo ".moko/Makefile" - return 0 - fi - - # Find MokoStandards - MOKO_ROOT=$(find_mokostandards) - if [ $? -ne 0 ]; then - echo -e "${COLOR_RED}✗${COLOR_RESET} MokoStandards repository not found" >&2 - echo -e "${COLOR_BLUE}Hint:${COLOR_RESET} Set MOKOSTANDARDS_ROOT or clone adjacent" >&2 - return 1 - fi - - # Detect project type - if [ -d "core/modules" ] && ls core/modules/mod*.class.php >/dev/null 2>&1; then - echo "$MOKO_ROOT/templates/build/dolibarr/Makefile" - return 0 - fi - - # Check for Joomla XML files - shopt -s nullglob # Prevent glob expansion if no matches - for xml in *.xml; do - if [ -f "$xml" ]; then - if grep -q 'type="component"' "$xml" 2>/dev/null; then - echo "$MOKO_ROOT/templates/build/joomla/Makefile.component" - return 0 - elif grep -q 'type="module"' "$xml" 2>/dev/null; then - echo "$MOKO_ROOT/templates/build/joomla/Makefile.module" - return 0 - elif grep -q 'type="plugin"' "$xml" 2>/dev/null; then - echo "$MOKO_ROOT/templates/build/joomla/Makefile.plugin" - return 0 - fi - fi - done - shopt -u nullglob - - echo -e "${COLOR_RED}✗${COLOR_RESET} Could not detect project type" >&2 - return 1 -} - -# Main execution -MAKEFILE=$(find_makefile) -if [ $? -ne 0 ]; then - exit 1 -fi - -# Show which Makefile we're using -if [[ "$MAKEFILE" == *"MokoStandards"* ]] || [[ "$MAKEFILE" == *".mokostandards"* ]]; then - echo -e "${COLOR_BLUE}ℹ${COLOR_RESET} Using MokoStandards template" -fi - -# Run make with the found Makefile -exec make -f "$MAKEFILE" "$@"