diff --git a/.mokogitea/workflows/pre-release.yml b/.mokogitea/workflows/pre-release.yml index 4d8affb..cc48cc5 100644 --- a/.mokogitea/workflows/pre-release.yml +++ b/.mokogitea/workflows/pre-release.yml @@ -1,223 +1,223 @@ -# Copyright (C) 2026 Moko Consulting -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# FILE INFORMATION -# DEFGROUP: Gitea.Workflow -# INGROUP: moko-platform.Release -# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform -# PATH: /templates/workflows/universal/pre-release.yml.template -# VERSION: 05.01.00 -# BRIEF: Manual pre-release -- builds dev/alpha/beta/rc packages from any branch - -name: "Universal: Pre-Release" - -on: - pull_request: - types: [closed] - branches: - - dev - workflow_dispatch: - inputs: - stability: - description: 'Pre-release channel' - required: true - type: choice - options: - - development - - alpha - - beta - - release-candidate - -permissions: - contents: write - -env: - GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} - GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} - GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} - -jobs: - build: - name: "Build Pre-Release (${{ inputs.stability || 'development' }})" - runs-on: release - if: >- - github.event_name == 'workflow_dispatch' || - (github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev') - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ secrets.GA_TOKEN }} - - - name: Setup moko-platform tools - env: - MOKO_CLONE_TOKEN: ${{ secrets.GA_TOKEN }} - MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting - run: | - 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 - git clone --depth 1 --branch main --quiet \ - "https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git" \ - /tmp/moko-platform-api - cd /tmp/moko-platform-api && composer install --no-dev --no-interaction --quiet - echo "MOKO_CLI=/tmp/moko-platform-api/cli" >> "$GITHUB_ENV" - - - name: Detect platform - id: platform - run: | - php ${MOKO_CLI}/manifest_read.php --path . --github-output - - - name: Resolve metadata and bump version - id: meta - run: | - STABILITY="${{ inputs.stability || 'development' }}" - - # Map stability to Gitea release tag - case "$STABILITY" in - development) TAG="development" ;; - alpha) TAG="alpha" ;; - beta) TAG="beta" ;; - release-candidate) TAG="release-candidate" ;; - esac - - # Read current version (includes suffix from manifest, e.g. 01.02.14-dev) - VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null) - [ -z "$VERSION" ] && VERSION="00.00.01" - - php ${MOKO_CLI}/version_set_platform.php \ - --path . --version "$VERSION" --branch "${{ github.ref_name }}" 2>/dev/null || true - - # Verify version consistency across all files - php ${MOKO_CLI}/version_check.php --path . --fix 2>/dev/null || true - - # Commit version bump - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - git remote set-url origin "https://jmiller:${{ secrets.GA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" - git add -A - git diff --cached --quiet || { - git commit -m "chore(version): pre-release bump to ${VERSION} [skip ci]" - git push origin HEAD 2>&1 - } - - # Auto-detect element via manifest_element.php - php ${MOKO_CLI}/manifest_element.php \ - --path . --version "$VERSION" --stability "$STABILITY" \ - --repo "${GITEA_REPO}" --github-output - - # Read back element outputs - EXT_ELEMENT=$(grep '^ext_element=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) - ZIP_NAME=$(grep '^zip_name=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) - [ -z "$EXT_ELEMENT" ] && EXT_ELEMENT=$(echo "${GITEA_REPO}" | tr '[:upper:]' '[:lower:]' | tr -d ' -') - [ -z "$ZIP_NAME" ] && ZIP_NAME="${EXT_ELEMENT}-${VERSION}.zip" - - echo "version=${VERSION}" >> "$GITHUB_OUTPUT" - echo "stability=${STABILITY}" >> "$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} ===" - - - name: Create release - id: release - run: | - TAG="${{ steps.meta.outputs.tag }}" - VERSION="${{ steps.meta.outputs.version }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/release_create.php \ - --path . --version "$VERSION" --tag "$TAG" \ - --token "${{ secrets.GA_TOKEN }}" --api-base "$API_BASE" \ - --repo "${GITEA_REPO}" --branch dev --prerelease - - - name: Build package and upload - id: package - run: | - VERSION="${{ steps.meta.outputs.version }}" - TAG="${{ steps.meta.outputs.tag }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/release_package.php \ - --path . --version "$VERSION" --tag "$TAG" \ - --token "${{ secrets.GA_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 - - - name: "Delete lesser pre-release channels (cascade)" - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - TOKEN="${{ secrets.GA_TOKEN }}" - - php ${MOKO_CLI}/release_cascade.php \ - --stability "${{ steps.meta.outputs.stability }}" \ - --token "${TOKEN}" \ - --api-base "${API_BASE}" - - - name: Summary - if: always() - run: | - VERSION="${{ steps.meta.outputs.version }}" - STABILITY="${{ steps.meta.outputs.stability }}" - ZIP_NAME="${{ steps.meta.outputs.zip_name }}" - SHA256="${{ steps.package.outputs.sha256_zip }}" - echo "## Pre-Release Complete" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY - echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY - echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Channel | ${STABILITY} |" >> $GITHUB_STEP_SUMMARY - echo "| Package | \`${ZIP_NAME}\` |" >> $GITHUB_STEP_SUMMARY - echo "| SHA-256 | \`${SHA256:-n/a}\` |" >> $GITHUB_STEP_SUMMARY +# Copyright (C) 2026 Moko Consulting +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# FILE INFORMATION +# DEFGROUP: Gitea.Workflow +# INGROUP: moko-platform.Release +# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform +# PATH: /templates/workflows/universal/pre-release.yml.template +# VERSION: 05.01.00 +# BRIEF: Manual pre-release -- builds dev/alpha/beta/rc packages from any branch + +name: "Universal: Pre-Release" + +on: + pull_request: + types: [closed] + branches: + - dev + workflow_dispatch: + inputs: + stability: + description: 'Pre-release channel' + required: true + type: choice + options: + - development + - alpha + - beta + - release-candidate + +permissions: + contents: write + +env: + GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} + GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} + GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} + +jobs: + build: + name: "Build Pre-Release (${{ inputs.stability || 'development' }})" + runs-on: release + if: >- + github.event_name == 'workflow_dispatch' || + (github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev') + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GA_TOKEN }} + + - name: Setup moko-platform tools + env: + MOKO_CLONE_TOKEN: ${{ secrets.GA_TOKEN }} + MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting + run: | + 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 + git clone --depth 1 --branch main --quiet \ + "https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git" \ + /tmp/moko-platform-api + cd /tmp/moko-platform-api && composer install --no-dev --no-interaction --quiet + echo "MOKO_CLI=/tmp/moko-platform-api/cli" >> "$GITHUB_ENV" + + - name: Detect platform + id: platform + run: | + php ${MOKO_CLI}/manifest_read.php --path . --github-output + + - name: Resolve metadata and bump version + id: meta + run: | + STABILITY="${{ inputs.stability || 'development' }}" + + # Map stability to Gitea release tag + case "$STABILITY" in + development) TAG="development" ;; + alpha) TAG="alpha" ;; + beta) TAG="beta" ;; + release-candidate) TAG="release-candidate" ;; + esac + + # Read current version (includes suffix from manifest, e.g. 01.02.14-dev) + VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null) + [ -z "$VERSION" ] && VERSION="00.00.01" + + php ${MOKO_CLI}/version_set_platform.php \ + --path . --version "$VERSION" --branch "${{ github.ref_name }}" 2>/dev/null || true + + # Verify version consistency across all files + php ${MOKO_CLI}/version_check.php --path . --fix 2>/dev/null || true + + # Commit version bump + git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" + git config --local user.name "gitea-actions[bot]" + git remote set-url origin "https://jmiller:${{ secrets.GA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" + git add -A + git diff --cached --quiet || { + git commit -m "chore(version): pre-release bump to ${VERSION} [skip ci]" + git push origin HEAD 2>&1 + } + + # Auto-detect element via manifest_element.php + php ${MOKO_CLI}/manifest_element.php \ + --path . --version "$VERSION" --stability "$STABILITY" \ + --repo "${GITEA_REPO}" --github-output + + # Read back element outputs + EXT_ELEMENT=$(grep '^ext_element=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) + ZIP_NAME=$(grep '^zip_name=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) + [ -z "$EXT_ELEMENT" ] && EXT_ELEMENT=$(echo "${GITEA_REPO}" | tr '[:upper:]' '[:lower:]' | tr -d ' -') + [ -z "$ZIP_NAME" ] && ZIP_NAME="${EXT_ELEMENT}-${VERSION}.zip" + + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + echo "stability=${STABILITY}" >> "$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} ===" + + - name: Create release + id: release + run: | + TAG="${{ steps.meta.outputs.tag }}" + VERSION="${{ steps.meta.outputs.version }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/release_create.php \ + --path . --version "$VERSION" --tag "$TAG" \ + --token "${{ secrets.GA_TOKEN }}" --api-base "$API_BASE" \ + --repo "${GITEA_REPO}" --branch dev --prerelease + + - name: Build package and upload + id: package + run: | + VERSION="${{ steps.meta.outputs.version }}" + TAG="${{ steps.meta.outputs.tag }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/release_package.php \ + --path . --version "$VERSION" --tag "$TAG" \ + --token "${{ secrets.GA_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 + + - name: "Delete lesser pre-release channels (cascade)" + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + TOKEN="${{ secrets.GA_TOKEN }}" + + php ${MOKO_CLI}/release_cascade.php \ + --stability "${{ steps.meta.outputs.stability }}" \ + --token "${TOKEN}" \ + --api-base "${API_BASE}" + + - name: Summary + if: always() + run: | + VERSION="${{ steps.meta.outputs.version }}" + STABILITY="${{ steps.meta.outputs.stability }}" + ZIP_NAME="${{ steps.meta.outputs.zip_name }}" + SHA256="${{ steps.package.outputs.sha256_zip }}" + echo "## Pre-Release Complete" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY + echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY + echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Channel | ${STABILITY} |" >> $GITHUB_STEP_SUMMARY + echo "| Package | \`${ZIP_NAME}\` |" >> $GITHUB_STEP_SUMMARY + echo "| SHA-256 | \`${SHA256:-n/a}\` |" >> $GITHUB_STEP_SUMMARY diff --git a/cli/client_health_check.php b/cli/client_health_check.php index 6f0268c..09e7fed 100644 --- a/cli/client_health_check.php +++ b/cli/client_health_check.php @@ -1,188 +1,188 @@ -#!/usr/bin/env php - - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: moko-platform.CLI - * INGROUP: moko-platform - * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform - * PATH: /cli/client_health_check.php - * BRIEF: Verify a client site's update server, installed version, and release availability - * - * Usage: - * php client_health_check.php --update-url URL - * php client_health_check.php --path /repo --github-output - * - * Options: - * --path Repository root (reads update server URL from manifest) - * --update-url Update server XML URL (overrides manifest) - * --site-url Live site URL for version checking via Joomla API (optional) - * --api-token Joomla API token for site-url (optional) - * --github-output Export results to $GITHUB_OUTPUT - */ - -declare(strict_types=1); - -$path = '.'; -$updateUrl = null; -$siteUrl = null; -$apiToken = null; -$ghOutput = false; - -foreach ($argv as $i => $arg) { - if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; - if ($arg === '--update-url' && isset($argv[$i + 1])) $updateUrl = $argv[$i + 1]; - if ($arg === '--site-url' && isset($argv[$i + 1])) $siteUrl = $argv[$i + 1]; - if ($arg === '--api-token' && isset($argv[$i + 1])) $apiToken = $argv[$i + 1]; - if ($arg === '--github-output') $ghOutput = true; -} - -$root = realpath($path) ?: $path; -$checks = []; - -// ── Resolve update server URL from manifest ───────────────────────────── -if ($updateUrl === null) { - $searchDirs = ["{$root}/src", $root]; - foreach ($searchDirs as $dir) { - if (!is_dir($dir)) continue; - foreach (glob("{$dir}/*.xml") ?: [] as $f) { - $xml = file_get_contents($f); - if (preg_match('/]*>([^<]+)<\/server>/', $xml, $m)) { - $updateUrl = trim($m[1]); - break 2; - } - } - } -} - -if ($updateUrl === null) { - fwrite(STDERR, "No update server URL found. Use --update-url or provide a manifest with .\n"); - exit(1); -} - -echo "Update server: {$updateUrl}\n\n"; - -// ── Check 1: Update server accessible ─────────────────────────────────── -echo "--- Update Server ---\n"; -$ch = curl_init($updateUrl); -curl_setopt_array($ch, [ - CURLOPT_RETURNTRANSFER => true, - CURLOPT_TIMEOUT => 15, - CURLOPT_FOLLOWLOCATION => true, - CURLOPT_HTTPHEADER => ['User-Agent: MokoHealthCheck/1.0'], -]); -$response = curl_exec($ch); -$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); -curl_close($ch); - -if ($httpCode === 200 && !empty($response)) { - echo " PASS: HTTP {$httpCode}, " . strlen($response) . " bytes\n"; - $checks['update_server'] = 'pass'; -} else { - echo " FAIL: HTTP {$httpCode}\n"; - $checks['update_server'] = 'fail'; -} - -// ── Check 2: Parse updates.xml for stable version ─────────────────────── -$stableVersion = null; -$downloadUrl = null; - -if (!empty($response)) { - $sections = preg_split('//', $response); - foreach ($sections as $section) { - if (strpos($section, 'stable') !== false) { - if (preg_match('/([^<]+)<\/version>/', $section, $m)) { - $stableVersion = $m[1]; - } - if (preg_match('/]*>([^<]+)<\/downloadurl>/', $section, $m)) { - $downloadUrl = trim($m[1]); - } - break; - } - } - - if ($stableVersion === null && preg_match('/([^<]+)<\/version>/', $response, $m)) { - $stableVersion = $m[1]; - } -} - -echo "\n--- Stable Release ---\n"; -if ($stableVersion !== null) { - echo " Version: {$stableVersion}\n"; - $checks['stable_version'] = $stableVersion; -} else { - echo " FAIL: Could not parse stable version\n"; - $checks['stable_version'] = 'fail'; -} - -// ── Check 3: Download URL accessible ──────────────────────────────────── -if ($downloadUrl !== null) { - echo "\n--- Download URL ---\n"; - $ch = curl_init($downloadUrl); - curl_setopt_array($ch, [ - CURLOPT_NOBODY => true, - CURLOPT_TIMEOUT => 15, - CURLOPT_FOLLOWLOCATION => true, - ]); - curl_exec($ch); - $dlCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - $dlSize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); - curl_close($ch); - - if ($dlCode === 200) { - $sizeKb = $dlSize > 0 ? round($dlSize / 1024) . 'KB' : 'unknown size'; - echo " PASS: HTTP {$dlCode}, {$sizeKb}\n"; - $checks['download'] = 'pass'; - } else { - echo " FAIL: HTTP {$dlCode}\n"; - $checks['download'] = 'fail'; - } -} - -// ── Check 4: Site version (optional) ──────────────────────────────────── -if ($siteUrl !== null && $apiToken !== null) { - echo "\n--- Site Version ---\n"; - $apiUrl = rtrim($siteUrl, '/') . '/api/index.php/v1/extensions?filter[type]=file'; - $ch = curl_init($apiUrl); - curl_setopt_array($ch, [ - CURLOPT_RETURNTRANSFER => true, - CURLOPT_TIMEOUT => 15, - CURLOPT_HTTPHEADER => [ - "X-Joomla-Token: {$apiToken}", - 'Accept: application/json', - ], - ]); - $siteResponse = curl_exec($ch); - $siteCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - curl_close($ch); - - if ($siteCode === 200) { - echo " API accessible (HTTP {$siteCode})\n"; - $checks['site_api'] = 'pass'; - } else { - echo " WARN: Site API returned HTTP {$siteCode}\n"; - $checks['site_api'] = 'warn'; - } -} - -// ── Summary ───────────────────────────────────────────────────────────── -echo "\n=== Health Check Summary ===\n"; -$failed = 0; -foreach ($checks as $name => $result) { - $icon = ($result === 'fail') ? 'FAIL' : (($result === 'warn') ? 'WARN' : 'OK'); - if ($result === 'fail') $failed++; - echo " {$icon}: {$name} = {$result}\n"; -} - -if ($ghOutput) { - $ghFile = getenv('GITHUB_OUTPUT'); - if ($ghFile) { - file_put_contents($ghFile, "health_status=" . ($failed > 0 ? 'fail' : 'pass') . "\n", FILE_APPEND); - file_put_contents($ghFile, "health_version=" . ($stableVersion ?? 'unknown') . "\n", FILE_APPEND); - file_put_contents($ghFile, "health_failures={$failed}\n", FILE_APPEND); - } -} - -exit($failed > 0 ? 1 : 0); +#!/usr/bin/env php + + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * FILE INFORMATION + * DEFGROUP: moko-platform.CLI + * INGROUP: moko-platform + * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform + * PATH: /cli/client_health_check.php + * BRIEF: Verify a client site's update server, installed version, and release availability + * + * Usage: + * php client_health_check.php --update-url URL + * php client_health_check.php --path /repo --github-output + * + * Options: + * --path Repository root (reads update server URL from manifest) + * --update-url Update server XML URL (overrides manifest) + * --site-url Live site URL for version checking via Joomla API (optional) + * --api-token Joomla API token for site-url (optional) + * --github-output Export results to $GITHUB_OUTPUT + */ + +declare(strict_types=1); + +$path = '.'; +$updateUrl = null; +$siteUrl = null; +$apiToken = null; +$ghOutput = false; + +foreach ($argv as $i => $arg) { + if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; + if ($arg === '--update-url' && isset($argv[$i + 1])) $updateUrl = $argv[$i + 1]; + if ($arg === '--site-url' && isset($argv[$i + 1])) $siteUrl = $argv[$i + 1]; + if ($arg === '--api-token' && isset($argv[$i + 1])) $apiToken = $argv[$i + 1]; + if ($arg === '--github-output') $ghOutput = true; +} + +$root = realpath($path) ?: $path; +$checks = []; + +// ── Resolve update server URL from manifest ───────────────────────────── +if ($updateUrl === null) { + $searchDirs = ["{$root}/src", $root]; + foreach ($searchDirs as $dir) { + if (!is_dir($dir)) continue; + foreach (glob("{$dir}/*.xml") ?: [] as $f) { + $xml = file_get_contents($f); + if (preg_match('/]*>([^<]+)<\/server>/', $xml, $m)) { + $updateUrl = trim($m[1]); + break 2; + } + } + } +} + +if ($updateUrl === null) { + fwrite(STDERR, "No update server URL found. Use --update-url or provide a manifest with .\n"); + exit(1); +} + +echo "Update server: {$updateUrl}\n\n"; + +// ── Check 1: Update server accessible ─────────────────────────────────── +echo "--- Update Server ---\n"; +$ch = curl_init($updateUrl); +curl_setopt_array($ch, [ + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 15, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTPHEADER => ['User-Agent: MokoHealthCheck/1.0'], +]); +$response = curl_exec($ch); +$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); +curl_close($ch); + +if ($httpCode === 200 && !empty($response)) { + echo " PASS: HTTP {$httpCode}, " . strlen($response) . " bytes\n"; + $checks['update_server'] = 'pass'; +} else { + echo " FAIL: HTTP {$httpCode}\n"; + $checks['update_server'] = 'fail'; +} + +// ── Check 2: Parse updates.xml for stable version ─────────────────────── +$stableVersion = null; +$downloadUrl = null; + +if (!empty($response)) { + $sections = preg_split('//', $response); + foreach ($sections as $section) { + if (strpos($section, 'stable') !== false) { + if (preg_match('/([^<]+)<\/version>/', $section, $m)) { + $stableVersion = $m[1]; + } + if (preg_match('/]*>([^<]+)<\/downloadurl>/', $section, $m)) { + $downloadUrl = trim($m[1]); + } + break; + } + } + + if ($stableVersion === null && preg_match('/([^<]+)<\/version>/', $response, $m)) { + $stableVersion = $m[1]; + } +} + +echo "\n--- Stable Release ---\n"; +if ($stableVersion !== null) { + echo " Version: {$stableVersion}\n"; + $checks['stable_version'] = $stableVersion; +} else { + echo " FAIL: Could not parse stable version\n"; + $checks['stable_version'] = 'fail'; +} + +// ── Check 3: Download URL accessible ──────────────────────────────────── +if ($downloadUrl !== null) { + echo "\n--- Download URL ---\n"; + $ch = curl_init($downloadUrl); + curl_setopt_array($ch, [ + CURLOPT_NOBODY => true, + CURLOPT_TIMEOUT => 15, + CURLOPT_FOLLOWLOCATION => true, + ]); + curl_exec($ch); + $dlCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $dlSize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); + curl_close($ch); + + if ($dlCode === 200) { + $sizeKb = $dlSize > 0 ? round($dlSize / 1024) . 'KB' : 'unknown size'; + echo " PASS: HTTP {$dlCode}, {$sizeKb}\n"; + $checks['download'] = 'pass'; + } else { + echo " FAIL: HTTP {$dlCode}\n"; + $checks['download'] = 'fail'; + } +} + +// ── Check 4: Site version (optional) ──────────────────────────────────── +if ($siteUrl !== null && $apiToken !== null) { + echo "\n--- Site Version ---\n"; + $apiUrl = rtrim($siteUrl, '/') . '/api/index.php/v1/extensions?filter[type]=file'; + $ch = curl_init($apiUrl); + curl_setopt_array($ch, [ + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 15, + CURLOPT_HTTPHEADER => [ + "X-Joomla-Token: {$apiToken}", + 'Accept: application/json', + ], + ]); + $siteResponse = curl_exec($ch); + $siteCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($siteCode === 200) { + echo " API accessible (HTTP {$siteCode})\n"; + $checks['site_api'] = 'pass'; + } else { + echo " WARN: Site API returned HTTP {$siteCode}\n"; + $checks['site_api'] = 'warn'; + } +} + +// ── Summary ───────────────────────────────────────────────────────────── +echo "\n=== Health Check Summary ===\n"; +$failed = 0; +foreach ($checks as $name => $result) { + $icon = ($result === 'fail') ? 'FAIL' : (($result === 'warn') ? 'WARN' : 'OK'); + if ($result === 'fail') $failed++; + echo " {$icon}: {$name} = {$result}\n"; +} + +if ($ghOutput) { + $ghFile = getenv('GITHUB_OUTPUT'); + if ($ghFile) { + file_put_contents($ghFile, "health_status=" . ($failed > 0 ? 'fail' : 'pass') . "\n", FILE_APPEND); + file_put_contents($ghFile, "health_version=" . ($stableVersion ?? 'unknown') . "\n", FILE_APPEND); + file_put_contents($ghFile, "health_failures={$failed}\n", FILE_APPEND); + } +} + +exit($failed > 0 ? 1 : 0); diff --git a/cli/joomla_compat_check.php b/cli/joomla_compat_check.php index 87c6d34..b831252 100644 --- a/cli/joomla_compat_check.php +++ b/cli/joomla_compat_check.php @@ -1,136 +1,136 @@ -#!/usr/bin/env php - - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: moko-platform.CLI - * INGROUP: moko-platform - * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform - * PATH: /cli/joomla_compat_check.php - * BRIEF: Check if extension targetplatform regex matches the latest Joomla version - * - * Usage: - * php joomla_compat_check.php --path /repo - * php joomla_compat_check.php --path /repo --github-output - * - * Options: - * --path Repository root (default: .) - * --github-output Export results to $GITHUB_OUTPUT - */ - -declare(strict_types=1); - -$path = '.'; -$ghOutput = false; - -foreach ($argv as $i => $arg) { - if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; - if ($arg === '--github-output') $ghOutput = true; -} - -$root = realpath($path) ?: $path; - -// ── Find manifest and extract targetplatform ──────────────────────────── -$manifest = null; -$searchDirs = ["{$root}/src", $root]; -foreach ($searchDirs as $dir) { - if (!is_dir($dir)) continue; - foreach (glob("{$dir}/*.xml") ?: [] as $f) { - $xml = file_get_contents($f); - if (strpos($xml, ']*version="([^"]+)"/', $xml, $m)) { - $targetRegex = $m[1]; -} - -if (empty($targetRegex)) { - echo "No targetplatform version found in {$relManifest}\n"; - exit(1); -} - -echo "Manifest: {$relManifest}\n"; -echo "Target regex: {$targetRegex}\n"; - -// ── Fetch latest Joomla version ───────────────────────────────────────── -$joomlaVersions = []; -$updateUrl = 'https://update.joomla.org/core/sts/list_sts.xml'; -$updateXml = @file_get_contents($updateUrl); - -if ($updateXml === false) { - // Fallback: try the LTS feed - $updateUrl = 'https://update.joomla.org/core/list.xml'; - $updateXml = @file_get_contents($updateUrl); -} - -if ($updateXml !== false) { - // Parse all version entries - preg_match_all('/([^<]+)<\/version>/', $updateXml, $matches); - $joomlaVersions = $matches[1] ?? []; -} - -if (empty($joomlaVersions)) { - echo "WARNING: Could not fetch Joomla versions from update server\n"; - echo "Tested URL: {$updateUrl}\n"; - exit(0); -} - -// Sort and get latest -usort($joomlaVersions, 'version_compare'); -$latestJoomla = end($joomlaVersions); - -echo "Latest Joomla: {$latestJoomla}\n"; - -// ── Test compatibility ────────────────────────────────────────────────── -// The targetplatform regex uses Joomla's regex format -// Common patterns: "5\.[0-9]+" or "((5.[0-9])|(6.[0-9]))" -$compatible = @preg_match("/{$targetRegex}/", $latestJoomla); - -if ($compatible === false) { - echo "ERROR: Invalid regex in targetplatform: {$targetRegex}\n"; - $result = 'error'; -} elseif ($compatible === 1) { - echo "PASS: Joomla {$latestJoomla} matches targetplatform regex\n"; - $result = 'pass'; -} else { - // Check which major versions are supported - $supported = []; - foreach (['5.0', '5.1', '5.2', '5.3', '5.4', '6.0', '6.1', '6.2', '7.0'] as $v) { - if (@preg_match("/{$targetRegex}/", $v)) { - $supported[] = $v; - } - } - - echo "WARN: Joomla {$latestJoomla} does NOT match targetplatform regex\n"; - echo "Supported versions: " . implode(', ', $supported) . "\n"; - echo "Consider updating targetplatform to include Joomla {$latestJoomla}\n"; - $result = 'warn'; -} - -// ── Export ─────────────────────────────────────────────────────────────── -if ($ghOutput) { - $ghFile = getenv('GITHUB_OUTPUT'); - if ($ghFile) { - file_put_contents($ghFile, "compat_result={$result}\n", FILE_APPEND); - file_put_contents($ghFile, "compat_joomla={$latestJoomla}\n", FILE_APPEND); - file_put_contents($ghFile, "compat_regex={$targetRegex}\n", FILE_APPEND); - } -} - -exit($result === 'error' ? 1 : 0); +#!/usr/bin/env php + + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * FILE INFORMATION + * DEFGROUP: moko-platform.CLI + * INGROUP: moko-platform + * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform + * PATH: /cli/joomla_compat_check.php + * BRIEF: Check if extension targetplatform regex matches the latest Joomla version + * + * Usage: + * php joomla_compat_check.php --path /repo + * php joomla_compat_check.php --path /repo --github-output + * + * Options: + * --path Repository root (default: .) + * --github-output Export results to $GITHUB_OUTPUT + */ + +declare(strict_types=1); + +$path = '.'; +$ghOutput = false; + +foreach ($argv as $i => $arg) { + if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; + if ($arg === '--github-output') $ghOutput = true; +} + +$root = realpath($path) ?: $path; + +// ── Find manifest and extract targetplatform ──────────────────────────── +$manifest = null; +$searchDirs = ["{$root}/src", $root]; +foreach ($searchDirs as $dir) { + if (!is_dir($dir)) continue; + foreach (glob("{$dir}/*.xml") ?: [] as $f) { + $xml = file_get_contents($f); + if (strpos($xml, ']*version="([^"]+)"/', $xml, $m)) { + $targetRegex = $m[1]; +} + +if (empty($targetRegex)) { + echo "No targetplatform version found in {$relManifest}\n"; + exit(1); +} + +echo "Manifest: {$relManifest}\n"; +echo "Target regex: {$targetRegex}\n"; + +// ── Fetch latest Joomla version ───────────────────────────────────────── +$joomlaVersions = []; +$updateUrl = 'https://update.joomla.org/core/sts/list_sts.xml'; +$updateXml = @file_get_contents($updateUrl); + +if ($updateXml === false) { + // Fallback: try the LTS feed + $updateUrl = 'https://update.joomla.org/core/list.xml'; + $updateXml = @file_get_contents($updateUrl); +} + +if ($updateXml !== false) { + // Parse all version entries + preg_match_all('/([^<]+)<\/version>/', $updateXml, $matches); + $joomlaVersions = $matches[1] ?? []; +} + +if (empty($joomlaVersions)) { + echo "WARNING: Could not fetch Joomla versions from update server\n"; + echo "Tested URL: {$updateUrl}\n"; + exit(0); +} + +// Sort and get latest +usort($joomlaVersions, 'version_compare'); +$latestJoomla = end($joomlaVersions); + +echo "Latest Joomla: {$latestJoomla}\n"; + +// ── Test compatibility ────────────────────────────────────────────────── +// The targetplatform regex uses Joomla's regex format +// Common patterns: "5\.[0-9]+" or "((5.[0-9])|(6.[0-9]))" +$compatible = @preg_match("/{$targetRegex}/", $latestJoomla); + +if ($compatible === false) { + echo "ERROR: Invalid regex in targetplatform: {$targetRegex}\n"; + $result = 'error'; +} elseif ($compatible === 1) { + echo "PASS: Joomla {$latestJoomla} matches targetplatform regex\n"; + $result = 'pass'; +} else { + // Check which major versions are supported + $supported = []; + foreach (['5.0', '5.1', '5.2', '5.3', '5.4', '6.0', '6.1', '6.2', '7.0'] as $v) { + if (@preg_match("/{$targetRegex}/", $v)) { + $supported[] = $v; + } + } + + echo "WARN: Joomla {$latestJoomla} does NOT match targetplatform regex\n"; + echo "Supported versions: " . implode(', ', $supported) . "\n"; + echo "Consider updating targetplatform to include Joomla {$latestJoomla}\n"; + $result = 'warn'; +} + +// ── Export ─────────────────────────────────────────────────────────────── +if ($ghOutput) { + $ghFile = getenv('GITHUB_OUTPUT'); + if ($ghFile) { + file_put_contents($ghFile, "compat_result={$result}\n", FILE_APPEND); + file_put_contents($ghFile, "compat_joomla={$latestJoomla}\n", FILE_APPEND); + file_put_contents($ghFile, "compat_regex={$targetRegex}\n", FILE_APPEND); + } +} + +exit($result === 'error' ? 1 : 0); diff --git a/cli/theme_lint.php b/cli/theme_lint.php index 971ead8..3160fa5 100644 --- a/cli/theme_lint.php +++ b/cli/theme_lint.php @@ -1,209 +1,209 @@ -#!/usr/bin/env php - - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: moko-platform.CLI - * INGROUP: moko-platform - * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform - * PATH: /cli/theme_lint.php - * BRIEF: Lint theme files — CSS syntax, image sizes, hardcoded URLs - * - * Usage: - * php theme_lint.php --path /repo - * php theme_lint.php --path /repo --max-image-kb 500 - * php theme_lint.php --path /repo --github-output - * - * Options: - * --path Repository root (default: .) - * --max-image-kb Maximum image file size in KB (default: 500) - * --github-output Export results to $GITHUB_OUTPUT - * --strict Exit 1 on any warning (default: only on errors) - */ - -declare(strict_types=1); - -$path = '.'; -$maxImageKb = 500; -$ghOutput = false; -$strict = false; - -foreach ($argv as $i => $arg) { - if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; - if ($arg === '--max-image-kb' && isset($argv[$i + 1])) $maxImageKb = (int)$argv[$i + 1]; - if ($arg === '--github-output') $ghOutput = true; - if ($arg === '--strict') $strict = true; -} - -$root = realpath($path) ?: $path; -$errors = 0; -$warnings = 0; - -// ── Find source directory ─────────────────────────────────────────────── -$srcDir = null; -foreach (['src', 'htdocs'] as $d) { - if (is_dir("{$root}/{$d}")) { $srcDir = "{$root}/{$d}"; break; } -} -if ($srcDir === null) { - fwrite(STDERR, "No src/ or htdocs/ directory in {$root}\n"); - exit(1); -} - -echo "Theme Lint: {$srcDir}\n\n"; - -// ── Check 1: CSS syntax validation ────────────────────────────────────── -echo "--- CSS Syntax ---\n"; -$cssFiles = findFiles($srcDir, '*.css'); -$cssMinFiles = findFiles($srcDir, '*.min.css'); -$cssToCheck = array_diff($cssFiles, $cssMinFiles); - -if (empty($cssToCheck)) { - echo " No CSS files to check\n"; -} else { - foreach ($cssToCheck as $file) { - $content = file_get_contents($file); - $relPath = str_replace($root . '/', '', $file); - - // Check for unmatched braces - $openBraces = substr_count($content, '{'); - $closeBraces = substr_count($content, '}'); - if ($openBraces !== $closeBraces) { - echo " ERROR: {$relPath}: unmatched braces (open={$openBraces}, close={$closeBraces})\n"; - $errors++; - } - - // Check for empty rules - if (preg_match_all('/\{[\s]*\}/', $content, $m)) { - $count = count($m[0]); - echo " WARN: {$relPath}: {$count} empty rule(s)\n"; - $warnings++; - } - - // Check for !important abuse (more than 10 in one file) - $importantCount = substr_count($content, '!important'); - if ($importantCount > 10) { - echo " WARN: {$relPath}: {$importantCount} !important declarations (consider refactoring)\n"; - $warnings++; - } - } - - if ($errors === 0) { - echo " OK: " . count($cssToCheck) . " CSS file(s) checked\n"; - } -} - -// ── Check 2: Image file sizes ─────────────────────────────────────────── -echo "\n--- Image Sizes (max {$maxImageKb}KB) ---\n"; -$imageExts = ['*.jpg', '*.jpeg', '*.png', '*.gif', '*.webp', '*.svg', '*.bmp']; -$images = []; -foreach ($imageExts as $ext) { - $images = array_merge($images, findFiles($srcDir, $ext)); -} -// Also check root images/ directory -if (is_dir("{$root}/images")) { - foreach ($imageExts as $ext) { - $images = array_merge($images, findFiles("{$root}/images", $ext)); - } -} - -$oversized = 0; -$totalSize = 0; -foreach ($images as $file) { - $size = filesize($file); - $totalSize += $size; - $relPath = str_replace($root . '/', '', $file); - $sizeKb = round($size / 1024); - - if ($sizeKb > $maxImageKb) { - echo " WARN: {$relPath}: {$sizeKb}KB (exceeds {$maxImageKb}KB limit)\n"; - $oversized++; - $warnings++; - } -} - -$totalMb = round($totalSize / 1024 / 1024, 1); -echo " " . count($images) . " image(s), {$totalMb}MB total"; -if ($oversized > 0) { - echo ", {$oversized} oversized"; -} -echo "\n"; - -// ── Check 3: Hardcoded URLs in CSS/JS ─────────────────────────────────── -echo "\n--- Hardcoded URLs ---\n"; -$codeFiles = array_merge( - findFiles($srcDir, '*.css'), - findFiles($srcDir, '*.js') -); -// Exclude minified files -$codeFiles = array_filter($codeFiles, function($f) { - return !preg_match('/\.min\.(css|js)$/', $f); -}); - -$urlPatterns = [ - '/https?:\/\/clarksvillefurs\.com/' => 'hardcoded production URL', - '/https?:\/\/[a-z]+\.dev\.mokoconsulting\.tech/' => 'hardcoded dev URL', - '/https?:\/\/localhost/' => 'localhost reference', -]; - -$urlIssues = 0; -foreach ($codeFiles as $file) { - $content = file_get_contents($file); - $relPath = str_replace($root . '/', '', $file); - - foreach ($urlPatterns as $pattern => $desc) { - if (preg_match_all($pattern, $content, $matches)) { - $count = count($matches[0]); - echo " WARN: {$relPath}: {$count} {$desc}\n"; - $urlIssues++; - $warnings++; - } - } -} - -if ($urlIssues === 0) { - echo " OK: No hardcoded URLs found\n"; -} - -// ── Summary ───────────────────────────────────────────────────────────── -echo "\n=== Summary ===\n"; -echo "Errors: {$errors}\n"; -echo "Warnings: {$warnings}\n"; - -if ($ghOutput) { - $ghFile = getenv('GITHUB_OUTPUT'); - if ($ghFile) { - file_put_contents($ghFile, "lint_errors={$errors}\n", FILE_APPEND); - file_put_contents($ghFile, "lint_warnings={$warnings}\n", FILE_APPEND); - file_put_contents($ghFile, "lint_images=" . count($images) . "\n", FILE_APPEND); - file_put_contents($ghFile, "lint_css=" . count($cssToCheck) . "\n", FILE_APPEND); - } -} - -if ($errors > 0) { - exit(1); -} -if ($strict && $warnings > 0) { - exit(1); -} -exit(0); - -// ── Helper: recursively find files matching a glob pattern ────────────── -function findFiles(string $dir, string $pattern): array -{ - $results = []; - if (!is_dir($dir)) return $results; - - $iterator = new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS) - ); - - foreach ($iterator as $file) { - if (fnmatch($pattern, $file->getFilename())) { - $results[] = $file->getPathname(); - } - } - - return $results; -} +#!/usr/bin/env php + + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * FILE INFORMATION + * DEFGROUP: moko-platform.CLI + * INGROUP: moko-platform + * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform + * PATH: /cli/theme_lint.php + * BRIEF: Lint theme files — CSS syntax, image sizes, hardcoded URLs + * + * Usage: + * php theme_lint.php --path /repo + * php theme_lint.php --path /repo --max-image-kb 500 + * php theme_lint.php --path /repo --github-output + * + * Options: + * --path Repository root (default: .) + * --max-image-kb Maximum image file size in KB (default: 500) + * --github-output Export results to $GITHUB_OUTPUT + * --strict Exit 1 on any warning (default: only on errors) + */ + +declare(strict_types=1); + +$path = '.'; +$maxImageKb = 500; +$ghOutput = false; +$strict = false; + +foreach ($argv as $i => $arg) { + if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; + if ($arg === '--max-image-kb' && isset($argv[$i + 1])) $maxImageKb = (int)$argv[$i + 1]; + if ($arg === '--github-output') $ghOutput = true; + if ($arg === '--strict') $strict = true; +} + +$root = realpath($path) ?: $path; +$errors = 0; +$warnings = 0; + +// ── Find source directory ─────────────────────────────────────────────── +$srcDir = null; +foreach (['src', 'htdocs'] as $d) { + if (is_dir("{$root}/{$d}")) { $srcDir = "{$root}/{$d}"; break; } +} +if ($srcDir === null) { + fwrite(STDERR, "No src/ or htdocs/ directory in {$root}\n"); + exit(1); +} + +echo "Theme Lint: {$srcDir}\n\n"; + +// ── Check 1: CSS syntax validation ────────────────────────────────────── +echo "--- CSS Syntax ---\n"; +$cssFiles = findFiles($srcDir, '*.css'); +$cssMinFiles = findFiles($srcDir, '*.min.css'); +$cssToCheck = array_diff($cssFiles, $cssMinFiles); + +if (empty($cssToCheck)) { + echo " No CSS files to check\n"; +} else { + foreach ($cssToCheck as $file) { + $content = file_get_contents($file); + $relPath = str_replace($root . '/', '', $file); + + // Check for unmatched braces + $openBraces = substr_count($content, '{'); + $closeBraces = substr_count($content, '}'); + if ($openBraces !== $closeBraces) { + echo " ERROR: {$relPath}: unmatched braces (open={$openBraces}, close={$closeBraces})\n"; + $errors++; + } + + // Check for empty rules + if (preg_match_all('/\{[\s]*\}/', $content, $m)) { + $count = count($m[0]); + echo " WARN: {$relPath}: {$count} empty rule(s)\n"; + $warnings++; + } + + // Check for !important abuse (more than 10 in one file) + $importantCount = substr_count($content, '!important'); + if ($importantCount > 10) { + echo " WARN: {$relPath}: {$importantCount} !important declarations (consider refactoring)\n"; + $warnings++; + } + } + + if ($errors === 0) { + echo " OK: " . count($cssToCheck) . " CSS file(s) checked\n"; + } +} + +// ── Check 2: Image file sizes ─────────────────────────────────────────── +echo "\n--- Image Sizes (max {$maxImageKb}KB) ---\n"; +$imageExts = ['*.jpg', '*.jpeg', '*.png', '*.gif', '*.webp', '*.svg', '*.bmp']; +$images = []; +foreach ($imageExts as $ext) { + $images = array_merge($images, findFiles($srcDir, $ext)); +} +// Also check root images/ directory +if (is_dir("{$root}/images")) { + foreach ($imageExts as $ext) { + $images = array_merge($images, findFiles("{$root}/images", $ext)); + } +} + +$oversized = 0; +$totalSize = 0; +foreach ($images as $file) { + $size = filesize($file); + $totalSize += $size; + $relPath = str_replace($root . '/', '', $file); + $sizeKb = round($size / 1024); + + if ($sizeKb > $maxImageKb) { + echo " WARN: {$relPath}: {$sizeKb}KB (exceeds {$maxImageKb}KB limit)\n"; + $oversized++; + $warnings++; + } +} + +$totalMb = round($totalSize / 1024 / 1024, 1); +echo " " . count($images) . " image(s), {$totalMb}MB total"; +if ($oversized > 0) { + echo ", {$oversized} oversized"; +} +echo "\n"; + +// ── Check 3: Hardcoded URLs in CSS/JS ─────────────────────────────────── +echo "\n--- Hardcoded URLs ---\n"; +$codeFiles = array_merge( + findFiles($srcDir, '*.css'), + findFiles($srcDir, '*.js') +); +// Exclude minified files +$codeFiles = array_filter($codeFiles, function($f) { + return !preg_match('/\.min\.(css|js)$/', $f); +}); + +$urlPatterns = [ + '/https?:\/\/clarksvillefurs\.com/' => 'hardcoded production URL', + '/https?:\/\/[a-z]+\.dev\.mokoconsulting\.tech/' => 'hardcoded dev URL', + '/https?:\/\/localhost/' => 'localhost reference', +]; + +$urlIssues = 0; +foreach ($codeFiles as $file) { + $content = file_get_contents($file); + $relPath = str_replace($root . '/', '', $file); + + foreach ($urlPatterns as $pattern => $desc) { + if (preg_match_all($pattern, $content, $matches)) { + $count = count($matches[0]); + echo " WARN: {$relPath}: {$count} {$desc}\n"; + $urlIssues++; + $warnings++; + } + } +} + +if ($urlIssues === 0) { + echo " OK: No hardcoded URLs found\n"; +} + +// ── Summary ───────────────────────────────────────────────────────────── +echo "\n=== Summary ===\n"; +echo "Errors: {$errors}\n"; +echo "Warnings: {$warnings}\n"; + +if ($ghOutput) { + $ghFile = getenv('GITHUB_OUTPUT'); + if ($ghFile) { + file_put_contents($ghFile, "lint_errors={$errors}\n", FILE_APPEND); + file_put_contents($ghFile, "lint_warnings={$warnings}\n", FILE_APPEND); + file_put_contents($ghFile, "lint_images=" . count($images) . "\n", FILE_APPEND); + file_put_contents($ghFile, "lint_css=" . count($cssToCheck) . "\n", FILE_APPEND); + } +} + +if ($errors > 0) { + exit(1); +} +if ($strict && $warnings > 0) { + exit(1); +} +exit(0); + +// ── Helper: recursively find files matching a glob pattern ────────────── +function findFiles(string $dir, string $pattern): array +{ + $results = []; + if (!is_dir($dir)) return $results; + + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS) + ); + + foreach ($iterator as $file) { + if (fnmatch($pattern, $file->getFilename())) { + $results[] = $file->getPathname(); + } + } + + return $results; +} diff --git a/cli/version_bump_remote.php b/cli/version_bump_remote.php index 557d66a..bedeef1 100644 --- a/cli/version_bump_remote.php +++ b/cli/version_bump_remote.php @@ -1,233 +1,233 @@ -#!/usr/bin/env php - - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: moko-platform.CLI - * INGROUP: moko-platform - * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform - * PATH: /cli/version_bump_remote.php - * BRIEF: Bump version in manifest XML and CHANGELOG.md on a remote branch via Gitea API - * - * Usage: - * php version_bump_remote.php --path . --branch dev --bump minor --token TOKEN --api-base URL - * php version_bump_remote.php --path . --branch dev --bump patch --token TOKEN --api-base URL - * php version_bump_remote.php --path . --branch dev --bump minor --no-changelog --token TOKEN --api-base URL - * - * Options: - * --path Repository root (reads current version from local manifest) - * --branch Target branch to bump (required, e.g. dev) - * --bump Bump type: patch | minor | major (default: minor) - * --token Gitea API token (or GA_TOKEN env var) - * --api-base Gitea API base URL for the repo - * --no-changelog Skip CHANGELOG.md bump - * --repo Repository path (owner/repo) for API base construction - * --gitea-url Gitea instance URL (default: env GITEA_URL) - */ - -declare(strict_types=1); - -$path = '.'; -$branch = null; -$bumpType = 'minor'; -$token = null; -$apiBase = null; -$noChangelog = false; -$repo = null; -$giteaUrl = null; - -foreach ($argv as $i => $arg) { - if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; - if ($arg === '--branch' && isset($argv[$i + 1])) $branch = $argv[$i + 1]; - if ($arg === '--bump' && isset($argv[$i + 1])) $bumpType = $argv[$i + 1]; - if ($arg === '--token' && isset($argv[$i + 1])) $token = $argv[$i + 1]; - if ($arg === '--api-base' && isset($argv[$i + 1])) $apiBase = $argv[$i + 1]; - if ($arg === '--no-changelog') $noChangelog = true; - if ($arg === '--repo' && isset($argv[$i + 1])) $repo = $argv[$i + 1]; - if ($arg === '--gitea-url' && isset($argv[$i + 1])) $giteaUrl = $argv[$i + 1]; -} - -if ($token === null) $token = getenv('GA_TOKEN') ?: getenv('GITEA_TOKEN') ?: null; -if ($giteaUrl === null) $giteaUrl = getenv('GITEA_URL') ?: 'https://git.mokoconsulting.tech'; - -if ($apiBase === null && $repo !== null) { - $apiBase = rtrim($giteaUrl, '/') . '/api/v1/repos/' . $repo; -} - -if ($branch === null || $token === null || $apiBase === null) { - fwrite(STDERR, "Usage: version_bump_remote.php --branch BRANCH --token TOKEN --api-base URL [--bump minor|patch|major]\n"); - fwrite(STDERR, " or: version_bump_remote.php --branch BRANCH --token TOKEN --repo owner/repo\n"); - exit(1); -} - -$root = realpath($path) ?: $path; - -// ── Read current version from local manifest ──────────────────────────── -$version = null; -$manifestFile = null; - -$searchDirs = ["{$root}/src", $root]; -foreach ($searchDirs as $dir) { - if (!is_dir($dir)) continue; - foreach (glob("{$dir}/*.xml") ?: [] as $f) { - $xml = file_get_contents($f); - if (strpos($xml, '') !== false) { - if (preg_match('|(\d{2}\.\d{2}\.\d{2})|', $xml, $m)) { - if ($version === null || version_compare($m[1], $version, '>')) { - $version = $m[1]; - $manifestFile = basename($f); - } - } - } - } -} - -if ($version === null) { - fwrite(STDERR, "No version found in manifest XML\n"); - exit(1); -} - -// ── Compute next version ──────────────────────────────────────────────── -if (!preg_match('/^(\d{2})\.(\d{2})\.(\d{2})$/', $version, $parts)) { - fwrite(STDERR, "Invalid version format: {$version}\n"); - exit(1); -} - -$major = (int)$parts[1]; -$minor = (int)$parts[2]; -$patch = (int)$parts[3]; - -switch ($bumpType) { - case 'major': $major++; $minor = 0; $patch = 0; break; - case 'minor': $minor++; $patch = 0; break; - default: $patch++; break; -} - -$nextVersion = sprintf('%02d.%02d.%02d', $major, $minor, $patch); -echo "{$version} -> {$nextVersion} ({$branch})\n"; - -// ── Helper: Gitea API request ─────────────────────────────────────────── -function giteaApi(string $method, string $url, string $token, ?string $body = null): ?array -{ - $ch = curl_init($url); - curl_setopt_array($ch, [ - CURLOPT_RETURNTRANSFER => true, - CURLOPT_HTTPHEADER => [ - "Authorization: token {$token}", - 'Content-Type: application/json', - ], - CURLOPT_CUSTOMREQUEST => $method, - CURLOPT_TIMEOUT => 30, - ]); - if ($body !== null) { - curl_setopt($ch, CURLOPT_POSTFIELDS, $body); - } - $response = curl_exec($ch); - $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - curl_close($ch); - - if ($httpCode >= 400 || $response === false) { - return null; - } - return json_decode($response, true) ?: []; -} - -// ── Helper: Update a file on a remote branch ──────────────────────────── -function updateRemoteFile( - string $apiBase, - string $token, - string $filePath, - string $branch, - callable $transform, - string $commitMessage -): bool { - $url = "{$apiBase}/contents/{$filePath}?ref={$branch}"; - $file = giteaApi('GET', $url, $token); - if ($file === null || !isset($file['sha']) || !isset($file['content'])) { - return false; - } - - $content = base64_decode($file['content']); - $newContent = $transform($content); - - if ($newContent === $content) { - fwrite(STDERR, " {$filePath}: no changes needed\n"); - return true; - } - - $payload = json_encode([ - 'content' => base64_encode($newContent), - 'sha' => $file['sha'], - 'message' => $commitMessage, - 'branch' => $branch, - ]); - - $result = giteaApi('PUT', "{$apiBase}/contents/{$filePath}", $token, $payload); - if ($result === null) { - fwrite(STDERR, " {$filePath}: failed to update\n"); - return false; - } - - echo " {$filePath}: updated on {$branch}\n"; - return true; -} - -// ── Update manifest XML on the remote branch ──────────────────────────── -$manifestPaths = []; -if ($manifestFile !== null) { - $manifestPaths[] = "src/{$manifestFile}"; -} -$manifestPaths = array_merge($manifestPaths, [ - 'src/templateDetails.xml', - 'src/manifest.xml', -]); - -$manifestUpdated = false; -foreach ($manifestPaths as $mPath) { - $result = updateRemoteFile( - $apiBase, $token, $mPath, $branch, - function (string $content) use ($version, $nextVersion): string { - return str_replace( - "{$version}", - "{$nextVersion}", - $content - ); - }, - "chore(version): bump {$version} -> {$nextVersion} [skip ci]" - ); - if ($result) { - $manifestUpdated = true; - break; - } -} - -if (!$manifestUpdated) { - fwrite(STDERR, "WARNING: could not update manifest on {$branch}\n"); -} - -// ── Update CHANGELOG.md on the remote branch ──────────────────────────── -if (!$noChangelog) { - updateRemoteFile( - $apiBase, $token, 'CHANGELOG.md', $branch, - function (string $content) use ($version, $nextVersion): string { - $content = str_replace("VERSION: {$version}", "VERSION: {$nextVersion}", $content); - - if (strpos($content, '[Unreleased]') === false - && strpos($content, "## [{$nextVersion}]") === false - ) { - $marker = "## [{$version}]"; - if (strpos($content, $marker) !== false) { - $unreleased = "## [{$nextVersion}] - Unreleased\n\n### Added\n\n### Changed\n\n### Fixed\n\n"; - $content = str_replace($marker, $unreleased . $marker, $content); - } - } - - return $content; - }, - "chore(version): bump CHANGELOG {$version} -> {$nextVersion} [skip ci]" - ); -} - -exit(0); +#!/usr/bin/env php + + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * FILE INFORMATION + * DEFGROUP: moko-platform.CLI + * INGROUP: moko-platform + * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform + * PATH: /cli/version_bump_remote.php + * BRIEF: Bump version in manifest XML and CHANGELOG.md on a remote branch via Gitea API + * + * Usage: + * php version_bump_remote.php --path . --branch dev --bump minor --token TOKEN --api-base URL + * php version_bump_remote.php --path . --branch dev --bump patch --token TOKEN --api-base URL + * php version_bump_remote.php --path . --branch dev --bump minor --no-changelog --token TOKEN --api-base URL + * + * Options: + * --path Repository root (reads current version from local manifest) + * --branch Target branch to bump (required, e.g. dev) + * --bump Bump type: patch | minor | major (default: minor) + * --token Gitea API token (or GA_TOKEN env var) + * --api-base Gitea API base URL for the repo + * --no-changelog Skip CHANGELOG.md bump + * --repo Repository path (owner/repo) for API base construction + * --gitea-url Gitea instance URL (default: env GITEA_URL) + */ + +declare(strict_types=1); + +$path = '.'; +$branch = null; +$bumpType = 'minor'; +$token = null; +$apiBase = null; +$noChangelog = false; +$repo = null; +$giteaUrl = null; + +foreach ($argv as $i => $arg) { + if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; + if ($arg === '--branch' && isset($argv[$i + 1])) $branch = $argv[$i + 1]; + if ($arg === '--bump' && isset($argv[$i + 1])) $bumpType = $argv[$i + 1]; + if ($arg === '--token' && isset($argv[$i + 1])) $token = $argv[$i + 1]; + if ($arg === '--api-base' && isset($argv[$i + 1])) $apiBase = $argv[$i + 1]; + if ($arg === '--no-changelog') $noChangelog = true; + if ($arg === '--repo' && isset($argv[$i + 1])) $repo = $argv[$i + 1]; + if ($arg === '--gitea-url' && isset($argv[$i + 1])) $giteaUrl = $argv[$i + 1]; +} + +if ($token === null) $token = getenv('GA_TOKEN') ?: getenv('GITEA_TOKEN') ?: null; +if ($giteaUrl === null) $giteaUrl = getenv('GITEA_URL') ?: 'https://git.mokoconsulting.tech'; + +if ($apiBase === null && $repo !== null) { + $apiBase = rtrim($giteaUrl, '/') . '/api/v1/repos/' . $repo; +} + +if ($branch === null || $token === null || $apiBase === null) { + fwrite(STDERR, "Usage: version_bump_remote.php --branch BRANCH --token TOKEN --api-base URL [--bump minor|patch|major]\n"); + fwrite(STDERR, " or: version_bump_remote.php --branch BRANCH --token TOKEN --repo owner/repo\n"); + exit(1); +} + +$root = realpath($path) ?: $path; + +// ── Read current version from local manifest ──────────────────────────── +$version = null; +$manifestFile = null; + +$searchDirs = ["{$root}/src", $root]; +foreach ($searchDirs as $dir) { + if (!is_dir($dir)) continue; + foreach (glob("{$dir}/*.xml") ?: [] as $f) { + $xml = file_get_contents($f); + if (strpos($xml, '') !== false) { + if (preg_match('|(\d{2}\.\d{2}\.\d{2})|', $xml, $m)) { + if ($version === null || version_compare($m[1], $version, '>')) { + $version = $m[1]; + $manifestFile = basename($f); + } + } + } + } +} + +if ($version === null) { + fwrite(STDERR, "No version found in manifest XML\n"); + exit(1); +} + +// ── Compute next version ──────────────────────────────────────────────── +if (!preg_match('/^(\d{2})\.(\d{2})\.(\d{2})$/', $version, $parts)) { + fwrite(STDERR, "Invalid version format: {$version}\n"); + exit(1); +} + +$major = (int)$parts[1]; +$minor = (int)$parts[2]; +$patch = (int)$parts[3]; + +switch ($bumpType) { + case 'major': $major++; $minor = 0; $patch = 0; break; + case 'minor': $minor++; $patch = 0; break; + default: $patch++; break; +} + +$nextVersion = sprintf('%02d.%02d.%02d', $major, $minor, $patch); +echo "{$version} -> {$nextVersion} ({$branch})\n"; + +// ── Helper: Gitea API request ─────────────────────────────────────────── +function giteaApi(string $method, string $url, string $token, ?string $body = null): ?array +{ + $ch = curl_init($url); + curl_setopt_array($ch, [ + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ + "Authorization: token {$token}", + 'Content-Type: application/json', + ], + CURLOPT_CUSTOMREQUEST => $method, + CURLOPT_TIMEOUT => 30, + ]); + if ($body !== null) { + curl_setopt($ch, CURLOPT_POSTFIELDS, $body); + } + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($httpCode >= 400 || $response === false) { + return null; + } + return json_decode($response, true) ?: []; +} + +// ── Helper: Update a file on a remote branch ──────────────────────────── +function updateRemoteFile( + string $apiBase, + string $token, + string $filePath, + string $branch, + callable $transform, + string $commitMessage +): bool { + $url = "{$apiBase}/contents/{$filePath}?ref={$branch}"; + $file = giteaApi('GET', $url, $token); + if ($file === null || !isset($file['sha']) || !isset($file['content'])) { + return false; + } + + $content = base64_decode($file['content']); + $newContent = $transform($content); + + if ($newContent === $content) { + fwrite(STDERR, " {$filePath}: no changes needed\n"); + return true; + } + + $payload = json_encode([ + 'content' => base64_encode($newContent), + 'sha' => $file['sha'], + 'message' => $commitMessage, + 'branch' => $branch, + ]); + + $result = giteaApi('PUT', "{$apiBase}/contents/{$filePath}", $token, $payload); + if ($result === null) { + fwrite(STDERR, " {$filePath}: failed to update\n"); + return false; + } + + echo " {$filePath}: updated on {$branch}\n"; + return true; +} + +// ── Update manifest XML on the remote branch ──────────────────────────── +$manifestPaths = []; +if ($manifestFile !== null) { + $manifestPaths[] = "src/{$manifestFile}"; +} +$manifestPaths = array_merge($manifestPaths, [ + 'src/templateDetails.xml', + 'src/manifest.xml', +]); + +$manifestUpdated = false; +foreach ($manifestPaths as $mPath) { + $result = updateRemoteFile( + $apiBase, $token, $mPath, $branch, + function (string $content) use ($version, $nextVersion): string { + return str_replace( + "{$version}", + "{$nextVersion}", + $content + ); + }, + "chore(version): bump {$version} -> {$nextVersion} [skip ci]" + ); + if ($result) { + $manifestUpdated = true; + break; + } +} + +if (!$manifestUpdated) { + fwrite(STDERR, "WARNING: could not update manifest on {$branch}\n"); +} + +// ── Update CHANGELOG.md on the remote branch ──────────────────────────── +if (!$noChangelog) { + updateRemoteFile( + $apiBase, $token, 'CHANGELOG.md', $branch, + function (string $content) use ($version, $nextVersion): string { + $content = str_replace("VERSION: {$version}", "VERSION: {$nextVersion}", $content); + + if (strpos($content, '[Unreleased]') === false + && strpos($content, "## [{$nextVersion}]") === false + ) { + $marker = "## [{$version}]"; + if (strpos($content, $marker) !== false) { + $unreleased = "## [{$nextVersion}] - Unreleased\n\n### Added\n\n### Changed\n\n### Fixed\n\n"; + $content = str_replace($marker, $unreleased . $marker, $content); + } + } + + return $content; + }, + "chore(version): bump CHANGELOG {$version} -> {$nextVersion} [skip ci]" + ); +} + +exit(0); diff --git a/definitions/default/dolibarr.tf b/definitions/default/dolibarr.tf index d042313..bbaeaf7 100644 --- a/definitions/default/dolibarr.tf +++ b/definitions/default/dolibarr.tf @@ -386,6 +386,22 @@ EOT description = "Gitea Actions workflows (universal)" requirement_status = "required" files = [ + { + name = "auto-bump.yml" + extension = "yml" + description = "Auto-bump patch version on push to dev" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/auto-bump.yml" + }, + { + name = "auto-release.yml" + extension = "yml" + description = "Universal build and release pipeline on merge to main" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/auto-release.yml" + }, { name = "branch-cleanup.yml" extension = "yml" @@ -393,6 +409,159 @@ EOT requirement_status = "required" always_overwrite = true template = ".mokogitea/workflows/branch-cleanup.yml" + }, + { + name = "cascade-dev.yml" + extension = "yml" + description = "Forward-merge main to dev and pre-release branches on push to main" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cascade-dev.yml" + }, + { + name = "cleanup.yml" + extension = "yml" + description = "Scheduled cleanup of retired workflows, stale branches, and old runs" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cleanup.yml" + }, + { + name = "gitleaks.yml" + extension = "yml" + description = "Secret scanning — detect leaked credentials, API keys, and tokens" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/gitleaks.yml" + }, + { + name = "issue-branch.yml" + extension = "yml" + description = "Auto-create feature branch from issue assignment" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/issue-branch.yml" + }, + { + name = "notify.yml" + extension = "yml" + description = "Notification workflow for release and CI events" + requirement_status = "suggested" + always_overwrite = true + template = ".mokogitea/workflows/notify.yml" + }, + { + name = "pr-check.yml" + extension = "yml" + description = "Pull request validation checks" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pr-check.yml" + }, + { + name = "pre-release.yml" + extension = "yml" + description = "Manual pre-release builds for dev/alpha/beta/rc channels" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pre-release.yml" + }, + { + name = "repo-health.yml" + extension = "yml" + description = "Repository health checks and standards validation" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/repo-health.yml" + }, + { + name = "security-audit.yml" + extension = "yml" + description = "Dependency and security audit workflow" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/security-audit.yml" + }, + { + name = "update-server.yml" + extension = "yml" + description = "Update server XML feed with stability channel entries" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/update-server.yml" + } + ] + }, + { + name = "ISSUE_TEMPLATE" + path = ".mokogitea/ISSUE_TEMPLATE" + description = "Issue templates" + requirement_status = "required" + files = [ + { + name = "config.yml" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" + }, + { + name = "adr.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" + }, + { + name = "bug_report.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" + }, + { + name = "documentation.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" + }, + { + name = "enterprise_support.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" + }, + { + name = "feature_request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" + }, + { + name = "firewall-request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" + }, + { + name = "question.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" + }, + { + name = "request-license.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" + }, + { + name = "rfc.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" + }, + { + name = "security.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" + }, + { + name = "dolibarr_issue.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" + }, + { + name = "dolibarr_module_id_request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } @@ -409,828 +578,6 @@ EOT } ] }, - { - name = ".github" - path = ".github" - description = "GitHub-specific configuration" - requirement_status = "suggested" - purpose = "Contains GitHub Actions workflows and configuration" - files = [ - { - name = "copilot.yml" - extension = "yml" - description = "GitHub Copilot allowed domains configuration" - requirement_status = "required" - always_overwrite = true - template = ".github/copilot.yml" - }, - { - name = "copilot-instructions.md" - extension = "md" - description = "GitHub Copilot custom instructions enforcing MokoStandards — Dolibarr/CRM edition" - requirement_status = "required" - always_overwrite = false - destination_path = ".github" - destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" - stub_content = <<-MOKO_END - > [!IMPORTANT] - > **🔧 AI Self-Update Required on First Use** - > - > This file may contain unfilled `{{TOKEN}}` placeholders. The MokoStandards bulk-sync system - > replaces them automatically at sync time; if you can still see them, sync has not yet run for - > this repository — or this is a brand-new repo. - > - > **On your very first interaction in this repository, before answering any other question:** - > - > 1. Check whether any `{{TOKEN}}` placeholders remain in this file. - > 2. If they do, locate the values as described in the table below and replace every occurrence - > in **both** `.github/copilot-instructions.md` and `.github/CLAUDE.md`. - > 3. After replacing all tokens, **delete this entire notice block** (from `> [!IMPORTANT]` - > through the closing `> ---` line) in both files. - > 4. Tell the developer: *"I've self-updated the AI context files with this repository's - > values — all set."* - > - > | Placeholder | Where to find the value | - > |---|---| - > | `{{REPO_NAME}}` | The GitHub repository name (visible in the URL, `README.md` heading, or `git remote -v`) | - > | `{{REPO_URL}}` | Full GitHub URL, e.g. `https://github.com/mokoconsulting-tech/` | - > | `{{MODULE_NAME}}` | The module name as used in Dolibarr (lowercase, e.g. `mymodule`) — from the `langs/en_US/*.lang` filename or `$this->rights_class` in the module descriptor | - > | `{{MODULE_CLASS}}` | PascalCase module class name (e.g. `MyModule`) — from the `src/core/modules/mod*.class.php` filename | - > | `{{MODULE_ID}}` | The `$this->numero` value in `src/core/modules/mod*.class.php`; check [module-registry.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/development/crm/module-registry.md) if creating a new module | - > | `{{PRIMARY_LANGUAGE}}` | Primary programming language (usually `PHP`) | - > - > --- - - # {{REPO_NAME}} — GitHub Copilot Custom Instructions - - ## What This Repo Is - - This is a **Moko Consulting MokoCRM** (Dolibarr) module repository governed by [MokoStandards](https://github.com/mokoconsulting-tech/MokoStandards). All coding standards, workflows, and policies are defined there and enforced here via bulk sync. - - Repository URL: {{REPO_URL}} - Module name: **{{MODULE_NAME}}** - Module class: **{{MODULE_CLASS}}** - Module ID: **{{MODULE_ID}}** - Platform: **Dolibarr / MokoCRM** - - --- - - ## Primary Language - - **PHP** (≥ 8.1) is the primary language for this Dolibarr module. YAML uses 2-space indentation. All other text files use tabs per `.editorconfig`. - - --- - - ## File Header — Always Required on New Files - - Every new file needs a copyright header as its first content. - - **PHP:** - ```php - - * - * This file is part of a Moko Consulting project. - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: {{REPO_NAME}}.Module - * INGROUP: {{REPO_NAME}} - * REPO: {{REPO_URL}} - * PATH: /src/path/to/file.php - * VERSION: XX.YY.ZZ - * BRIEF: One-line description of purpose - */ - ``` - - **Markdown:** - ```markdown - - ``` - - **YAML / Shell:** Use `#` comments with the same fields. JSON files are exempt. - - --- - - ## Version Management - - **`README.md` is the single source of truth for the repository version.** - - - **Bump the patch version on every PR** — increment `XX.YY.ZZ` (e.g. `01.02.03` → `01.02.04`) in `README.md` before opening the PR; the `sync-version-on-merge` workflow propagates it automatically to all badges and `FILE INFORMATION` headers on merge to `main`. - - The `VERSION: XX.YY.ZZ` field in `README.md` governs all other version references. - - Version format is zero-padded semver: `XX.YY.ZZ` (e.g. `01.02.03`). - - Never hardcode a specific version in document body text — use the badge or FILE INFORMATION header only. - - ### Dolibarr Module Version Alignment - - The version in `README.md` **must always match** the `$this->version` property in the main module descriptor class (`src/core/modules/mod{{MODULE_CLASS}}.class.php`). - - - On `dev/**` branches: `$this->version = 'development'` (set automatically by deploy-dev workflow) - - On merge to main: `$this->version` is set to the real version by the auto-release workflow - - **Never manually set `$this->version`** — the workflows handle it - - ### Module Update Server (update.txt) - - Every Dolibarr module must wire up `$this->url_last_version` so the admin panel can check for updates. - - **In `src/core/modules/mod{{MODULE_CLASS}}.class.php` constructor**, add: - - ```php - $this->version = 'development'; - $this->url_last_version = 'https://raw.githubusercontent.com/mokoconsulting-tech/{{REPO_NAME}}/main/update.txt'; - ``` - - **How it works:** - 1. The `auto-release.yml` workflow writes `update.txt` to the repo root on every GitHub Release - 2. `update.txt` contains the latest version from `README.md` - 3. Dolibarr fetches `$this->url_last_version` and compares against the installed version - - **Add this method** to the module descriptor to parse the JSON response: - - ```php - public function getLatestVersion(): string - { - if (empty($this->url_last_version)) { - return ''; - } - $content = @file_get_contents($this->url_last_version); - if ($content === false) { - return ''; - } - $data = json_decode($content, true); - return $data['version'] ?? ''; - } - ``` - - **update.txt format** (auto-generated, do not edit manually): - ```json - { - "version": "01.02.03", - "tag": "v01.02.03", - "repo": "mokoconsulting-tech/{{REPO_NAME}}", - "release_url": "https://github.com/mokoconsulting-tech/{{REPO_NAME}}/releases/tag/v01.02.03", - "updated": "2026-03-27T00:00:00Z" - } - ``` - - Full guide: [docs/guide/crm/dolibarr-update-check.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/guide/crm/dolibarr-update-check.md) - - --- - - ## Dolibarr Module Structure - - ``` - {{REPO_NAME}}/ - ├── src/ # Module source code (deployed to Dolibarr) - │ ├── README.md # End-user documentation - │ ├── core/ - │ │ └── modules/ - │ │ └── mod{{MODULE_CLASS}}.class.php # Main module descriptor - │ ├── langs/ - │ │ └── en_US/ - │ │ └── {{MODULE_NAME}}.lang - │ ├── sql/ # Database schema - │ │ ├── llx_{{MODULE_NAME}}.sql - │ │ └── llx_{{MODULE_NAME}}.key.sql - │ ├── class/ # PHP class files - │ └── lib/ # Library files - ├── docs/ # Technical documentation - ├── scripts/ # Build and maintenance scripts - ├── tests/ # Test suite - ├── .github/ - │ ├── workflows/ - │ ├── copilot-instructions.md # This file - │ └── CLAUDE.md - ├── README.md # Version source of truth - ├── CHANGELOG.md - ├── CONTRIBUTING.md - ├── LICENSE # GPL-3.0-or-later - └── Makefile # Build automation - ``` - - --- - - ## Module Descriptor Class Pattern - - The main module descriptor (`src/core/modules/mod{{MODULE_CLASS}}.class.php`) must follow this pattern: - - ```php - db = $db; - $this->numero = {{MODULE_ID}}; // Unique module ID — do not change - $this->rights_class = '{{MODULE_NAME}}'; - $this->family = 'crm'; - $this->module_position = '50'; - $this->name = preg_replace('/^mod/i', '', get_class($this)); - $this->description = 'Description of {{MODULE_NAME}} module'; - $this->version = 'XX.YY.ZZ'; // Must match README.md version - $this->const_name = 'MAIN_MODULE_' . strtoupper($this->name); - $this->picto = 'object_favicon_256.png@mokocrm'; - $this->editor_name = 'Moko Consulting'; - $this->editor_url = 'https://mokoconsulting.tech'; // Must be an external online web site - $this->editor_squarred_logo = 'object_favicon_256.png@mokocrm'; - } - } - ``` - - **Key rules for the module descriptor:** - - `$this->numero` is a globally unique ID registered in [module-registry.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/development/crm/module-registry.md) — **never change it**. - - `$this->version` must exactly match the version in `README.md`. - - Register new modules in the module registry before using any ID. - - --- - - ## GitHub Actions — Token Usage - - Every workflow must use **`secrets.GH_TOKEN`** (the org-level Personal Access Token). - - ```yaml - # ✅ Correct - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GH_TOKEN }} - - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - ``` - - ```yaml - # ❌ Wrong — never use these in workflows - token: ${{ github.token }} - token: ${{ secrets.GITHUB_TOKEN }} - ``` - - PHP scripts read the token with: `getenv('GH_TOKEN') ?: getenv('GITHUB_TOKEN')` — `GH_TOKEN` is always preferred; `GITHUB_TOKEN` is a local-dev fallback only. - - --- - - ## MokoStandards Reference - - This repository is governed by [MokoStandards](https://github.com/mokoconsulting-tech/MokoStandards). Authoritative policies: - - | Document | Purpose | - |----------|---------| - | [file-header-standards.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/file-header-standards.md) | Copyright-header rules for every file type | - | [coding-style-guide.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/coding-style-guide.md) | Naming and formatting conventions | - | [branching-strategy.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/branching-strategy.md) | Branch naming, hierarchy, and release workflow | - | [merge-strategy.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/merge-strategy.md) | Squash-merge policy and PR title/body conventions | - | [changelog-standards.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/changelog-standards.md) | How and when to update CHANGELOG.md | - | [module-registry.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/development/crm/module-registry.md) | Dolibarr module ID registry — check before reserving a new ID | - | [crm-development-standards.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/crm/development-standards.md) | MokoCRM Dolibarr module development standards | - - --- - - ## Naming Conventions - - | Context | Convention | Example | - |---------|-----------|---------| - | PHP class | `PascalCase` | `MyService` | - | PHP method / function | `camelCase` | `getUserData()` | - | PHP variable | `$snake_case` | `$module_name` | - | PHP constant | `UPPER_SNAKE_CASE` | `MAX_RETRIES` | - | PHP class file | `PascalCase.php` | `ApiClient.php` | - | PHP script file | `snake_case.php` | `check_health.php` | - | YAML workflow | `kebab-case.yml` | `ci-dolibarr.yml` | - | Markdown doc | `kebab-case.md` | `installation-guide.md` | - - --- - - ## Commit Messages - - Format: `(): ` — imperative, lower-case subject, no trailing period. - - Valid types: `feat` · `fix` · `docs` · `chore` · `ci` · `refactor` · `style` · `test` · `perf` · `revert` · `build` - - --- - - ## Branch Naming - - Format: `/[/description]` - - Approved prefixes: `dev/` · `rc/` · `version/` · `patch/` · `copilot/` · `dependabot/` - - --- - - ## Keeping Documentation Current - - | Change type | Documentation to update | - |-------------|------------------------| - | New or renamed public PHP method | PHPDoc block; `docs/api/` index for that class | - | New or changed module version | Update `$this->version` in module descriptor; bump `README.md` | - | New library class or major feature | `CHANGELOG.md` entry under `Added` | - | Bug fix | `CHANGELOG.md` entry under `Fixed` | - | Breaking change | `CHANGELOG.md` entry under `Changed` | - | Any modified file | Update the `VERSION` field in that file's `FILE INFORMATION` block | - | **Every PR** | **Bump the patch version** — increment `XX.YY.ZZ` in `README.md`; `sync-version-on-merge` propagates it | - - --- - - ## Key Constraints - - - Never commit directly to `main` — all changes go via PR, squash-merged - - Never skip the FILE INFORMATION block on a new file - - Never change `$this->numero` (module ID) — it is permanently registered in the module registry - - Never hardcode version numbers in body text — update `README.md` and let automation propagate - - Never use `github.token` or `secrets.GITHUB_TOKEN` in workflows — always use `secrets.GH_TOKEN` - - Never let the module descriptor `$this->version` and `README.md` version go out of sync - - Never register a new module ID without first checking module-registry.md for the next available ID - MOKO_END - }, - { - name = "CLAUDE.md" - extension = "md" - description = "Claude AI assistant context enforcing MokoStandards — Dolibarr/CRM edition" - requirement_status = "required" - always_overwrite = false - destination_path = ".github" - destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" - stub_content = <<-MOKO_END - > [!IMPORTANT] - > **🔧 AI Self-Update Required on First Use** - > - > This file may contain unfilled `{{TOKEN}}` placeholders. The MokoStandards bulk-sync system - > replaces them automatically at sync time; if you can still see them, sync has not yet run for - > this repository — or this is a brand-new repo. - > - > **On your very first interaction in this repository, before answering any other question:** - > - > 1. Check whether any `{{TOKEN}}` placeholders remain in this file. - > 2. If they do, locate the values as described in the table below and replace every occurrence - > in **both** `.github/copilot-instructions.md` and `.github/CLAUDE.md`. - > 3. After replacing all tokens, **delete this entire notice block** (from `> [!IMPORTANT]` - > through the closing `> ---` line) in both files. - > 4. Tell the developer: *"I've self-updated the AI context files with this repository's - > values — all set."* - > - > | Placeholder | Where to find the value | - > |---|---| - > | `{{REPO_NAME}}` | The GitHub repository name (visible in the URL, `README.md` heading, or `git remote -v`) | - > | `{{REPO_URL}}` | Full GitHub URL, e.g. `https://github.com/mokoconsulting-tech/` | - > | `{{REPO_DESCRIPTION}}` | First paragraph of `README.md` body, or the GitHub repo description | - > | `{{MODULE_NAME}}` | The module name as used in Dolibarr (lowercase, e.g. `mymodule`) — from the `langs/en_US/*.lang` filename or `$this->rights_class` in the module descriptor | - > | `{{MODULE_CLASS}}` | PascalCase module class name (e.g. `MyModule`) — from the `src/core/modules/mod*.class.php` filename | - > | `{{MODULE_ID}}` | The `$this->numero` value in `src/core/modules/mod*.class.php`; check [module-registry.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/development/crm/module-registry.md) if creating a new module | - > - > --- - - # What This Repo Is - - **{{REPO_NAME}}** is a Moko Consulting **MokoCRM** (Dolibarr) module repository. - - {{REPO_DESCRIPTION}} - - Module name: **{{MODULE_NAME}}** - Module class: **{{MODULE_CLASS}}** - Module ID: **{{MODULE_ID}}** *(unique, immutable — registered in [module-registry.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/development/crm/module-registry.md))* - Repository URL: {{REPO_URL}} - - This repository is governed by [MokoStandards](https://github.com/mokoconsulting-tech/MokoStandards) — the single source of truth for coding standards, file-header policies, GitHub Actions workflows, and Terraform configuration templates across all Moko Consulting repositories. - - --- - - # Repo Structure - - ``` - {{REPO_NAME}}/ - ├── src/ # Module source (deployed to Dolibarr) - │ ├── README.md # End-user documentation - │ ├── core/ - │ │ └── modules/ - │ │ └── mod{{MODULE_CLASS}}.class.php # Main module descriptor - │ ├── langs/ - │ │ └── en_US/{{MODULE_NAME}}.lang - │ ├── sql/ # Database schema - │ ├── class/ # PHP class files - │ └── lib/ # Library files - ├── docs/ # Technical documentation - ├── scripts/ # Build and maintenance scripts - ├── tests/ # Test suite - │ ├── unit/ - │ └── integration/ - ├── .github/ - │ ├── workflows/ # CI/CD workflows (synced from MokoStandards) - │ ├── copilot-instructions.md - │ └── CLAUDE.md # This file - ├── README.md # Version source of truth - ├── CHANGELOG.md - ├── CONTRIBUTING.md - ├── LICENSE # GPL-3.0-or-later - └── Makefile # Build automation - ``` - - --- - - # Primary Language - - **PHP** (≥ 8.1) is the primary language for this Dolibarr module. YAML uses 2-space indentation. All other text files use tabs per `.editorconfig`. - - --- - - # Version Management - - **`README.md` is the single source of truth for the repository version.** - - - **Bump the patch version on every PR** — increment `XX.YY.ZZ` (e.g. `01.02.03` → `01.02.04`) in `README.md` before opening the PR; the `sync-version-on-merge` workflow propagates it to all `FILE INFORMATION` headers automatically on merge. - - Version format is zero-padded semver: `XX.YY.ZZ` (e.g. `01.02.03`). - - Never hardcode a version number in body text — use the badge or FILE INFORMATION header only. - - ### Dolibarr Version Alignment - - Two artefacts must always carry the same version: - - | Artefact | Location | - |----------|----------| - | `README.md` | `FILE INFORMATION VERSION` field + badge | - | Module descriptor | `$this->version` in `src/core/modules/mod{{MODULE_CLASS}}.class.php` | - - --- - - # Module Descriptor Class - - The file `src/core/modules/mod{{MODULE_CLASS}}.class.php` is the Dolibarr module descriptor. The key properties: - - ```php - public $numero = {{MODULE_ID}}; // IMMUTABLE — never change; registered globally - public $version = 'XX.YY.ZZ'; // Must match README.md version exactly - ``` - - **`$numero` is permanent.** It was registered in [module-registry.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/development/crm/module-registry.md) when this module was created. Changing it would break all Dolibarr installations that have this module activated. - - Before creating a new module, always check the registry for the next available ID. - - --- - - # File Header Requirements - - Every new file **must** have a copyright header as its first content. JSON files, binary files, generated files, and third-party files are exempt. - - **PHP:** - ```php - - * - * This file is part of a Moko Consulting project. - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: {{REPO_NAME}}.Module - * INGROUP: {{REPO_NAME}} - * REPO: {{REPO_URL}} - * PATH: /src/class/MyClass.php - * VERSION: XX.YY.ZZ - * BRIEF: One-line description of file purpose - */ - ``` - - **Markdown / YAML / Shell:** Use the appropriate comment syntax with the same fields. - - --- - - # Coding Standards - - ## Naming Conventions - - | Context | Convention | Example | - |---------|-----------|---------| - | PHP class | `PascalCase` | `MyService` | - | PHP method / function | `camelCase` | `getUserData()` | - | PHP variable | `$snake_case` | `$module_name` | - | PHP constant | `UPPER_SNAKE_CASE` | `MAX_RETRIES` | - | PHP class file | `PascalCase.php` | `ApiClient.php` | - | PHP script file | `snake_case.php` | `check_health.php` | - | YAML workflow | `kebab-case.yml` | `ci-dolibarr.yml` | - | Markdown doc | `kebab-case.md` | `installation-guide.md` | - - ## Commit Messages - - Format: `(): ` — imperative, lower-case subject, no trailing period. - - Valid types: `feat` · `fix` · `docs` · `chore` · `ci` · `refactor` · `style` · `test` · `perf` · `revert` · `build` - - ## Branch Naming - - Format: `/[/description]` - - Approved prefixes: `dev/` · `rc/` · `version/` · `patch/` · `copilot/` · `dependabot/` - - --- - - # GitHub Actions — Token Usage - - Every workflow must use **`secrets.GH_TOKEN`** (the org-level Personal Access Token). - - ```yaml - # ✅ Correct - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GH_TOKEN }} - - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - ``` - - ```yaml - # ❌ Wrong — never use these - token: ${{ github.token }} - token: ${{ secrets.GITHUB_TOKEN }} - ``` - - PHP scripts read the token with: `getenv('GH_TOKEN') ?: getenv('GITHUB_TOKEN')` — `GH_TOKEN` is always preferred; `GITHUB_TOKEN` is a local-dev fallback only. - - --- - - # Keeping Documentation Current - - | Change type | Documentation to update | - |-------------|------------------------| - | New or renamed PHP class/method | PHPDoc block; `docs/api/` entry | - | New or changed module version | Update `$this->version` in module descriptor; bump `README.md` | - | New library class or major feature | `CHANGELOG.md` entry under `Added` | - | Bug fix | `CHANGELOG.md` entry under `Fixed` | - | Breaking change | `CHANGELOG.md` entry under `Changed` | - | Any modified file | Update the `VERSION` field in that file's `FILE INFORMATION` block | - | **Every PR** | **Bump the patch version** — increment `XX.YY.ZZ` in `README.md`; `sync-version-on-merge` propagates it | - - --- - - # What NOT to Do - - - **Never commit directly to `main`** — all changes go through a PR. - - **Never hardcode version numbers** in body text — update `README.md` and let automation propagate. - - **Never change `$this->numero`** — the module ID is permanent and globally registered. - - **Never skip the FILE INFORMATION block** on a new source file. - - **Never use bare `catch (\Throwable $e) {}`** — always log or re-throw. - - **Never mix tabs and spaces** within a file — follow `.editorconfig`. - - **Never use `github.token` or `secrets.GITHUB_TOKEN` in workflows** — always use `secrets.GH_TOKEN`. - - **Never register a new module ID** without first consulting module-registry.md. - - **Never let `$this->version` and `README.md` version diverge.** - - --- - - # PR Checklist - - Before opening a PR, verify: - - - [ ] Patch version bumped in `README.md` (e.g. `01.02.03` → `01.02.04`) - - [ ] `$this->version` in module descriptor updated to match - - [ ] FILE INFORMATION headers updated in modified files - - [ ] CHANGELOG.md updated - - --- - - # Key Policy Documents (MokoStandards) - - | Document | Purpose | - |----------|---------| - | [file-header-standards.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/file-header-standards.md) | Copyright-header rules for every file type | - | [coding-style-guide.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/coding-style-guide.md) | Naming and formatting conventions | - | [branching-strategy.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/branching-strategy.md) | Branch naming, hierarchy, and release workflow | - | [merge-strategy.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/merge-strategy.md) | Squash-merge policy and PR conventions | - | [changelog-standards.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/changelog-standards.md) | How and when to update CHANGELOG.md | - | [module-registry.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/development/crm/module-registry.md) | Dolibarr module ID registry — check before reserving a new ID | - | [crm/development-standards.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/crm/development-standards.md) | MokoCRM Dolibarr module development standards | - | [dolibarr-development-guide.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/guide/crm/dolibarr-development-guide.md) | MokoCRM full development guide | - MOKO_END - } - ] - subdirectories = [ - { - name = "workflows" - path = ".github/workflows" - description = "GitHub Actions workflows" - requirement_status = "required" - files = [ - { - name = "ci-dolibarr.yml" - extension = "yml" - description = "Dolibarr-specific CI workflow" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/dolibarr/ci-dolibarr.yml.template" - }, - { - name = "codeql-analysis.yml" - extension = "yml" - description = "CodeQL security analysis workflow" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/generic/codeql-analysis.yml.template" - }, - { - name = "standards-compliance.yml" - extension = "yml" - description = "MokoStandards compliance validation" - requirement_status = "required" - always_overwrite = true - template = ".github/workflows/standards-compliance.yml" - }, - { - name = "enterprise-firewall-setup.yml" - extension = "yml" - description = "Enterprise firewall configuration for trusted domain access" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/enterprise-firewall-setup.yml.template" - }, - { - name = "deploy-dev.yml" - extension = "yml" - description = "SFTP deployment of src/ to the development server" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-dev.yml.template" - }, - { - name = "deploy-demo.yml" - extension = "yml" - description = "SFTP deployment of src/ to the demo server on merge to main" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-demo.yml.template" - }, - { - name = "deploy-rs.yml" - extension = "yml" - description = "SFTP deployment of src/ to the release staging server on merge to main" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-rs.yml.template" - }, - { - name = "publish-to-mokodolimods.yml" - extension = "yml" - description = "On release, copies src/ to htdocs/custom/$DEV_FTP_SUFFIX in mokodolimods and opens a PR" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/dolibarr/publish-to-mokodolimods.yml.template" - }, - { - name = "sync-version-on-merge.yml" - extension = "yml" - description = "Auto-bump patch version on merge and propagate to all file headers" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/sync-version-on-merge.yml.template" - }, - { - name = "auto-release.yml" - extension = "yml" - description = "Auto-create GitHub Release on push to main with version from README.md" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/auto-release.yml.template" - }, - { - name = "repository-cleanup.yml" - extension = "yml" - description = "Scheduled cleanup: delete retired workflows, stale branches, old workflow runs" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/repository-cleanup.yml.template" - }, - { - name = "auto-dev-issue.yml" - extension = "yml" - description = "Auto-create tracking issue when a dev/** branch is pushed" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/auto-dev-issue.yml.template" - }, - { - name = "repo_health.yml" - extension = "yml" - description = "Dolibarr module health checks — descriptor, numero, url_last_version, repo artifacts" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/dolibarr/repo_health.yml.template" - }, - { - name = "cascade-dev.yml" - extension = "yml" - description = "Forward-merge main to all open branches (dev, rc/*, beta/*, alpha/*) on push to main" - requirement_status = "required" - always_overwrite = true - template = "workflows/cascade-dev.yml" - }, - { - name = "gitleaks.yml" - extension = "yml" - description = "Secret scanning — detect leaked credentials, API keys, and tokens using Gitleaks" - requirement_status = "required" - always_overwrite = true - template = "workflows/gitleaks.yml" - } - ] - }, - { - name = "ISSUE_TEMPLATE" - path = ".github/ISSUE_TEMPLATE" - description = "GitHub issue templates synced from MokoStandards" - requirement_status = "required" - files = [ - { - name = "config.yml" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" - }, - { - name = "adr.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" - }, - { - name = "bug_report.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" - }, - { - name = "documentation.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" - }, - { - name = "enterprise_support.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" - }, - { - name = "feature_request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" - }, - { - name = "firewall-request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" - }, - { - name = "question.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" - }, - { - name = "request-license.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" - }, - { - name = "rfc.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" - }, - { - name = "security.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" - }, - { - name = "dolibarr_issue.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" - }, - { - name = "dolibarr_module_id_request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" - } - ] - } - ] - }, { name = "img" path = "src/img" diff --git a/definitions/default/generic-repository.tf b/definitions/default/generic-repository.tf index ece7ef4..48aa63c 100644 --- a/definitions/default/generic-repository.tf +++ b/definitions/default/generic-repository.tf @@ -209,7 +209,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.md.template" + template = "templates/mokogitea/copilot-instructions.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -508,7 +508,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.md.template" + template = "templates/mokogitea/CLAUDE.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -959,57 +959,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/default/generic.tf b/definitions/default/generic.tf index dbc7efe..1d2caa7 100644 --- a/definitions/default/generic.tf +++ b/definitions/default/generic.tf @@ -304,6 +304,22 @@ locals { description = "Gitea Actions workflows (universal)" requirement_status = "required" files = [ + { + name = "auto-bump.yml" + extension = "yml" + description = "Auto-bump patch version on push to dev" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/auto-bump.yml" + }, + { + name = "auto-release.yml" + extension = "yml" + description = "Universal build and release pipeline on merge to main" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/auto-release.yml" + }, { name = "branch-cleanup.yml" extension = "yml" @@ -311,6 +327,149 @@ locals { requirement_status = "required" always_overwrite = true template = ".mokogitea/workflows/branch-cleanup.yml" + }, + { + name = "cascade-dev.yml" + extension = "yml" + description = "Forward-merge main to dev and pre-release branches on push to main" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cascade-dev.yml" + }, + { + name = "cleanup.yml" + extension = "yml" + description = "Scheduled cleanup of retired workflows, stale branches, and old runs" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cleanup.yml" + }, + { + name = "gitleaks.yml" + extension = "yml" + description = "Secret scanning — detect leaked credentials, API keys, and tokens" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/gitleaks.yml" + }, + { + name = "issue-branch.yml" + extension = "yml" + description = "Auto-create feature branch from issue assignment" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/issue-branch.yml" + }, + { + name = "notify.yml" + extension = "yml" + description = "Notification workflow for release and CI events" + requirement_status = "suggested" + always_overwrite = true + template = ".mokogitea/workflows/notify.yml" + }, + { + name = "pr-check.yml" + extension = "yml" + description = "Pull request validation checks" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pr-check.yml" + }, + { + name = "pre-release.yml" + extension = "yml" + description = "Manual pre-release builds for dev/alpha/beta/rc channels" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pre-release.yml" + }, + { + name = "repo-health.yml" + extension = "yml" + description = "Repository health checks and standards validation" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/repo-health.yml" + }, + { + name = "security-audit.yml" + extension = "yml" + description = "Dependency and security audit workflow" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/security-audit.yml" + }, + { + name = "update-server.yml" + extension = "yml" + description = "Update server XML feed with stability channel entries" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/update-server.yml" + } + ] + }, + { + name = "ISSUE_TEMPLATE" + path = ".mokogitea/ISSUE_TEMPLATE" + description = "Issue templates" + requirement_status = "required" + files = [ + { + name = "config.yml" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" + }, + { + name = "adr.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" + }, + { + name = "bug_report.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" + }, + { + name = "documentation.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" + }, + { + name = "enterprise_support.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" + }, + { + name = "feature_request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" + }, + { + name = "firewall-request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" + }, + { + name = "question.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" + }, + { + name = "request-license.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" + }, + { + name = "rfc.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" + }, + { + name = "security.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } @@ -327,250 +486,6 @@ locals { } ] }, - { - name = ".github" - path = ".github" - description = "GitHub-specific configuration" - requirement_status = "required" - purpose = "Contains GitHub Actions workflows and configuration" - subdirectories = [ - { - name = "workflows" - path = ".github/workflows" - description = "GitHub Actions workflows" - requirement_status = "required" - files = [ - { - name = "test.yml" - extension = "yml" - description = "Comprehensive testing workflow" - requirement_status = "optional" - always_overwrite = true - source_path = "templates/workflows/generic" - source_filename = "test.yml.template" - source_type = "template" - destination_path = ".github/workflows" - destination_filename = "test.yml" - create_path = true - template = "templates/workflows/generic/test.yml.template" - }, - { - name = "code-quality.yml" - extension = "yml" - description = "Code quality and linting workflow" - requirement_status = "required" - always_overwrite = true - source_path = "templates/workflows/generic" - source_filename = "code-quality.yml.template" - source_type = "template" - destination_path = ".github/workflows" - destination_filename = "code-quality.yml" - create_path = true - template = "templates/workflows/generic/code-quality.yml.template" - }, - { - name = "codeql-analysis.yml" - extension = "yml" - description = "CodeQL security analysis workflow" - requirement_status = "required" - always_overwrite = true - source_path = "templates/workflows/generic" - source_filename = "codeql-analysis.yml.template" - source_type = "template" - destination_path = ".github/workflows" - destination_filename = "codeql-analysis.yml" - create_path = true - template = "templates/workflows/generic/codeql-analysis.yml.template" - }, - { - name = "deploy.yml" - extension = "yml" - description = "Deployment workflow" - requirement_status = "optional" - always_overwrite = true - source_path = "templates/workflows/generic" - source_filename = "deploy.yml.template" - source_type = "template" - destination_path = ".github/workflows" - destination_filename = "deploy.yml" - create_path = true - template = "templates/workflows/generic/deploy.yml.template" - }, - { - name = "release-cycle.yml" - extension = "yml" - description = "Release management workflow with automated release flow" - requirement_status = "required" - always_overwrite = true - source_path = ".github/workflows" - source_filename = "release-cycle.yml" - source_type = "copy" - destination_path = ".github/workflows" - destination_filename = "release-cycle.yml" - create_path = true - template = ".github/workflows/release-cycle.yml" - }, - { - name = "standards-compliance.yml" - extension = "yml" - description = "MokoStandards compliance validation" - requirement_status = "required" - always_overwrite = true - source_path = ".github/workflows" - source_filename = "standards-compliance.yml" - source_type = "copy" - destination_path = ".github/workflows" - destination_filename = "standards-compliance.yml" - create_path = true - template = ".github/workflows/standards-compliance.yml" - }, - { - name = "enterprise-firewall-setup.yml" - extension = "yml" - description = "Enterprise firewall configuration for trusted domain access" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/enterprise-firewall-setup.yml.template" - }, - { - name = "deploy-dev.yml" - extension = "yml" - description = "SFTP deployment of src/ to the development server" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-dev.yml.template" - }, - { - name = "deploy-demo.yml" - extension = "yml" - description = "SFTP deployment of src/ to the demo server on merge to main" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-demo.yml.template" - }, - { - name = "deploy-rs.yml" - extension = "yml" - description = "SFTP deployment of src/ to the release staging server on merge to main" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-rs.yml.template" - }, - { - name = "sync-version-on-merge.yml" - extension = "yml" - description = "Auto-bump patch version on merge and propagate to all file headers" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/sync-version-on-merge.yml.template" - }, - { - name = "auto-release.yml" - extension = "yml" - description = "Auto-create GitHub Release on push to main with version from README.md" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/auto-release.yml.template" - }, - { - name = "repository-cleanup.yml" - extension = "yml" - description = "Scheduled cleanup: delete retired workflows, stale branches, old workflow runs" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/repository-cleanup.yml.template" - }, - { - name = "auto-dev-issue.yml" - extension = "yml" - description = "Auto-create tracking issue when a dev/** branch is pushed" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/auto-dev-issue.yml.template" - }, - { - name = "cascade-dev.yml" - extension = "yml" - description = "Forward-merge main to all open branches (dev, rc/*, beta/*, alpha/*) on push to main" - requirement_status = "required" - always_overwrite = true - template = "workflows/cascade-dev.yml" - }, - { - name = "gitleaks.yml" - extension = "yml" - description = "Secret scanning — detect leaked credentials, API keys, and tokens using Gitleaks" - requirement_status = "required" - always_overwrite = true - template = "workflows/gitleaks.yml" - } - ] - }, - { - name = "ISSUE_TEMPLATE" - path = ".github/ISSUE_TEMPLATE" - description = "GitHub issue templates synced from MokoStandards" - requirement_status = "required" - files = [ - { - name = "config.yml" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" - }, - { - name = "adr.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" - }, - { - name = "bug_report.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" - }, - { - name = "documentation.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" - }, - { - name = "enterprise_support.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" - }, - { - name = "feature_request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" - }, - { - name = "firewall-request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" - }, - { - name = "question.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" - }, - { - name = "request-license.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" - }, - { - name = "rfc.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" - }, - { - name = "security.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" - } - ] - } - ] - }, { name = "node_modules" path = "node_modules" diff --git a/definitions/default/joomla.tf b/definitions/default/joomla.tf index 4e0e24d..1e4e07e 100644 --- a/definitions/default/joomla.tf +++ b/definitions/default/joomla.tf @@ -444,6 +444,22 @@ locals { description = "Gitea Actions workflows (universal)" requirement_status = "required" files = [ + { + name = "auto-bump.yml" + extension = "yml" + description = "Auto-bump patch version on push to dev" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/auto-bump.yml" + }, + { + name = "auto-release.yml" + extension = "yml" + description = "Universal build and release pipeline on merge to main" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/auto-release.yml" + }, { name = "branch-cleanup.yml" extension = "yml" @@ -451,6 +467,154 @@ locals { requirement_status = "required" always_overwrite = true template = ".mokogitea/workflows/branch-cleanup.yml" + }, + { + name = "cascade-dev.yml" + extension = "yml" + description = "Forward-merge main to dev and pre-release branches on push to main" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cascade-dev.yml" + }, + { + name = "cleanup.yml" + extension = "yml" + description = "Scheduled cleanup of retired workflows, stale branches, and old runs" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cleanup.yml" + }, + { + name = "gitleaks.yml" + extension = "yml" + description = "Secret scanning — detect leaked credentials, API keys, and tokens" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/gitleaks.yml" + }, + { + name = "issue-branch.yml" + extension = "yml" + description = "Auto-create feature branch from issue assignment" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/issue-branch.yml" + }, + { + name = "notify.yml" + extension = "yml" + description = "Notification workflow for release and CI events" + requirement_status = "suggested" + always_overwrite = true + template = ".mokogitea/workflows/notify.yml" + }, + { + name = "pr-check.yml" + extension = "yml" + description = "Pull request validation checks" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pr-check.yml" + }, + { + name = "pre-release.yml" + extension = "yml" + description = "Manual pre-release builds for dev/alpha/beta/rc channels" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pre-release.yml" + }, + { + name = "repo-health.yml" + extension = "yml" + description = "Repository health checks and standards validation" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/repo-health.yml" + }, + { + name = "security-audit.yml" + extension = "yml" + description = "Dependency and security audit workflow" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/security-audit.yml" + }, + { + name = "update-server.yml" + extension = "yml" + description = "Update server XML feed with stability channel entries" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/update-server.yml" + } + ] + }, + { + name = "ISSUE_TEMPLATE" + path = ".mokogitea/ISSUE_TEMPLATE" + description = "Issue templates" + requirement_status = "required" + files = [ + { + name = "config.yml" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" + }, + { + name = "adr.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" + }, + { + name = "bug_report.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" + }, + { + name = "documentation.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" + }, + { + name = "enterprise_support.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" + }, + { + name = "feature_request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" + }, + { + name = "firewall-request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" + }, + { + name = "question.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" + }, + { + name = "request-license.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" + }, + { + name = "rfc.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" + }, + { + name = "security.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" + }, + { + name = "joomla_issue.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } @@ -466,786 +630,6 @@ locals { source_type = "programmatic" } ] - }, - { - name = ".github" - path = ".github" - description = "Gitea/GitHub Actions configuration (Gitea reads .github/workflows natively)" - requirement_status = "suggested" - purpose = "Contains GitHub Actions workflows and configuration" - files = [ - { - name = "copilot.yml" - extension = "yml" - description = "GitHub Copilot allowed domains configuration" - requirement_status = "required" - always_overwrite = true - template = ".github/copilot.yml" - }, - { - name = "copilot-instructions.md" - extension = "md" - description = "GitHub Copilot custom instructions enforcing MokoStandards — Joomla/WaaS edition" - requirement_status = "required" - always_overwrite = false - destination_path = ".github" - destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" - stub_content = <<-MOKO_END - > [!IMPORTANT] - > **🔧 AI Self-Update Required on First Use** - > - > This file may contain unfilled `{{TOKEN}}` placeholders. The MokoStandards bulk-sync system - > replaces them automatically at sync time; if you can still see them, sync has not yet run for - > this repository — or this is a brand-new repo. - > - > **On your very first interaction in this repository, before answering any other question:** - > - > 1. Check whether any `{{TOKEN}}` placeholders remain in this file. - > 2. If they do, locate the values as described in the table below and replace every occurrence - > in **both** `.github/copilot-instructions.md` and `.github/CLAUDE.md`. - > 3. After replacing all tokens, **delete this entire notice block** (from `> [!IMPORTANT]` - > through the closing `> ---` line) in both files. - > 4. Tell the developer: *"I've self-updated the AI context files with this repository's - > values — all set."* - > - > | Placeholder | Where to find the value | - > |---|---| - > | `{{REPO_NAME}}` | The GitHub repository name (visible in the URL, `README.md` heading, or `git remote -v`) | - > | `{{REPO_URL}}` | Full Gitea URL, e.g. `https://git.mokoconsulting.tech/MokoConsulting/` | - > | `{{EXTENSION_NAME}}` | The `` element in `manifest.xml` at the repository root | - > | `{{EXTENSION_TYPE}}` | The `type` attribute of the `` tag in `manifest.xml` (`component`, `module`, `plugin`, or `template`) | - > | `{{EXTENSION_ELEMENT}}` | The `` tag in `manifest.xml`, or the filename prefix (e.g. `com_myextension`, `mod_mymodule`) | - > - > --- - - # {{REPO_NAME}} — GitHub Copilot Custom Instructions - - ## What This Repo Is - - This is a **Moko Consulting MokoWaaS** (Joomla) repository governed by [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards). All coding standards, workflows, and policies are defined there and enforced here via bulk sync. - - Repository URL: {{REPO_URL}} - Extension name: **{{EXTENSION_NAME}}** - Extension type: **{{EXTENSION_TYPE}}** (`{{EXTENSION_ELEMENT}}`) - Platform: **Joomla 4.x / MokoWaaS** - - --- - - ## Primary Language - - **PHP** (≥ 7.4) is the primary language for this Joomla extension. JavaScript may be used for frontend enhancements. YAML uses 2-space indentation. All other text files use tabs per `.editorconfig`. - - --- - - ## File Header — Always Required on New Files - - Every new file needs a copyright header as its first content. - - **PHP:** - ```php - - * - * This file is part of a Moko Consulting project. - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: {{REPO_NAME}}.{{EXTENSION_TYPE}} - * INGROUP: {{REPO_NAME}} - * REPO: {{REPO_URL}} - * PATH: /path/to/file.php - * VERSION: XX.YY.ZZ - * BRIEF: One-line description of purpose - */ - - defined('_JEXEC') or die; - ``` - - **Markdown:** - ```markdown - - ``` - - **YAML / Shell / XML:** Use the appropriate comment syntax with the same fields. JSON files are exempt. - - --- - - ## Version Management - - **`README.md` is the single source of truth for the repository version.** - - - **Bump the patch version on every PR** — increment `XX.YY.ZZ` (e.g. `01.02.03` → `01.02.04`) in `README.md` before opening the PR; the `sync-version-on-merge` workflow propagates it automatically to all badges and `FILE INFORMATION` headers on merge to `main`. - - The `VERSION: XX.YY.ZZ` field in `README.md` governs all other version references. - - Version format is zero-padded semver: `XX.YY.ZZ` (e.g. `01.02.03`). - - Never hardcode a specific version in document body text — use the badge or FILE INFORMATION header only. - - ### Joomla Version Alignment - - The version in `README.md` **must always match** the `` tag in `manifest.xml` and the latest entry in `updates.xml`. The `make release` command / release workflow updates all three automatically. - - ```xml - - 01.02.04 - - - - - {{EXTENSION_NAME}} - 01.02.04 - - - {{REPO_URL}}/releases/download/01.02.04/{{EXTENSION_ELEMENT}}-01.02.04.zip - - - - - - - ``` - - --- - - ## Joomla Extension Structure - - ``` - {{REPO_NAME}}/ - ├── manifest.xml # Joomla installer manifest (root — required) - ├── updates.xml # Update server manifest (root — required, see below) - ├── site/ # Frontend (site) code - │ ├── controller.php - │ ├── controllers/ - │ ├── models/ - │ └── views/ - ├── admin/ # Backend (admin) code - │ ├── controller.php - │ ├── controllers/ - │ ├── models/ - │ ├── views/ - │ └── sql/ - ├── language/ # Language INI files - ├── media/ # CSS, JS, images (deployed to /media/{{EXTENSION_ELEMENT}}/) - ├── docs/ # Technical documentation - ├── tests/ # Test suite - ├── .github/ - │ ├── workflows/ - │ ├── copilot-instructions.md # This file - │ └── CLAUDE.md - ├── README.md # Version source of truth - ├── CHANGELOG.md - ├── CONTRIBUTING.md - ├── LICENSE # GPL-3.0-or-later - └── Makefile # Build automation - ``` - - --- - - ## updates.xml — Required in Repo Root - - `updates.xml` **must exist at the repository root**. It is the Joomla update server manifest that allows Joomla installations to check for new versions of this extension. - - The `manifest.xml` must reference it via: - ```xml - - - {{REPO_URL}}/raw/main/updates.xml - - - ``` - - **Rules:** - - Every release must prepend a new `` block at the top of `updates.xml` — old entries must be preserved below. - - The `` in `updates.xml` must exactly match `` in `manifest.xml` and the version in `README.md`. - - The `` must be a publicly accessible direct download link (GitHub Releases asset URL). - - `` — Joomla treats the version value as a regex; `[56].*` matches Joomla 5.x and 6.x. - - --- - - ## manifest.xml Rules - - - Lives at the repo root as `manifest.xml` (not inside `site/` or `admin/`). - - `` tag must be kept in sync with `README.md` version and `updates.xml`. - - Must include `` block pointing to this repo's `updates.xml`. - - Must include `` and `` sections. - - Joomla 4.x requires `Moko\{{EXTENSION_NAME}}` for namespaced extensions. - - --- - - ## GitHub Actions — Token Usage - - Every workflow must use **`secrets.GA_TOKEN`** (the Gitea API token). Use `secrets.GH_TOKEN` only for GitHub mirror operations (stable/RC releases). - - ```yaml - # ✅ Correct - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GA_TOKEN }} - - env: - GA_TOKEN: ${{ secrets.GA_TOKEN }} - ``` - - ```yaml - # ❌ Wrong — never use these in workflows - token: ${{ github.token }} - token: ${{ secrets.GITHUB_TOKEN }} - ``` - - --- - - ## MokoStandards Reference - - This repository is governed by [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards). Authoritative policies: - - | Document | Purpose | - |----------|---------| - | [file-header-standards.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/file-header-standards.md) | Copyright-header rules for every file type | - | [coding-style-guide.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/coding-style-guide.md) | Naming and formatting conventions | - | [branching-strategy.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/branching-strategy.md) | Branch naming, hierarchy, and release workflow | - | [merge-strategy.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/merge-strategy.md) | Squash-merge policy and PR title/body conventions | - | [changelog-standards.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/changelog-standards.md) | How and when to update CHANGELOG.md | - | [joomla-development-guide.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/guide/waas/joomla-development-guide.md) | MokoWaaS Joomla extension development guide | - - --- - - ## Naming Conventions - - | Context | Convention | Example | - |---------|-----------|---------| - | PHP class | `PascalCase` | `MyController` | - | PHP method / function | `camelCase` | `getItems()` | - | PHP variable | `$snake_case` | `$item_id` | - | PHP constant | `UPPER_SNAKE_CASE` | `MAX_ITEMS` | - | PHP class file | `PascalCase.php` | `ItemModel.php` | - | YAML workflow | `kebab-case.yml` | `ci-joomla.yml` | - | Markdown doc | `kebab-case.md` | `installation-guide.md` | - - --- - - ## Commit Messages - - Format: `(): ` — imperative, lower-case subject, no trailing period. - - Valid types: `feat` · `fix` · `docs` · `chore` · `ci` · `refactor` · `style` · `test` · `perf` · `revert` · `build` - - --- - - ## Branch Naming - - Format: `/[/description]` - - Approved prefixes: `dev/` · `rc/` · `version/` · `patch/` · `copilot/` · `dependabot/` - - --- - - ## Keeping Documentation Current - - | Change type | Documentation to update | - |-------------|------------------------| - | New or renamed PHP class/method | PHPDoc block; `docs/api/` entry | - | New or changed manifest.xml | Update `updates.xml` version; bump README.md version | - | New release | Prepend `` block to `updates.xml`; update CHANGELOG.md; bump README.md version | - | New or changed workflow | `docs/workflows/.md` | - | Any modified file | Update the `VERSION` field in that file's `FILE INFORMATION` block | - | **Every PR** | **Bump the patch version** — increment `XX.YY.ZZ` in `README.md`; `sync-version-on-merge` propagates it | - - --- - - ## Key Constraints - - - Never commit directly to `main` — all changes go via PR, squash-merged - - Never skip the FILE INFORMATION block on a new file - - Never add `defined('_JEXEC') or die;` to CLI scripts or model tests — only to web-accessible PHP files - - Never hardcode version numbers in body text — update `README.md` and let automation propagate - - Use `secrets.GA_TOKEN` for Gitea operations. Use `secrets.GH_TOKEN` only for GitHub mirror (stable/RC). Never use `secrets.GITHUB_TOKEN` directly - - Never let `manifest.xml` version, `updates.xml` version, and `README.md` version go out of sync - MOKO_END - }, - { - name = "CLAUDE.md" - extension = "md" - description = "Claude AI assistant context enforcing MokoStandards — Joomla/WaaS edition" - requirement_status = "required" - always_overwrite = false - destination_path = ".github" - destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" - stub_content = <<-MOKO_END - > [!IMPORTANT] - > **🔧 AI Self-Update Required on First Use** - > - > This file may contain unfilled `{{TOKEN}}` placeholders. The MokoStandards bulk-sync system - > replaces them automatically at sync time; if you can still see them, sync has not yet run for - > this repository — or this is a brand-new repo. - > - > **On your very first interaction in this repository, before answering any other question:** - > - > 1. Check whether any `{{TOKEN}}` placeholders remain in this file. - > 2. If they do, locate the values as described in the table below and replace every occurrence - > in **both** `.github/copilot-instructions.md` and `.github/CLAUDE.md`. - > 3. After replacing all tokens, **delete this entire notice block** (from `> [!IMPORTANT]` - > through the closing `> ---` line) in both files. - > 4. Tell the developer: *"I've self-updated the AI context files with this repository's - > values — all set."* - > - > | Placeholder | Where to find the value | - > |---|---| - > | `{{REPO_NAME}}` | The GitHub repository name (visible in the URL, `README.md` heading, or `git remote -v`) | - > | `{{REPO_URL}}` | Full Gitea URL, e.g. `https://git.mokoconsulting.tech/MokoConsulting/` | - > | `{{REPO_DESCRIPTION}}` | First paragraph of `README.md` body, or the GitHub repo description | - > | `{{EXTENSION_NAME}}` | The `` element in `manifest.xml` at the repository root | - > | `{{EXTENSION_TYPE}}` | The `type` attribute of the `` tag in `manifest.xml` (`component`, `module`, `plugin`, or `template`) | - > | `{{EXTENSION_ELEMENT}}` | The `` tag in `manifest.xml`, or the filename prefix (e.g. `com_myextension`, `mod_mymodule`) | - > - > --- - - # What This Repo Is - - **{{REPO_NAME}}** is a Moko Consulting **MokoWaaS** (Joomla) extension repository. - - {{REPO_DESCRIPTION}} - - Extension name: **{{EXTENSION_NAME}}** - Extension type: **{{EXTENSION_TYPE}}** (`{{EXTENSION_ELEMENT}}`) - Repository URL: {{REPO_URL}} - - This repository is governed by [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards) — the single source of truth for coding standards, file-header policies, GitHub Actions workflows, and Terraform configuration templates across all Moko Consulting repositories. - - --- - - # Repo Structure - - ``` - {{REPO_NAME}}/ - ├── manifest.xml # Joomla installer manifest (root — required) - ├── updates.xml # Update server manifest (root — required) - ├── site/ # Frontend (site) code - │ ├── controller.php - │ ├── controllers/ - │ ├── models/ - │ └── views/ - ├── admin/ # Backend (admin) code - │ ├── controller.php - │ ├── controllers/ - │ ├── models/ - │ ├── views/ - │ └── sql/ - ├── language/ # Language INI files - ├── media/ # CSS, JS, images - ├── docs/ # Technical documentation - ├── tests/ # Test suite - ├── .github/ - │ ├── workflows/ # CI/CD workflows (synced from MokoStandards) - │ ├── copilot-instructions.md - │ └── CLAUDE.md # This file - ├── README.md # Version source of truth - ├── CHANGELOG.md - ├── CONTRIBUTING.md - └── LICENSE # GPL-3.0-or-later - ``` - - --- - - # Primary Language - - **PHP** (≥ 7.4) is the primary language for this Joomla extension. YAML uses 2-space indentation. All other text files use tabs per `.editorconfig`. - - --- - - # Version Management - - **`README.md` is the single source of truth for the repository version.** - - - **Bump the patch version on every PR** — increment `XX.YY.ZZ` (e.g. `01.02.03` → `01.02.04`) in `README.md` before opening the PR; the `sync-version-on-merge` workflow propagates it to all `FILE INFORMATION` headers automatically on merge. - - Version format is zero-padded semver: `XX.YY.ZZ` (e.g. `01.02.03`). - - Never hardcode a version number in body text — use the badge or FILE INFORMATION header only. - - ### Joomla Version Alignment - - Three files must **always have the same version**: - - | File | Where the version lives | - |------|------------------------| - | `README.md` | `FILE INFORMATION` block + badge | - | `manifest.xml` | `` tag | - | `updates.xml` | `` in the most recent `` block | - - The `make release` command / release workflow syncs all three automatically. - - --- - - # updates.xml — Required in Repo Root - - `updates.xml` is the Joomla update server manifest. It allows Joomla installations to check for new versions of this extension via: - - ```xml - - - - {{REPO_URL}}/raw/main/updates.xml - - - ``` - - **Rules:** - - Every release prepends a new `` block at the top — older entries are preserved. - - `` in `updates.xml` must exactly match `` in `manifest.xml` and `README.md`. - - `` must be a publicly accessible GitHub Releases asset URL. - - `` — Joomla treats the version value as a regex; `[56].*` matches Joomla 5.x and 6.x. - - Example `updates.xml` entry for a new release: - ```xml - - - {{EXTENSION_NAME}} - {{REPO_NAME}} - {{EXTENSION_ELEMENT}} - {{EXTENSION_TYPE}} - 01.02.04 - {{REPO_URL}}/releases/tag/01.02.04 - - - {{REPO_URL}}/releases/download/01.02.04/{{EXTENSION_ELEMENT}}-01.02.04.zip - - - - 7.4 - Moko Consulting - https://mokoconsulting.tech - - - ``` - - --- - - # File Header Requirements - - Every new file **must** have a copyright header as its first content. JSON files, binary files, generated files, and third-party files are exempt. - - **PHP:** - ```php - - * - * This file is part of a Moko Consulting project. - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: {{REPO_NAME}}.{{EXTENSION_TYPE}} - * INGROUP: {{REPO_NAME}} - * REPO: {{REPO_URL}} - * PATH: /site/controllers/item.php - * VERSION: XX.YY.ZZ - * BRIEF: One-line description of file purpose - */ - - defined('_JEXEC') or die; - ``` - - **Markdown / YAML / Shell / XML:** Use the appropriate comment syntax with the same fields. - - --- - - # Coding Standards - - ## Naming Conventions - - | Context | Convention | Example | - |---------|-----------|---------| - | PHP class | `PascalCase` | `ItemModel` | - | PHP method / function | `camelCase` | `getItems()` | - | PHP variable | `$snake_case` | `$item_id` | - | PHP constant | `UPPER_SNAKE_CASE` | `MAX_ITEMS` | - | PHP class file | `PascalCase.php` | `ItemModel.php` | - | YAML workflow | `kebab-case.yml` | `ci-joomla.yml` | - | Markdown doc | `kebab-case.md` | `installation-guide.md` | - - ## Commit Messages - - Format: `(): ` — imperative, lower-case subject, no trailing period. - - Valid types: `feat` · `fix` · `docs` · `chore` · `ci` · `refactor` · `style` · `test` · `perf` · `revert` · `build` - - ## Branch Naming - - Format: `/[/description]` - - Approved prefixes: `dev/` · `rc/` · `version/` · `patch/` · `copilot/` · `dependabot/` - - --- - - # GitHub Actions — Token Usage - - Every workflow must use **`secrets.GA_TOKEN`** (the Gitea API token). Use `secrets.GH_TOKEN` only for GitHub mirror operations (stable/RC releases). - - ```yaml - # ✅ Correct - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GA_TOKEN }} - - env: - GA_TOKEN: ${{ secrets.GA_TOKEN }} - ``` - - ```yaml - # ❌ Wrong — never use these - token: ${{ github.token }} - token: ${{ secrets.GITHUB_TOKEN }} - ``` - - --- - - # Keeping Documentation Current - - | Change type | Documentation to update | - |-------------|------------------------| - | New or renamed PHP class/method | PHPDoc block; `docs/api/` entry | - | New or changed `manifest.xml` | Sync version to `updates.xml` and `README.md` | - | New release | Prepend `` to `updates.xml`; update `CHANGELOG.md`; bump `README.md` | - | New or changed workflow | `docs/workflows/.md` | - | Any modified file | Update the `VERSION` field in that file's `FILE INFORMATION` block | - | **Every PR** | **Bump the patch version** — increment `XX.YY.ZZ` in `README.md`; `sync-version-on-merge` propagates it | - - --- - - # What NOT to Do - - - **Never commit directly to `main`** — all changes go through a PR. - - **Never hardcode version numbers** in body text — update `README.md` and let automation propagate. - - **Never let `manifest.xml`, `updates.xml`, and `README.md` versions diverge.** - - **Never skip the FILE INFORMATION block** on a new source file. - - **Never use bare `catch (\Throwable $e) {}`** — always log or re-throw. - - **Never mix tabs and spaces** within a file — follow `.editorconfig`. - - **Never use `github.token` or `secrets.GITHUB_TOKEN` in workflows** — always use `secrets.GH_TOKEN`. - - **Never remove `defined('_JEXEC') or die;`** from web-accessible PHP files. - - --- - - # PR Checklist - - Before opening a PR, verify: - - - [ ] Patch version bumped in `README.md` (e.g. `01.02.03` → `01.02.04`) - - [ ] If this is a release: `manifest.xml` version updated; `updates.xml` updated with new entry - - [ ] FILE INFORMATION headers updated in modified files - - [ ] CHANGELOG.md updated - - [ ] Tests pass - - --- - - # Key Policy Documents (MokoStandards) - - | Document | Purpose | - |----------|---------| - | [file-header-standards.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/file-header-standards.md) | Copyright-header rules for every file type | - | [coding-style-guide.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/coding-style-guide.md) | Naming and formatting conventions | - | [branching-strategy.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/branching-strategy.md) | Branch naming, hierarchy, and release workflow | - | [merge-strategy.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/merge-strategy.md) | Squash-merge policy and PR conventions | - | [changelog-standards.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/policy/changelog-standards.md) | How and when to update CHANGELOG.md | - | [joomla-development-guide.md](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards/blob/main/docs/guide/waas/joomla-development-guide.md) | MokoWaaS Joomla extension development guide | - MOKO_END - } - ] - subdirectories = [ - { - name = "workflows" - path = ".gitea/workflows" - description = "Gitea Actions CI/CD workflows" - requirement_status = "required" - files = [ - { - name = "auto-release.yml" - extension = "yml" - description = "Automated release — builds zip, creates Gitea release, updates SHA in updates.xml. Triggered by push to main (stable) or pre-release tags" - requirement_status = "required" - always_overwrite = true - template = "workflows/auto-release.yml" - }, - { - name = "ci-dolibarr.yml" - extension = "yml" - description = "Continuous integration — PHP linting, PHPStan static analysis, Dolibarr module validation" - requirement_status = "required" - always_overwrite = true - template = "workflows/ci-dolibarr.yml" - }, - { - name = "publish-to-mokodolimods.yml" - extension = "yml" - description = "On release, copies src/ into htdocs/custom/ in mokodolimods repo and opens a PR" - requirement_status = "required" - always_overwrite = true - template = "workflows/publish-to-mokodolimods.yml" - }, - { - name = "pre-release.yml" - extension = "yml" - description = "Manual pre-release — builds dev/alpha/beta/rc packages with patch version bump" - requirement_status = "required" - always_overwrite = true - template = "workflows/pre-release.yml" - }, - { - name = "deploy-manual.yml" - extension = "yml" - description = "Manual deployment — allows selecting target environment and branch for on-demand deploys" - requirement_status = "required" - always_overwrite = true - template = "workflows/deploy-manual.yml" - }, - { - name = "repo-health.yml" - extension = "yml" - description = "Repository health checks — validates required files, structure compliance, and standards alignment" - requirement_status = "required" - always_overwrite = true - template = "workflows/repo-health.yml" - }, - { - name = "update-server.yml" - extension = "yml" - description = "Update server maintenance — validates updates.xml format and ensures download URLs are reachable" - requirement_status = "required" - always_overwrite = true - template = "workflows/update-server.yml" - }, - { - name = "pr-check.yml" - extension = "yml" - description = "PR gate — validates PHP syntax, manifest XML, and package build before merge to main" - requirement_status = "required" - always_overwrite = true - template = "workflows/pr-check.yml" - }, - { - name = "security-audit.yml" - extension = "yml" - description = "Dependency vulnerability scanning — weekly schedule and on PR when lock files change" - requirement_status = "required" - always_overwrite = true - template = "workflows/security-audit.yml" - }, - { - name = "notify.yml" - extension = "yml" - description = "Push notifications via ntfy on release success or workflow failure" - requirement_status = "required" - always_overwrite = true - template = "workflows/notify.yml" - }, - { - name = "cleanup.yml" - extension = "yml" - description = "Scheduled cleanup — delete merged branches and old workflow runs weekly" - requirement_status = "required" - always_overwrite = true - template = "workflows/cleanup.yml" - }, - { - name = "cascade-dev.yml" - extension = "yml" - description = "Forward-merge main to all open branches (dev, rc/*, beta/*, alpha/*) on push to main" - requirement_status = "required" - always_overwrite = true - template = "workflows/cascade-dev.yml" - }, - { - name = "gitleaks.yml" - extension = "yml" - description = "Secret scanning — detect leaked credentials, API keys, and tokens using Gitleaks" - requirement_status = "required" - always_overwrite = true - template = "workflows/gitleaks.yml" - } - ] - }, - { - name = "ISSUE_TEMPLATE" - path = ".github/ISSUE_TEMPLATE" - description = "GitHub issue templates synced from MokoStandards" - requirement_status = "required" - files = [ - { - name = "config.yml" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" - }, - { - name = "adr.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" - }, - { - name = "bug_report.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" - }, - { - name = "documentation.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" - }, - { - name = "enterprise_support.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" - }, - { - name = "feature_request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" - }, - { - name = "firewall-request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" - }, - { - name = "question.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" - }, - { - name = "request-license.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" - }, - { - name = "rfc.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" - }, - { - name = "security.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" - }, - { - name = "joomla_issue.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" - } - ] - } - ] } ] diff --git a/definitions/default/platform.tf b/definitions/default/platform.tf index 3b9ab36..527ffe0 100644 --- a/definitions/default/platform.tf +++ b/definitions/default/platform.tf @@ -140,6 +140,22 @@ locals { description = "Gitea Actions workflows (universal)" requirement_status = "required" files = [ + { + name = "auto-bump.yml" + extension = "yml" + description = "Auto-bump patch version on push to dev" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/auto-bump.yml" + }, + { + name = "auto-release.yml" + extension = "yml" + description = "Universal build and release pipeline on merge to main" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/auto-release.yml" + }, { name = "branch-cleanup.yml" extension = "yml" @@ -147,6 +163,159 @@ locals { requirement_status = "required" always_overwrite = true template = ".mokogitea/workflows/branch-cleanup.yml" + }, + { + name = "cascade-dev.yml" + extension = "yml" + description = "Forward-merge main to dev and pre-release branches on push to main" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cascade-dev.yml" + }, + { + name = "cleanup.yml" + extension = "yml" + description = "Scheduled cleanup of retired workflows, stale branches, and old runs" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cleanup.yml" + }, + { + name = "gitleaks.yml" + extension = "yml" + description = "Secret scanning — detect leaked credentials, API keys, and tokens" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/gitleaks.yml" + }, + { + name = "issue-branch.yml" + extension = "yml" + description = "Auto-create feature branch from issue assignment" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/issue-branch.yml" + }, + { + name = "notify.yml" + extension = "yml" + description = "Notification workflow for release and CI events" + requirement_status = "suggested" + always_overwrite = true + template = ".mokogitea/workflows/notify.yml" + }, + { + name = "pr-check.yml" + extension = "yml" + description = "Pull request validation checks" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pr-check.yml" + }, + { + name = "pre-release.yml" + extension = "yml" + description = "Manual pre-release builds for dev/alpha/beta/rc channels" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pre-release.yml" + }, + { + name = "repo-health.yml" + extension = "yml" + description = "Repository health checks and standards validation" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/repo-health.yml" + }, + { + name = "security-audit.yml" + extension = "yml" + description = "Dependency and security audit workflow" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/security-audit.yml" + }, + { + name = "update-server.yml" + extension = "yml" + description = "Update server XML feed with stability channel entries" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/update-server.yml" + } + ] + }, + { + name = "ISSUE_TEMPLATE" + path = ".mokogitea/ISSUE_TEMPLATE" + description = "Issue templates" + requirement_status = "required" + files = [ + { + name = "config.yml" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" + }, + { + name = "adr.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" + }, + { + name = "bug_report.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" + }, + { + name = "documentation.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" + }, + { + name = "enterprise_support.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" + }, + { + name = "feature_request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" + }, + { + name = "firewall-request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" + }, + { + name = "question.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" + }, + { + name = "request-license.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" + }, + { + name = "rfc.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" + }, + { + name = "security.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" + }, + { + name = "dolibarr_issue.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" + }, + { + name = "dolibarr_module_id_request.md" + always_overwrite = true + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } @@ -162,200 +331,6 @@ locals { source_type = "programmatic" } ] - }, - { - name = ".github" - path = ".github" - description = "GitHub configuration" - required = true - purpose = "Contains GitHub Actions workflows and configuration" - subdirectories = [ - { - name = "workflows" - path = ".github/workflows" - description = "GitHub Actions workflows" - requirement_status = "required" - files = [ - { - name = "codeql-analysis.yml" - extension = "yml" - description = "CodeQL security analysis workflow" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/generic/codeql-analysis.yml.template" - }, - { - name = "standards-compliance.yml" - extension = "yml" - description = "MokoStandards compliance validation" - requirement_status = "required" - always_overwrite = true - template = ".github/workflows/standards-compliance.yml" - }, - { - name = "enterprise-firewall-setup.yml" - extension = "yml" - description = "Enterprise firewall configuration" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/enterprise-firewall-setup.yml.template" - }, - { - name = "deploy-dev.yml" - extension = "yml" - description = "SFTP deployment to dev server (htdocs/)" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-dev.yml.template" - }, - { - name = "deploy-demo.yml" - extension = "yml" - description = "SFTP deployment to demo server" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-demo.yml.template" - }, - { - name = "deploy-rs.yml" - extension = "yml" - description = "SFTP deployment to release staging server" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-rs.yml.template" - }, - { - name = "sync-version-on-merge.yml" - extension = "yml" - description = "Auto-bump patch version on merge" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/sync-version-on-merge.yml.template" - }, - { - name = "auto-release.yml" - extension = "yml" - description = "Auto-create GitHub Release on minor version" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/auto-release.yml.template" - }, - { - name = "repository-cleanup.yml" - extension = "yml" - description = "Scheduled cleanup: retired workflows, stale branches" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/repository-cleanup.yml.template" - }, - { - name = "auto-dev-issue.yml" - extension = "yml" - description = "Auto-create tracking issue on dev/rc branch creation" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/auto-dev-issue.yml.template" - }, - { - name = "repo_health.yml" - extension = "yml" - description = "Dolibarr platform health checks (shared guardrails, no module-specific checks)" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/dolibarr/repo_health.yml.template" - }, - { - name = "cascade-dev.yml" - extension = "yml" - description = "Forward-merge main to all open branches (dev, rc/*, beta/*, alpha/*) on push to main" - requirement_status = "required" - always_overwrite = true - template = "workflows/cascade-dev.yml" - }, - { - name = "gitleaks.yml" - extension = "yml" - description = "Secret scanning — detect leaked credentials, API keys, and tokens using Gitleaks" - requirement_status = "required" - always_overwrite = true - template = "workflows/gitleaks.yml" - } - ] - }, - { - name = "ISSUE_TEMPLATE" - path = ".github/ISSUE_TEMPLATE" - description = "GitHub issue templates" - requirement_status = "required" - files = [ - { - name = "config.yml" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" - }, - { - name = "adr.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" - }, - { - name = "bug_report.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" - }, - { - name = "documentation.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" - }, - { - name = "enterprise_support.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" - }, - { - name = "feature_request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" - }, - { - name = "firewall-request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" - }, - { - name = "question.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" - }, - { - name = "request-license.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" - }, - { - name = "rfc.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" - }, - { - name = "security.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" - }, - { - name = "dolibarr_issue.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" - }, - { - name = "dolibarr_module_id_request.md" - always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" - } - ] - } - ] } ] } diff --git a/definitions/default/standards.tf b/definitions/default/standards.tf index f36463b..791f717 100644 --- a/definitions/default/standards.tf +++ b/definitions/default/standards.tf @@ -414,212 +414,197 @@ locals { ] }, { - name = ".github" - path = ".github" - description = "GitHub-specific configuration" - required = true - purpose = "GitHub Actions workflows and configuration" + name = ".mokogitea" + path = ".mokogitea" + description = "Gitea-specific configuration and workflows" + requirement_status = "required" + purpose = "Contains Gitea Actions workflows, manifest.xml, and CI/CD configuration" subdirectories = [ { name = "workflows" - path = ".github/workflows" - description = "GitHub Actions workflows" - required = true + path = ".mokogitea/workflows" + description = "Gitea Actions workflows (universal)" + requirement_status = "required" files = [ { - name = "deploy-dev.yml" + name = "auto-bump.yml" extension = "yml" - description = "SFTP deployment of src/ to the development server" + description = "Auto-bump patch version on push to dev" requirement_status = "required" always_overwrite = true - template = "templates/workflows/shared/deploy-dev.yml.template" - }, - { - name = "deploy-demo.yml" - extension = "yml" - description = "SFTP deployment of src/ to the demo server on merge to main" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-demo.yml.template" - }, - { - name = "deploy-rs.yml" - extension = "yml" - description = "SFTP deployment of src/ to the release staging server on merge to main" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/deploy-rs.yml.template" - }, - { - name = "sync-version-on-merge.yml" - extension = "yml" - description = "Auto-bump patch version on merge and propagate to all file headers" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/sync-version-on-merge.yml.template" - },, + template = ".mokogitea/workflows/auto-bump.yml" }, { name = "auto-release.yml" extension = "yml" - description = "Auto-create GitHub Release on push to main with version from README.md" + description = "Universal build and release pipeline on merge to main" requirement_status = "required" always_overwrite = true - template = "templates/workflows/shared/auto-release.yml.template" + template = ".mokogitea/workflows/auto-release.yml" + }, { - name = "codeql-analysis.yml" + name = "branch-cleanup.yml" extension = "yml" - description = "CodeQL security analysis workflow" + description = "Auto-delete merged feature branches after PR merge" requirement_status = "required" always_overwrite = true - template = "templates/workflows/generic/codeql-analysis.yml.template" - }, - }, - { - name = "repository-cleanup.yml" - extension = "yml" - description = "One-time cleanup: reset labels, strip issue template headers, delete old branches — self-deletes after run" - requirement_status = "suggested" - always_overwrite = true - template = "templates/workflows/shared/repository-cleanup.yml.template" - { - name = "standards-compliance.yml" - extension = "yml" - description = "MokoStandards self-compliance validation" - requirement_status = "suggested" - always_overwrite = true - template = ".github/workflows/standards-compliance.yml" - }, - { - name = "enterprise-firewall-setup.yml" - extension = "yml" - description = "Enterprise firewall rules setup workflow" - requirement_status = "suggested" - always_overwrite = true - template = "templates/workflows/shared/enterprise-firewall-setup.yml.template" - }, - { - name = "auto-dev-issue.yml" - extension = "yml" - description = "Auto-create tracking issue when a dev/** branch is pushed" - requirement_status = "required" - always_overwrite = true - template = "templates/workflows/shared/auto-dev-issue.yml.template" + template = ".mokogitea/workflows/branch-cleanup.yml" }, { name = "cascade-dev.yml" extension = "yml" - description = "Forward-merge main to all open branches (dev, rc/*, beta/*, alpha/*) on push to main" + description = "Forward-merge main to dev and pre-release branches on push to main" requirement_status = "required" always_overwrite = true - template = "workflows/cascade-dev.yml" + template = ".mokogitea/workflows/cascade-dev.yml" + }, + { + name = "cleanup.yml" + extension = "yml" + description = "Scheduled cleanup of retired workflows, stale branches, and old runs" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/cleanup.yml" }, { name = "gitleaks.yml" extension = "yml" - description = "Secret scanning — detect leaked credentials, API keys, and tokens using Gitleaks" + description = "Secret scanning — detect leaked credentials, API keys, and tokens" requirement_status = "required" always_overwrite = true - template = "workflows/gitleaks.yml" + template = ".mokogitea/workflows/gitleaks.yml" + }, + { + name = "issue-branch.yml" + extension = "yml" + description = "Auto-create feature branch from issue assignment" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/issue-branch.yml" + }, + { + name = "notify.yml" + extension = "yml" + description = "Notification workflow for release and CI events" + requirement_status = "suggested" + always_overwrite = true + template = ".mokogitea/workflows/notify.yml" + }, + { + name = "pr-check.yml" + extension = "yml" + description = "Pull request validation checks" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pr-check.yml" + }, + { + name = "pre-release.yml" + extension = "yml" + description = "Manual pre-release builds for dev/alpha/beta/rc channels" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/pre-release.yml" + }, + { + name = "repo-health.yml" + extension = "yml" + description = "Repository health checks and standards validation" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/repo-health.yml" + }, + { + name = "security-audit.yml" + extension = "yml" + description = "Dependency and security audit workflow" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/security-audit.yml" + }, + { + name = "update-server.yml" + extension = "yml" + description = "Update server XML feed with stability channel entries" + requirement_status = "required" + always_overwrite = true + template = ".mokogitea/workflows/update-server.yml" } ] }, { name = "ISSUE_TEMPLATE" - path = ".github/ISSUE_TEMPLATE" - description = "GitHub issue templates" + path = ".mokogitea/ISSUE_TEMPLATE" + description = "Issue templates" requirement_status = "required" files = [ { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } ] files = [ { - name = "config.tf" - extension = "tf" - description = "Repository override configuration for bulk sync" - requirement_status = "suggested" - always_overwrite = false - audience = "developer" - }, - { - name = "copilot.yml" - extension = "yml" - description = "GitHub Copilot configuration — topic list and repo metadata" + name = "manifest.xml" + extension = "xml" + description = "Repository manifest — version, platform, governance metadata" requirement_status = "required" - always_overwrite = true - audience = "developer" - }, - { - name = "copilot-instructions.md" - extension = "md" - description = "GitHub Copilot custom instructions for this repository" - requirement_status = "suggested" always_overwrite = false - audience = "developer" - }, - { - name = "CLAUDE.md" - extension = "md" - description = "Claude Code context and instructions for this repository" - requirement_status = "suggested" - always_overwrite = false - audience = "developer" + template = "managed-by-sync" + source_type = "programmatic" } ] }, diff --git a/definitions/sync/.github-private.def.tf b/definitions/sync/.github-private.def.tf index 1a21a78..1f42b57 100644 --- a/definitions/sync/.github-private.def.tf +++ b/definitions/sync/.github-private.def.tf @@ -497,57 +497,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/.github.def.tf b/definitions/sync/.github.def.tf index d2018b0..d0018d5 100644 --- a/definitions/sync/.github.def.tf +++ b/definitions/sync/.github.def.tf @@ -548,57 +548,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/Copy-PortablePath.def.tf b/definitions/sync/Copy-PortablePath.def.tf index 103790b..4db368a 100644 --- a/definitions/sync/Copy-PortablePath.def.tf +++ b/definitions/sync/Copy-PortablePath.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/DoliMods.def.tf b/definitions/sync/DoliMods.def.tf index b05ee48..14ee660 100644 --- a/definitions/sync/DoliMods.def.tf +++ b/definitions/sync/DoliMods.def.tf @@ -471,7 +471,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -815,7 +815,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1188,67 +1188,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoCRM.def.tf b/definitions/sync/MokoCRM.def.tf index a6c9ad8..a14d6be 100644 --- a/definitions/sync/MokoCRM.def.tf +++ b/definitions/sync/MokoCRM.def.tf @@ -473,7 +473,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -817,7 +817,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1190,67 +1190,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoCassiopeia.def.tf b/definitions/sync/MokoCassiopeia.def.tf index 2ab9446..b77616e 100644 --- a/definitions/sync/MokoCassiopeia.def.tf +++ b/definitions/sync/MokoCassiopeia.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoDoliAdInsights.def.tf b/definitions/sync/MokoDoliAdInsights.def.tf index cd4e429..ab1018b 100644 --- a/definitions/sync/MokoDoliAdInsights.def.tf +++ b/definitions/sync/MokoDoliAdInsights.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliArt.def.tf b/definitions/sync/MokoDoliArt.def.tf index 45adcca..9674ee1 100644 --- a/definitions/sync/MokoDoliArt.def.tf +++ b/definitions/sync/MokoDoliArt.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliAuth.def.tf b/definitions/sync/MokoDoliAuth.def.tf index 0a15d33..2af8989 100644 --- a/definitions/sync/MokoDoliAuth.def.tf +++ b/definitions/sync/MokoDoliAuth.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliCare.def.tf b/definitions/sync/MokoDoliCare.def.tf index 169a5e3..aa0e90c 100644 --- a/definitions/sync/MokoDoliCare.def.tf +++ b/definitions/sync/MokoDoliCare.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliChimp.def.tf b/definitions/sync/MokoDoliChimp.def.tf index 46908f1..735b0a4 100644 --- a/definitions/sync/MokoDoliChimp.def.tf +++ b/definitions/sync/MokoDoliChimp.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliClaude.def.tf b/definitions/sync/MokoDoliClaude.def.tf index d45dcfb..0f6893f 100644 --- a/definitions/sync/MokoDoliClaude.def.tf +++ b/definitions/sync/MokoDoliClaude.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliCredits.def.tf b/definitions/sync/MokoDoliCredits.def.tf index e66b5f8..b1a9e01 100644 --- a/definitions/sync/MokoDoliCredits.def.tf +++ b/definitions/sync/MokoDoliCredits.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliDymo.def.tf b/definitions/sync/MokoDoliDymo.def.tf index c8c892d..cfa3fa2 100644 --- a/definitions/sync/MokoDoliDymo.def.tf +++ b/definitions/sync/MokoDoliDymo.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliForm.def.tf b/definitions/sync/MokoDoliForm.def.tf index 4ccf61c..5cc9646 100644 --- a/definitions/sync/MokoDoliForm.def.tf +++ b/definitions/sync/MokoDoliForm.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliG.def.tf b/definitions/sync/MokoDoliG.def.tf index c45cb5b..0ca343c 100644 --- a/definitions/sync/MokoDoliG.def.tf +++ b/definitions/sync/MokoDoliG.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliGithub.def.tf b/definitions/sync/MokoDoliGithub.def.tf index 5b64074..396aa7b 100644 --- a/definitions/sync/MokoDoliGithub.def.tf +++ b/definitions/sync/MokoDoliGithub.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliHRM.def.tf b/definitions/sync/MokoDoliHRM.def.tf index bcf96c8..64032b0 100644 --- a/definitions/sync/MokoDoliHRM.def.tf +++ b/definitions/sync/MokoDoliHRM.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliMods.def.tf b/definitions/sync/MokoDoliMods.def.tf index 990bb31..768ab50 100644 --- a/definitions/sync/MokoDoliMods.def.tf +++ b/definitions/sync/MokoDoliMods.def.tf @@ -324,67 +324,67 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliMulti.def.tf b/definitions/sync/MokoDoliMulti.def.tf index 5a93f51..0fdf2b2 100644 --- a/definitions/sync/MokoDoliMulti.def.tf +++ b/definitions/sync/MokoDoliMulti.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliOffline.def.tf b/definitions/sync/MokoDoliOffline.def.tf index 22cdcf1..099b0bc 100644 --- a/definitions/sync/MokoDoliOffline.def.tf +++ b/definitions/sync/MokoDoliOffline.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliPhone.com.def.tf b/definitions/sync/MokoDoliPhone.com.def.tf index 333caf4..d3a37c3 100644 --- a/definitions/sync/MokoDoliPhone.com.def.tf +++ b/definitions/sync/MokoDoliPhone.com.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliProjTemplate.def.tf b/definitions/sync/MokoDoliProjTemplate.def.tf index 8b13e9f..99aaf15 100644 --- a/definitions/sync/MokoDoliProjTemplate.def.tf +++ b/definitions/sync/MokoDoliProjTemplate.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliRelease.def.tf b/definitions/sync/MokoDoliRelease.def.tf index f4d24fe..fffe5dc 100644 --- a/definitions/sync/MokoDoliRelease.def.tf +++ b/definitions/sync/MokoDoliRelease.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliSign.def.tf b/definitions/sync/MokoDoliSign.def.tf index 94fc1cf..2ffede7 100644 --- a/definitions/sync/MokoDoliSign.def.tf +++ b/definitions/sync/MokoDoliSign.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliTools.def.tf b/definitions/sync/MokoDoliTools.def.tf index f313cf8..de4aa3c 100644 --- a/definitions/sync/MokoDoliTools.def.tf +++ b/definitions/sync/MokoDoliTools.def.tf @@ -453,7 +453,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -752,7 +752,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1110,67 +1110,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDoliTraining.def.tf b/definitions/sync/MokoDoliTraining.def.tf index 1ed5f7c..c4a711b 100644 --- a/definitions/sync/MokoDoliTraining.def.tf +++ b/definitions/sync/MokoDoliTraining.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoDolibarr.def.tf b/definitions/sync/MokoDolibarr.def.tf index 73352c6..7b521f3 100644 --- a/definitions/sync/MokoDolibarr.def.tf +++ b/definitions/sync/MokoDolibarr.def.tf @@ -324,67 +324,67 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoISOUpdatePortable.def.tf b/definitions/sync/MokoISOUpdatePortable.def.tf index 6675543..d3352bd 100644 --- a/definitions/sync/MokoISOUpdatePortable.def.tf +++ b/definitions/sync/MokoISOUpdatePortable.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/MokoJoomHero.def.tf b/definitions/sync/MokoJoomHero.def.tf index 7340428..5cea674 100644 --- a/definitions/sync/MokoJoomHero.def.tf +++ b/definitions/sync/MokoJoomHero.def.tf @@ -520,7 +520,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -817,7 +817,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1210,62 +1210,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoJoomTOS.def.tf b/definitions/sync/MokoJoomTOS.def.tf index 5ff0180..0d69bd6 100644 --- a/definitions/sync/MokoJoomTOS.def.tf +++ b/definitions/sync/MokoJoomTOS.def.tf @@ -520,7 +520,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -817,7 +817,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1210,62 +1210,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoPerfectPublisher-Discord.def.tf b/definitions/sync/MokoPerfectPublisher-Discord.def.tf index 2290213..3084631 100644 --- a/definitions/sync/MokoPerfectPublisher-Discord.def.tf +++ b/definitions/sync/MokoPerfectPublisher-Discord.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Client.def.tf b/definitions/sync/MokoStandards-Template-Client.def.tf index 8a6a951..6561152 100644 --- a/definitions/sync/MokoStandards-Template-Client.def.tf +++ b/definitions/sync/MokoStandards-Template-Client.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Dolibarr.def.tf b/definitions/sync/MokoStandards-Template-Dolibarr.def.tf index 2af7a3e..f29430d 100644 --- a/definitions/sync/MokoStandards-Template-Dolibarr.def.tf +++ b/definitions/sync/MokoStandards-Template-Dolibarr.def.tf @@ -472,7 +472,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.dolibarr.md.template" + template = "templates/mokogitea/copilot-instructions.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -816,7 +816,7 @@ EOT always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.dolibarr.md.template" + template = "templates/mokogitea/CLAUDE.dolibarr.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1189,67 +1189,67 @@ EOT { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "dolibarr_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md" }, { name = "dolibarr_module_id_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Generic.def.tf b/definitions/sync/MokoStandards-Template-Generic.def.tf index a0498f1..f2e0a95 100644 --- a/definitions/sync/MokoStandards-Template-Generic.def.tf +++ b/definitions/sync/MokoStandards-Template-Generic.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Joomla-Component.def.tf b/definitions/sync/MokoStandards-Template-Joomla-Component.def.tf index eb54758..b5f4357 100644 --- a/definitions/sync/MokoStandards-Template-Joomla-Component.def.tf +++ b/definitions/sync/MokoStandards-Template-Joomla-Component.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Joomla-Library.def.tf b/definitions/sync/MokoStandards-Template-Joomla-Library.def.tf index a88c949..e902c04 100644 --- a/definitions/sync/MokoStandards-Template-Joomla-Library.def.tf +++ b/definitions/sync/MokoStandards-Template-Joomla-Library.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Joomla-Module.def.tf b/definitions/sync/MokoStandards-Template-Joomla-Module.def.tf index 9132923..228b4bc 100644 --- a/definitions/sync/MokoStandards-Template-Joomla-Module.def.tf +++ b/definitions/sync/MokoStandards-Template-Joomla-Module.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Joomla-Package.def.tf b/definitions/sync/MokoStandards-Template-Joomla-Package.def.tf index 4043e79..cb3c00c 100644 --- a/definitions/sync/MokoStandards-Template-Joomla-Package.def.tf +++ b/definitions/sync/MokoStandards-Template-Joomla-Package.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Joomla-Plugin.def.tf b/definitions/sync/MokoStandards-Template-Joomla-Plugin.def.tf index bb6ab8f..80373b9 100644 --- a/definitions/sync/MokoStandards-Template-Joomla-Plugin.def.tf +++ b/definitions/sync/MokoStandards-Template-Joomla-Plugin.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoStandards-Template-Joomla-Template.def.tf b/definitions/sync/MokoStandards-Template-Joomla-Template.def.tf index 5e784af..450bddb 100644 --- a/definitions/sync/MokoStandards-Template-Joomla-Template.def.tf +++ b/definitions/sync/MokoStandards-Template-Joomla-Template.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoTesting.def.tf b/definitions/sync/MokoTesting.def.tf index 7ad3cd9..758adc0 100644 --- a/definitions/sync/MokoTesting.def.tf +++ b/definitions/sync/MokoTesting.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/MokoWaaS.def.tf b/definitions/sync/MokoWaaS.def.tf index b211c54..71b54f3 100644 --- a/definitions/sync/MokoWaaS.def.tf +++ b/definitions/sync/MokoWaaS.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoWaaSAnnounce.def.tf b/definitions/sync/MokoWaaSAnnounce.def.tf index d9c0d74..55ad625 100644 --- a/definitions/sync/MokoWaaSAnnounce.def.tf +++ b/definitions/sync/MokoWaaSAnnounce.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoWaaSBrand.def.tf b/definitions/sync/MokoWaaSBrand.def.tf index b2b1a60..3ef5892 100644 --- a/definitions/sync/MokoWaaSBrand.def.tf +++ b/definitions/sync/MokoWaaSBrand.def.tf @@ -497,7 +497,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -794,7 +794,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1163,62 +1163,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/definitions/sync/MokoWinSetup.def.tf b/definitions/sync/MokoWinSetup.def.tf index 2d058af..8457783 100644 --- a/definitions/sync/MokoWinSetup.def.tf +++ b/definitions/sync/MokoWinSetup.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/PLG_FINDER_MOKOVMSMARTSEARCH.def.tf b/definitions/sync/PLG_FINDER_MOKOVMSMARTSEARCH.def.tf index 9bcc75d..dab759f 100644 --- a/definitions/sync/PLG_FINDER_MOKOVMSMARTSEARCH.def.tf +++ b/definitions/sync/PLG_FINDER_MOKOVMSMARTSEARCH.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/client-clarksvillefurs.def.tf b/definitions/sync/client-clarksvillefurs.def.tf index 59c8f3c..0f672ab 100644 --- a/definitions/sync/client-clarksvillefurs.def.tf +++ b/definitions/sync/client-clarksvillefurs.def.tf @@ -590,57 +590,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/client-kiddieland.def.tf b/definitions/sync/client-kiddieland.def.tf index 48c3859..2101863 100644 --- a/definitions/sync/client-kiddieland.def.tf +++ b/definitions/sync/client-kiddieland.def.tf @@ -549,57 +549,57 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" } ] } diff --git a/definitions/sync/client-vexcreations.def.tf b/definitions/sync/client-vexcreations.def.tf index 74001f9..f48aa8d 100644 --- a/definitions/sync/client-vexcreations.def.tf +++ b/definitions/sync/client-vexcreations.def.tf @@ -521,7 +521,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "copilot-instructions.md" - template = "templates/github/copilot-instructions.joomla.md.template" + template = "templates/mokogitea/copilot-instructions.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -818,7 +818,7 @@ locals { always_overwrite = false destination_path = ".github" destination_filename = "CLAUDE.md" - template = "templates/github/CLAUDE.joomla.md.template" + template = "templates/mokogitea/CLAUDE.joomla.md.template" stub_content = <<-MOKO_END > [!IMPORTANT] > **🔧 AI Self-Update Required on First Use** @@ -1211,62 +1211,62 @@ locals { { name = "config.yml" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/config.yml" + template = "templates/mokogitea/ISSUE_TEMPLATE/config.yml" }, { name = "adr.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/adr.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/adr.md" }, { name = "bug_report.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/bug_report.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/bug_report.md" }, { name = "documentation.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/documentation.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/documentation.md" }, { name = "enterprise_support.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md" }, { name = "feature_request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/feature_request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/feature_request.md" }, { name = "firewall-request.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/firewall-request.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md" }, { name = "question.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/question.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/question.md" }, { name = "request-license.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/request-license.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/request-license.md" }, { name = "rfc.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/rfc.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/rfc.md" }, { name = "security.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/security.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/security.md" }, { name = "joomla_issue.md" always_overwrite = true - template = "templates/github/ISSUE_TEMPLATE/joomla_issue.md" + template = "templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md" } ] } diff --git a/lib/Enterprise/RepositorySynchronizer.php b/lib/Enterprise/RepositorySynchronizer.php index 286e08c..9cb16d2 100644 --- a/lib/Enterprise/RepositorySynchronizer.php +++ b/lib/Enterprise/RepositorySynchronizer.php @@ -1245,7 +1245,7 @@ HCL; // CODEOWNERS — GitHub only; Gitea doesn't enforce it if ($this->adapter->getPlatformName() === 'github') { - $shared[] = ['templates/github/CODEOWNERS', '.github/CODEOWNERS']; + $shared[] = ['templates/mokogitea/CODEOWNERS', '.github/CODEOWNERS']; } // Platform-specific gitignore (merged, not replaced) diff --git a/templates/gitea/CLAUDE.dolibarr.md.template b/templates/mokogitea/CLAUDE.dolibarr.md.template similarity index 99% rename from templates/gitea/CLAUDE.dolibarr.md.template rename to templates/mokogitea/CLAUDE.dolibarr.md.template index 0e8a9e1..6627454 100644 --- a/templates/gitea/CLAUDE.dolibarr.md.template +++ b/templates/mokogitea/CLAUDE.dolibarr.md.template @@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-3.0-or-later DEFGROUP: MokoStandards.Templates.GitHub INGROUP: MokoStandards.Templates REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards -PATH: /templates/github/CLAUDE.dolibarr.md.template +PATH: /templates/mokogitea/CLAUDE.dolibarr.md.template VERSION: XX.YY.ZZ BRIEF: Claude AI assistant context template for Dolibarr/MokoCRM module repositories NOTE: Synced to .gitea/CLAUDE.md in all Dolibarr/CRM repos via bulk sync. diff --git a/templates/gitea/CLAUDE.joomla.md.template b/templates/mokogitea/CLAUDE.joomla.md.template similarity index 99% rename from templates/gitea/CLAUDE.joomla.md.template rename to templates/mokogitea/CLAUDE.joomla.md.template index 2076912..1bb492f 100644 --- a/templates/gitea/CLAUDE.joomla.md.template +++ b/templates/mokogitea/CLAUDE.joomla.md.template @@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-3.0-or-later DEFGROUP: MokoStandards.Templates.GitHub INGROUP: MokoStandards.Templates REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards -PATH: /templates/github/CLAUDE.joomla.md.template +PATH: /templates/mokogitea/CLAUDE.joomla.md.template VERSION: XX.YY.ZZ BRIEF: Claude AI assistant context template for Joomla/MokoWaaS governed repositories NOTE: Synced to .gitea/CLAUDE.md in all Joomla/WaaS repos via bulk sync. diff --git a/templates/gitea/CLAUDE.md.template b/templates/mokogitea/CLAUDE.md.template similarity index 99% rename from templates/gitea/CLAUDE.md.template rename to templates/mokogitea/CLAUDE.md.template index 36e3bb0..86c3ae2 100644 --- a/templates/gitea/CLAUDE.md.template +++ b/templates/mokogitea/CLAUDE.md.template @@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-3.0-or-later DEFGROUP: MokoStandards.Templates.GitHub INGROUP: MokoStandards.Templates REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards -PATH: /templates/github/CLAUDE.md.template +PATH: /templates/mokogitea/CLAUDE.md.template VERSION: XX.YY.ZZ BRIEF: Standard CLAUDE.md template for Moko Consulting governed repositories NOTE: Synced to .gitea/CLAUDE.md in all governed repositories via bulk sync. diff --git a/templates/gitea/CODEOWNERS b/templates/mokogitea/CODEOWNERS similarity index 100% rename from templates/gitea/CODEOWNERS rename to templates/mokogitea/CODEOWNERS diff --git a/templates/gitea/CODEOWNERS.template b/templates/mokogitea/CODEOWNERS.template similarity index 100% rename from templates/gitea/CODEOWNERS.template rename to templates/mokogitea/CODEOWNERS.template diff --git a/templates/gitea/ISSUE_TEMPLATE/adr.md b/templates/mokogitea/ISSUE_TEMPLATE/adr.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/adr.md rename to templates/mokogitea/ISSUE_TEMPLATE/adr.md diff --git a/templates/gitea/ISSUE_TEMPLATE/bug_report.md b/templates/mokogitea/ISSUE_TEMPLATE/bug_report.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/bug_report.md rename to templates/mokogitea/ISSUE_TEMPLATE/bug_report.md diff --git a/templates/gitea/ISSUE_TEMPLATE/config.yml b/templates/mokogitea/ISSUE_TEMPLATE/config.yml similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/config.yml rename to templates/mokogitea/ISSUE_TEMPLATE/config.yml diff --git a/templates/gitea/ISSUE_TEMPLATE/documentation.md b/templates/mokogitea/ISSUE_TEMPLATE/documentation.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/documentation.md rename to templates/mokogitea/ISSUE_TEMPLATE/documentation.md diff --git a/templates/gitea/ISSUE_TEMPLATE/dolibarr_issue.md b/templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/dolibarr_issue.md rename to templates/mokogitea/ISSUE_TEMPLATE/dolibarr_issue.md diff --git a/templates/gitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md b/templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md rename to templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md diff --git a/templates/gitea/ISSUE_TEMPLATE/enterprise_support.md b/templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/enterprise_support.md rename to templates/mokogitea/ISSUE_TEMPLATE/enterprise_support.md diff --git a/templates/gitea/ISSUE_TEMPLATE/feature_request.md b/templates/mokogitea/ISSUE_TEMPLATE/feature_request.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/feature_request.md rename to templates/mokogitea/ISSUE_TEMPLATE/feature_request.md diff --git a/templates/gitea/ISSUE_TEMPLATE/firewall-request.md b/templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/firewall-request.md rename to templates/mokogitea/ISSUE_TEMPLATE/firewall-request.md diff --git a/templates/gitea/ISSUE_TEMPLATE/joomla_issue.md b/templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/joomla_issue.md rename to templates/mokogitea/ISSUE_TEMPLATE/joomla_issue.md diff --git a/templates/gitea/ISSUE_TEMPLATE/question.md b/templates/mokogitea/ISSUE_TEMPLATE/question.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/question.md rename to templates/mokogitea/ISSUE_TEMPLATE/question.md diff --git a/templates/gitea/ISSUE_TEMPLATE/request-license.md b/templates/mokogitea/ISSUE_TEMPLATE/request-license.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/request-license.md rename to templates/mokogitea/ISSUE_TEMPLATE/request-license.md diff --git a/templates/gitea/ISSUE_TEMPLATE/rfc.md b/templates/mokogitea/ISSUE_TEMPLATE/rfc.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/rfc.md rename to templates/mokogitea/ISSUE_TEMPLATE/rfc.md diff --git a/templates/gitea/ISSUE_TEMPLATE/security.md b/templates/mokogitea/ISSUE_TEMPLATE/security.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/security.md rename to templates/mokogitea/ISSUE_TEMPLATE/security.md diff --git a/templates/gitea/ISSUE_TEMPLATE/version.md b/templates/mokogitea/ISSUE_TEMPLATE/version.md similarity index 100% rename from templates/gitea/ISSUE_TEMPLATE/version.md rename to templates/mokogitea/ISSUE_TEMPLATE/version.md diff --git a/templates/gitea/PULL_REQUEST_TEMPLATE.md b/templates/mokogitea/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from templates/gitea/PULL_REQUEST_TEMPLATE.md rename to templates/mokogitea/PULL_REQUEST_TEMPLATE.md diff --git a/templates/gitea/PULL_REQUEST_TEMPLATE.md.backup b/templates/mokogitea/PULL_REQUEST_TEMPLATE.md.backup similarity index 100% rename from templates/gitea/PULL_REQUEST_TEMPLATE.md.backup rename to templates/mokogitea/PULL_REQUEST_TEMPLATE.md.backup diff --git a/templates/gitea/README.md b/templates/mokogitea/README.md similarity index 99% rename from templates/gitea/README.md rename to templates/mokogitea/README.md index 7ad1db7..cb1011c 100644 --- a/templates/gitea/README.md +++ b/templates/mokogitea/README.md @@ -22,7 +22,7 @@ along with this program. If not, see . DEFGROUP: MokoStandards.Templates INGROUP: MokoStandards.GitHub REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards -PATH: /templates/github/README.md +PATH: /templates/mokogitea/README.md BRIEF: GitHub-specific templates including issues, PRs, and CODEOWNERS --> @@ -371,7 +371,7 @@ Require status checks that verify: ## Metadata -* **Document**: templates/github/README.md +* **Document**: templates/mokogitea/README.md * **Repository**: [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/MokoStandards) * **Owner**: Moko Consulting Engineering Team * **Scope**: GitHub templates and configuration diff --git a/templates/gitea/copilot-instructions.dolibarr.md.template b/templates/mokogitea/copilot-instructions.dolibarr.md.template similarity index 99% rename from templates/gitea/copilot-instructions.dolibarr.md.template rename to templates/mokogitea/copilot-instructions.dolibarr.md.template index 493efc5..12847b6 100644 --- a/templates/gitea/copilot-instructions.dolibarr.md.template +++ b/templates/mokogitea/copilot-instructions.dolibarr.md.template @@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-3.0-or-later DEFGROUP: MokoStandards.Templates.GitHub INGROUP: MokoStandards.Templates REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards -PATH: /templates/github/copilot-instructions.dolibarr.md.template +PATH: /templates/mokogitea/copilot-instructions.dolibarr.md.template VERSION: XX.YY.ZZ BRIEF: GitHub Copilot custom instructions template for Dolibarr/MokoCRM module repositories NOTE: Synced to .gitea/copilot-instructions.md in all Dolibarr/CRM module repos via bulk sync. diff --git a/templates/gitea/copilot-instructions.joomla.md.template b/templates/mokogitea/copilot-instructions.joomla.md.template similarity index 99% rename from templates/gitea/copilot-instructions.joomla.md.template rename to templates/mokogitea/copilot-instructions.joomla.md.template index ffacfb2..52e2021 100644 --- a/templates/gitea/copilot-instructions.joomla.md.template +++ b/templates/mokogitea/copilot-instructions.joomla.md.template @@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-3.0-or-later DEFGROUP: MokoStandards.Templates.GitHub INGROUP: MokoStandards.Templates REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards -PATH: /templates/github/copilot-instructions.joomla.md.template +PATH: /templates/mokogitea/copilot-instructions.joomla.md.template VERSION: XX.YY.ZZ BRIEF: GitHub Copilot custom instructions template for Joomla/MokoWaaS governed repositories NOTE: Synced to .gitea/copilot-instructions.md in all Joomla/WaaS repos via bulk sync. diff --git a/templates/gitea/copilot-instructions.md.template b/templates/mokogitea/copilot-instructions.md.template similarity index 99% rename from templates/gitea/copilot-instructions.md.template rename to templates/mokogitea/copilot-instructions.md.template index ae4c640..32fd6f1 100644 --- a/templates/gitea/copilot-instructions.md.template +++ b/templates/mokogitea/copilot-instructions.md.template @@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-3.0-or-later DEFGROUP: MokoStandards.Templates.GitHub INGROUP: MokoStandards.Templates REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards -PATH: /templates/github/copilot-instructions.md.template +PATH: /templates/mokogitea/copilot-instructions.md.template VERSION: XX.YY.ZZ BRIEF: Standard GitHub Copilot custom instructions template for Moko Consulting governed repositories NOTE: Synced to .gitea/copilot-instructions.md in all governed repositories via bulk sync. diff --git a/templates/gitea/dependabot.yml.template b/templates/mokogitea/dependabot.yml.template similarity index 98% rename from templates/gitea/dependabot.yml.template rename to templates/mokogitea/dependabot.yml.template index 950a78e..00550b2 100644 --- a/templates/gitea/dependabot.yml.template +++ b/templates/mokogitea/dependabot.yml.template @@ -8,7 +8,7 @@ # DEFGROUP: GitHub.Dependabot # INGROUP: MokoStandards.Security # REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards -# PATH: /templates/github/dependabot.yml.template +# PATH: /templates/mokogitea/dependabot.yml.template # VERSION: XX.YY.ZZ # BRIEF: Template Dependabot configuration for governed repositories # NOTE: Copy to .gitea/dependabot.yml and remove ecosystems that don't apply. diff --git a/templates/gitea/override.tf.template b/templates/mokogitea/override.tf.template similarity index 100% rename from templates/gitea/override.tf.template rename to templates/mokogitea/override.tf.template diff --git a/templates/gitea/renovate.json b/templates/mokogitea/renovate.json similarity index 100% rename from templates/gitea/renovate.json rename to templates/mokogitea/renovate.json diff --git a/templates/workflows/dependency-audit.yml b/templates/workflows/dependency-audit.yml index 1395adf..3c0c137 100644 --- a/templates/workflows/dependency-audit.yml +++ b/templates/workflows/dependency-audit.yml @@ -1,116 +1,116 @@ -# Copyright (C) 2026 Moko Consulting -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# FILE INFORMATION -# DEFGROUP: Gitea.Workflow -# INGROUP: MokoStandards -# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform -# PATH: /templates/workflows/dependency-audit.yml -# VERSION: 01.00.00 -# BRIEF: Scheduled dependency audit — runs composer audit across repos - -name: Dependency Audit - -on: - schedule: - - cron: '0 8 * * 1' # Every Monday at 08:00 UTC - workflow_dispatch: - -env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - -jobs: - audit: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.3' - tools: composer - - - name: Run composer audit - id: audit - run: | - if [ ! -f composer.json ]; then - echo "No composer.json found — skipping." - echo "skip=true" >> "$GITHUB_OUTPUT" - exit 0 - fi - - echo "skip=false" >> "$GITHUB_OUTPUT" - - set +e - AUDIT_OUTPUT=$(composer audit --format=json 2>&1) - AUDIT_EXIT=$? - set -e - - echo "$AUDIT_OUTPUT" > audit-results.json - - if [ "$AUDIT_EXIT" -ne 0 ]; then - echo "vulnerable=true" >> "$GITHUB_OUTPUT" - else - echo "vulnerable=false" >> "$GITHUB_OUTPUT" - fi - - - name: Parse vulnerabilities - if: steps.audit.outputs.skip != 'true' - id: parse - run: | - if [ "${{ steps.audit.outputs.vulnerable }}" = "true" ]; then - echo "## Vulnerabilities Found" >> "$GITHUB_STEP_SUMMARY" - echo "" >> "$GITHUB_STEP_SUMMARY" - - # Extract advisory count - ADVISORIES=$(jq -r '.advisories | length // 0' audit-results.json 2>/dev/null || echo "0") - echo "Found **${ADVISORIES}** advisories." >> "$GITHUB_STEP_SUMMARY" - echo "" >> "$GITHUB_STEP_SUMMARY" - - # List each advisory - jq -r ' - .advisories | to_entries[] | - "| \(.key) | \(.value[0].title // "N/A") | \(.value[0].cve // "N/A") | \(.value[0].affectedVersions // "N/A") |" - ' audit-results.json 2>/dev/null | { - echo "| Package | Title | CVE | Affected Versions |" - echo "|---------|-------|-----|-------------------|" - cat - } >> "$GITHUB_STEP_SUMMARY" - - echo "count=${ADVISORIES}" >> "$GITHUB_OUTPUT" - else - echo "## No Vulnerabilities Found" >> "$GITHUB_STEP_SUMMARY" - echo "" >> "$GITHUB_STEP_SUMMARY" - echo "All dependencies passed the audit." >> "$GITHUB_STEP_SUMMARY" - echo "count=0" >> "$GITHUB_OUTPUT" - fi - - - name: Notify via ntfy - if: steps.audit.outputs.vulnerable == 'true' - run: | - NTFY_URL="${{ vars.NTFY_URL }}" - NTFY_TOPIC="${{ vars.NTFY_TOPIC }}" - REPO="${{ github.repository }}" - COUNT="${{ steps.parse.outputs.count }}" - RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - - curl -s \ - -H "Title: Dependency Audit: ${REPO}" \ - -H "Priority: high" \ - -H "Tags: warning,package" \ - -H "Click: ${RUN_URL}" \ - -d "Found ${COUNT} vulnerability advisory(ies) in ${REPO}. Review the workflow run for details." \ - "${NTFY_URL}/${NTFY_TOPIC}" - - - name: Summary - if: always() && steps.audit.outputs.skip != 'true' - run: | - echo "" >> "$GITHUB_STEP_SUMMARY" - echo "---" >> "$GITHUB_STEP_SUMMARY" - echo "" >> "$GITHUB_STEP_SUMMARY" - echo "Audit completed at $(date -u '+%Y-%m-%d %H:%M:%S UTC')." >> "$GITHUB_STEP_SUMMARY" - echo "Repository: **${{ github.repository }}**" >> "$GITHUB_STEP_SUMMARY" - echo "Branch: **${{ github.ref_name }}**" >> "$GITHUB_STEP_SUMMARY" +# Copyright (C) 2026 Moko Consulting +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# FILE INFORMATION +# DEFGROUP: Gitea.Workflow +# INGROUP: MokoStandards +# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform +# PATH: /templates/workflows/dependency-audit.yml +# VERSION: 01.00.00 +# BRIEF: Scheduled dependency audit — runs composer audit across repos + +name: Dependency Audit + +on: + schedule: + - cron: '0 8 * * 1' # Every Monday at 08:00 UTC + workflow_dispatch: + +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + +jobs: + audit: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + tools: composer + + - name: Run composer audit + id: audit + run: | + if [ ! -f composer.json ]; then + echo "No composer.json found — skipping." + echo "skip=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo "skip=false" >> "$GITHUB_OUTPUT" + + set +e + AUDIT_OUTPUT=$(composer audit --format=json 2>&1) + AUDIT_EXIT=$? + set -e + + echo "$AUDIT_OUTPUT" > audit-results.json + + if [ "$AUDIT_EXIT" -ne 0 ]; then + echo "vulnerable=true" >> "$GITHUB_OUTPUT" + else + echo "vulnerable=false" >> "$GITHUB_OUTPUT" + fi + + - name: Parse vulnerabilities + if: steps.audit.outputs.skip != 'true' + id: parse + run: | + if [ "${{ steps.audit.outputs.vulnerable }}" = "true" ]; then + echo "## Vulnerabilities Found" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + + # Extract advisory count + ADVISORIES=$(jq -r '.advisories | length // 0' audit-results.json 2>/dev/null || echo "0") + echo "Found **${ADVISORIES}** advisories." >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + + # List each advisory + jq -r ' + .advisories | to_entries[] | + "| \(.key) | \(.value[0].title // "N/A") | \(.value[0].cve // "N/A") | \(.value[0].affectedVersions // "N/A") |" + ' audit-results.json 2>/dev/null | { + echo "| Package | Title | CVE | Affected Versions |" + echo "|---------|-------|-----|-------------------|" + cat + } >> "$GITHUB_STEP_SUMMARY" + + echo "count=${ADVISORIES}" >> "$GITHUB_OUTPUT" + else + echo "## No Vulnerabilities Found" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + echo "All dependencies passed the audit." >> "$GITHUB_STEP_SUMMARY" + echo "count=0" >> "$GITHUB_OUTPUT" + fi + + - name: Notify via ntfy + if: steps.audit.outputs.vulnerable == 'true' + run: | + NTFY_URL="${{ vars.NTFY_URL }}" + NTFY_TOPIC="${{ vars.NTFY_TOPIC }}" + REPO="${{ github.repository }}" + COUNT="${{ steps.parse.outputs.count }}" + RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" + + curl -s \ + -H "Title: Dependency Audit: ${REPO}" \ + -H "Priority: high" \ + -H "Tags: warning,package" \ + -H "Click: ${RUN_URL}" \ + -d "Found ${COUNT} vulnerability advisory(ies) in ${REPO}. Review the workflow run for details." \ + "${NTFY_URL}/${NTFY_TOPIC}" + + - name: Summary + if: always() && steps.audit.outputs.skip != 'true' + run: | + echo "" >> "$GITHUB_STEP_SUMMARY" + echo "---" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + echo "Audit completed at $(date -u '+%Y-%m-%d %H:%M:%S UTC')." >> "$GITHUB_STEP_SUMMARY" + echo "Repository: **${{ github.repository }}**" >> "$GITHUB_STEP_SUMMARY" + echo "Branch: **${{ github.ref_name }}**" >> "$GITHUB_STEP_SUMMARY"