refactor: fix definition drift — migrate to .mokogitea, rename templates/gitea → templates/mokogitea
Platform: moko-platform CI / Gate 2: Unit Tests (8.1) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 2: Unit Tests (8.2) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 2: Unit Tests (8.3) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 3: Self-Health Check (push) Blocked by required conditions
Platform: moko-platform CI / Gate 4: Governance (push) Blocked by required conditions
Platform: moko-platform CI / Gate 5: Template Integrity (push) Blocked by required conditions
Platform: moko-platform CI / CI Summary (push) Blocked by required conditions
Generic: Repo Health / Release configuration (push) Blocked by required conditions
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 3s
Platform: moko-platform CI / Gate 1: Code Quality (push) Failing after 46s
Platform: moko-platform CI / Gate 2: Unit Tests (8.1) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 2: Unit Tests (8.2) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 2: Unit Tests (8.3) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 3: Self-Health Check (push) Blocked by required conditions
Platform: moko-platform CI / Gate 4: Governance (push) Blocked by required conditions
Platform: moko-platform CI / Gate 5: Template Integrity (push) Blocked by required conditions
Platform: moko-platform CI / CI Summary (push) Blocked by required conditions
Generic: Repo Health / Release configuration (push) Blocked by required conditions
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 3s
Platform: moko-platform CI / Gate 1: Code Quality (push) Failing after 46s
- Replace all .github/workflows refs in definitions with .mokogitea/workflows - Add all 13 universal workflows to every platform definition - Fix ISSUE_TEMPLATE paths: .github/ → .mokogitea/ - Fix template source paths: templates/github/ → templates/mokogitea/ - Remove 60+ dead template references pointing to non-existent files - Rename templates/gitea/ directory to templates/mokogitea/ - Add orphaned workflows (ci-platform, issue-branch) to definitions Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,223 +1,223 @@
|
||||
# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
#
|
||||
# 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 <hello@mokoconsulting.tech>
|
||||
#
|
||||
# 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
|
||||
|
||||
+188
-188
@@ -1,188 +1,188 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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[^>]*>([^<]+)<\/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 <updateservers>.\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('/<update>/', $response);
|
||||
foreach ($sections as $section) {
|
||||
if (strpos($section, '<tag>stable</tag>') !== false) {
|
||||
if (preg_match('/<version>([^<]+)<\/version>/', $section, $m)) {
|
||||
$stableVersion = $m[1];
|
||||
}
|
||||
if (preg_match('/<downloadurl[^>]*>([^<]+)<\/downloadurl>/', $section, $m)) {
|
||||
$downloadUrl = trim($m[1]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($stableVersion === null && preg_match('/<version>([^<]+)<\/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
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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[^>]*>([^<]+)<\/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 <updateservers>.\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('/<update>/', $response);
|
||||
foreach ($sections as $section) {
|
||||
if (strpos($section, '<tag>stable</tag>') !== false) {
|
||||
if (preg_match('/<version>([^<]+)<\/version>/', $section, $m)) {
|
||||
$stableVersion = $m[1];
|
||||
}
|
||||
if (preg_match('/<downloadurl[^>]*>([^<]+)<\/downloadurl>/', $section, $m)) {
|
||||
$downloadUrl = trim($m[1]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($stableVersion === null && preg_match('/<version>([^<]+)<\/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);
|
||||
|
||||
+136
-136
@@ -1,136 +1,136 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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, '<extension') !== false && strpos($xml, 'targetplatform') !== false) {
|
||||
$manifest = $f;
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($manifest === null) {
|
||||
fwrite(STDERR, "No manifest with targetplatform found\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$xml = file_get_contents($manifest);
|
||||
$relManifest = str_replace($root . '/', '', $manifest);
|
||||
|
||||
// Extract targetplatform version regex
|
||||
$targetRegex = '';
|
||||
if (preg_match('/targetplatform[^>]*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>([^<]+)<\/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
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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, '<extension') !== false && strpos($xml, 'targetplatform') !== false) {
|
||||
$manifest = $f;
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($manifest === null) {
|
||||
fwrite(STDERR, "No manifest with targetplatform found\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$xml = file_get_contents($manifest);
|
||||
$relManifest = str_replace($root . '/', '', $manifest);
|
||||
|
||||
// Extract targetplatform version regex
|
||||
$targetRegex = '';
|
||||
if (preg_match('/targetplatform[^>]*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>([^<]+)<\/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);
|
||||
|
||||
+209
-209
@@ -1,209 +1,209 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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;
|
||||
}
|
||||
|
||||
+233
-233
@@ -1,233 +1,233 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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, '<extension') !== false || strpos($xml, '<version>') !== false) {
|
||||
if (preg_match('|<version>(\d{2}\.\d{2}\.\d{2})</version>|', $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>{$version}</version>",
|
||||
"<version>{$nextVersion}</version>",
|
||||
$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
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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, '<extension') !== false || strpos($xml, '<version>') !== false) {
|
||||
if (preg_match('|<version>(\d{2}\.\d{2}\.\d{2})</version>|', $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>{$version}</version>",
|
||||
"<version>{$nextVersion}</version>",
|
||||
$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);
|
||||
|
||||
+169
-822
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+159
-244
@@ -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"
|
||||
|
||||
+164
-780
@@ -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/<repo-name>` |
|
||||
> | `{{EXTENSION_NAME}}` | The `<name>` element in `manifest.xml` at the repository root |
|
||||
> | `{{EXTENSION_TYPE}}` | The `type` attribute of the `<extension>` tag in `manifest.xml` (`component`, `module`, `plugin`, or `template`) |
|
||||
> | `{{EXTENSION_ELEMENT}}` | The `<element>` 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
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
|
||||
This file is part of a Moko Consulting project.
|
||||
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# FILE INFORMATION
|
||||
DEFGROUP: {{REPO_NAME}}.Documentation
|
||||
INGROUP: {{REPO_NAME}}
|
||||
REPO: {{REPO_URL}}
|
||||
PATH: /docs/file.md
|
||||
VERSION: XX.YY.ZZ
|
||||
BRIEF: One-line description
|
||||
-->
|
||||
```
|
||||
|
||||
**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 `<version>` tag in `manifest.xml` and the latest entry in `updates.xml`. The `make release` command / release workflow updates all three automatically.
|
||||
|
||||
```xml
|
||||
<!-- In manifest.xml — must match README.md version -->
|
||||
<version>01.02.04</version>
|
||||
|
||||
<!-- In updates.xml — prepend a new <update> block for every release.
|
||||
The version="[56].*" regex matches Joomla 5.x and 6.x. -->
|
||||
<updates>
|
||||
<update>
|
||||
<name>{{EXTENSION_NAME}}</name>
|
||||
<version>01.02.04</version>
|
||||
<downloads>
|
||||
<downloadurl type="full" format="zip">
|
||||
{{REPO_URL}}/releases/download/01.02.04/{{EXTENSION_ELEMENT}}-01.02.04.zip
|
||||
</downloadurl>
|
||||
</downloads>
|
||||
<targetplatform name="joomla" version="[56].*" />
|
||||
</update>
|
||||
<!-- … older entries preserved below … -->
|
||||
</updates>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
<updateservers>
|
||||
<server type="extension" priority="1" name="{{EXTENSION_NAME}}">
|
||||
{{REPO_URL}}/raw/main/updates.xml
|
||||
</server>
|
||||
</updateservers>
|
||||
```
|
||||
|
||||
**Rules:**
|
||||
- Every release must prepend a new `<update>` block at the top of `updates.xml` — old entries must be preserved below.
|
||||
- The `<version>` in `updates.xml` must exactly match `<version>` in `manifest.xml` and the version in `README.md`.
|
||||
- The `<downloadurl>` must be a publicly accessible direct download link (GitHub Releases asset URL).
|
||||
- `<targetplatform name="joomla" version="[56].*">` — 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/`).
|
||||
- `<version>` tag must be kept in sync with `README.md` version and `updates.xml`.
|
||||
- Must include `<updateservers>` block pointing to this repo's `updates.xml`.
|
||||
- Must include `<files folder="site">` and `<administration>` sections.
|
||||
- Joomla 4.x requires `<namespace path="src">Moko\{{EXTENSION_NAME}}</namespace>` 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: `<type>(<scope>): <subject>` — imperative, lower-case subject, no trailing period.
|
||||
|
||||
Valid types: `feat` · `fix` · `docs` · `chore` · `ci` · `refactor` · `style` · `test` · `perf` · `revert` · `build`
|
||||
|
||||
---
|
||||
|
||||
## Branch Naming
|
||||
|
||||
Format: `<prefix>/<MAJOR.MINOR.PATCH>[/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 `<update>` block to `updates.xml`; update CHANGELOG.md; bump README.md version |
|
||||
| New or changed workflow | `docs/workflows/<workflow-name>.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-name>` |
|
||||
> | `{{REPO_DESCRIPTION}}` | First paragraph of `README.md` body, or the GitHub repo description |
|
||||
> | `{{EXTENSION_NAME}}` | The `<name>` element in `manifest.xml` at the repository root |
|
||||
> | `{{EXTENSION_TYPE}}` | The `type` attribute of the `<extension>` tag in `manifest.xml` (`component`, `module`, `plugin`, or `template`) |
|
||||
> | `{{EXTENSION_ELEMENT}}` | The `<element>` 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` | `<version>` tag |
|
||||
| `updates.xml` | `<version>` in the most recent `<update>` 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
|
||||
<!-- In manifest.xml -->
|
||||
<updateservers>
|
||||
<server type="extension" priority="1" name="{{EXTENSION_NAME}}">
|
||||
{{REPO_URL}}/raw/main/updates.xml
|
||||
</server>
|
||||
</updateservers>
|
||||
```
|
||||
|
||||
**Rules:**
|
||||
- Every release prepends a new `<update>` block at the top — older entries are preserved.
|
||||
- `<version>` in `updates.xml` must exactly match `<version>` in `manifest.xml` and `README.md`.
|
||||
- `<downloadurl>` must be a publicly accessible GitHub Releases asset URL.
|
||||
- `<targetplatform version="[56].*">` — 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
|
||||
<updates>
|
||||
<update>
|
||||
<name>{{EXTENSION_NAME}}</name>
|
||||
<description>{{REPO_NAME}}</description>
|
||||
<element>{{EXTENSION_ELEMENT}}</element>
|
||||
<type>{{EXTENSION_TYPE}}</type>
|
||||
<version>01.02.04</version>
|
||||
<infourl title="Release Information">{{REPO_URL}}/releases/tag/01.02.04</infourl>
|
||||
<downloads>
|
||||
<downloadurl type="full" format="zip">
|
||||
{{REPO_URL}}/releases/download/01.02.04/{{EXTENSION_ELEMENT}}-01.02.04.zip
|
||||
</downloadurl>
|
||||
</downloads>
|
||||
<targetplatform name="joomla" version="[56].*" />
|
||||
<php_minimum>7.4</php_minimum>
|
||||
<maintainer>Moko Consulting</maintainer>
|
||||
<maintainerurl>https://mokoconsulting.tech</maintainerurl>
|
||||
</update>
|
||||
</updates>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 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
|
||||
<?php
|
||||
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
*
|
||||
* 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: `<type>(<scope>): <subject>` — imperative, lower-case subject, no trailing period.
|
||||
|
||||
Valid types: `feat` · `fix` · `docs` · `chore` · `ci` · `refactor` · `style` · `test` · `perf` · `revert` · `build`
|
||||
|
||||
## Branch Naming
|
||||
|
||||
Format: `<prefix>/<MAJOR.MINOR.PATCH>[/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 `<update>` to `updates.xml`; update `CHANGELOG.md`; bump `README.md` |
|
||||
| New or changed workflow | `docs/workflows/<workflow-name>.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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
+169
-194
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+103
-118
@@ -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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
+1
-1
@@ -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.
|
||||
+1
-1
@@ -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.
|
||||
@@ -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.
|
||||
@@ -22,7 +22,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
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
|
||||
+1
-1
@@ -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.
|
||||
+1
-1
@@ -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.
|
||||
+1
-1
@@ -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.
|
||||
+1
-1
@@ -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.
|
||||
@@ -1,116 +1,116 @@
|
||||
# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
#
|
||||
# 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 <hello@mokoconsulting.tech>
|
||||
#
|
||||
# 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"
|
||||
|
||||
Reference in New Issue
Block a user