release: v05.00.00 — major version bump, CHANGELOG, Grafana 2-col #5
@@ -3,9 +3,8 @@
|
||||
# FILE INFORMATION
|
||||
# DEFGROUP: Gitea.Workflow
|
||||
# INGROUP: MokoStandards-API.Automation
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
# PATH: /.gitea/workflows/branch-protection.yml
|
||||
# VERSION: 01.00.00
|
||||
# BRIEF: Apply standardised branch protection rules to all governed repositories
|
||||
#
|
||||
# +========================================================================+
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
# FILE INFORMATION
|
||||
# DEFGROUP: Gitea.Workflow
|
||||
# INGROUP: MokoStandards-API.Automation
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
# PATH: /.gitea/workflows/bulk-repo-sync.yml
|
||||
# VERSION: 04.06.12
|
||||
# BRIEF: Bulk repo sync — runs from API repo, syncs standards to all governed repos
|
||||
|
||||
name: Bulk Repository Sync
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
#
|
||||
# FILE INFORMATION
|
||||
# DEFGROUP: MokoStandards.CI
|
||||
# INGROUP: MokoStandards
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
# PATH: /.gitea/workflows/pr-branch-check.yml
|
||||
# BRIEF: PR branch merge policy enforcement
|
||||
#
|
||||
# Enforces branch merge policy:
|
||||
# feature/* → dev only
|
||||
# fix/* → dev only
|
||||
|
||||
@@ -5,9 +5,8 @@
|
||||
# FILE INFORMATION
|
||||
# DEFGROUP: Gitea.Workflow
|
||||
# INGROUP: MokoStandards-API.Automation
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
# PATH: /.gitea/workflows/renovate.yml
|
||||
# VERSION: 01.00.00
|
||||
# BRIEF: Run Renovate Bot across all governed repos for dependency updates
|
||||
#
|
||||
# +========================================================================+
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
# FILE INFORMATION
|
||||
# DEFGROUP: Gitea.Workflow
|
||||
# INGROUP: MokoStandards.Maintenance
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
# PATH: /.gitea/workflows/sync-wikis.yml
|
||||
# VERSION: 01.00.00
|
||||
# BRIEF: Daily sync of all Gitea wikis to consolidated GitHub wiki repo
|
||||
|
||||
name: Sync Wikis to GitHub
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
FILE INFORMATION
|
||||
DEFGROUP: MokoStandards.Root
|
||||
INGROUP: MokoStandards
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
PATH: /CHANGELOG.md
|
||||
BRIEF: Release changelog
|
||||
-->
|
||||
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
Version format: `XX.YY.ZZ` (zero-padded semver).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [05.00.00] - 2026-05-11
|
||||
|
||||
### Added
|
||||
- Centralized MokoWaaS Grafana dashboard for all Joomla sites (2-column layout)
|
||||
- MokoStandards MCP server with 24 governance tools
|
||||
- Wiki health check and GitHub wiki mirror sync
|
||||
- Daily wiki sync workflow — mirrors all Gitea wikis to GitHub
|
||||
- CHANGELOG `[Unreleased]` section check in repo health (5 pts)
|
||||
- Client platform type with detection and structure definition
|
||||
- PHPStan, Gitleaks, and Renovate — templates, workflows, and docs
|
||||
- Cascade and branch protection workflow documentation
|
||||
- Branch protection setup workflow
|
||||
- Client-site definition
|
||||
- Pre-release workflow for manual dev/alpha/beta/rc builds
|
||||
- PR-check, security-audit, notify, cleanup workflow definitions
|
||||
- Expanded workflow suite (10 workflows from MokoOnyx)
|
||||
- `.gitea/workflows` definitions to Joomla structure defs
|
||||
- Joomla workflow templates from MokoOnyx
|
||||
- Cleanup script to remove `.claude/` and `.mcp.json` from repos
|
||||
- Auto-discover all repos with wikis across all orgs
|
||||
- CLAUDE.md to repo health check, flag unwanted files
|
||||
- `.moko-platform` manifest (replaces `.mokostandards`)
|
||||
- PR branch policy check workflow
|
||||
|
||||
### Changed
|
||||
- Major version bump: `04.05.00` → `05.00.00` across all definitions, templates, and wiki
|
||||
- Grafana endpoint dashboards: 2 columns per row (reduced congestion)
|
||||
- Sync engine clones template repos at runtime for workflows
|
||||
- Simplified platform types across definitions and sync engine
|
||||
- Removed `templates/github` — all CI/templates now in `.gitea/`
|
||||
- Removed `templates/workflows` — canonical source is now template repos
|
||||
- Updated mokostandards xmlns to point to MokoStandards-API repo
|
||||
- Comprehensive repo health check updates
|
||||
|
||||
### Fixed
|
||||
- Remove gitea-actions[bot] from push whitelist (not a real user)
|
||||
- Delete-then-create branch protection rules to avoid 422
|
||||
- Patch version bump in pre-release workflow
|
||||
- Always emit `<client>` tag in UpdateXmlGenerator
|
||||
- Rewrite `updates.xml.template` with 5 stability channels
|
||||
- Migrate `.mokostandards` from `.github/` to `.gitea/` on Gitea
|
||||
|
||||
## [04.05.00] - 2026-03-15
|
||||
|
||||
### Added
|
||||
- Dual-platform support (Gitea + GitHub) and Joomla template tooling
|
||||
- Templates, CLI dirs, docs, and Gitea-first platform config
|
||||
- Sync to all branches, listBranches, ext-zip
|
||||
- All templates from MokoStandards
|
||||
|
||||
### Changed
|
||||
- Migrated to Gitea-only workflows and API
|
||||
- Converted all gh CLI calls to Gitea API curl across workflow templates
|
||||
- Gitea-primary tokens: GA_TOKEN for Gitea API, GH_TOKEN for GitHub mirror
|
||||
- Updated all references to MokoConsulting org and Gitea URLs
|
||||
|
||||
### Fixed
|
||||
- Guzzle base_uri resolution for Gitea API paths
|
||||
- Replace all hardcoded GitHub API URLs with platform adapter pattern
|
||||
- Split repoRoot into apiRoot + standardsRoot
|
||||
- Auto-release template: use Gitea API for main sync, auth push URL
|
||||
- Bulk_sync: resolve label names to IDs, fix username
|
||||
- Remove sha256: prefix from update XML templates
|
||||
|
||||
## [04.00.00] - 2026-01-01
|
||||
|
||||
- Initial release: MokoStandards Enterprise API extracted from MokoStandards
|
||||
@@ -1,3 +1,14 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
FILE INFORMATION
|
||||
DEFGROUP: MokoStandards.Root
|
||||
INGROUP: MokoStandards
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
PATH: /PLUGIN_SCRIPTS.md
|
||||
BRIEF: Plugin system CLI documentation
|
||||
-->
|
||||
|
||||
# Plugin System CLI Scripts
|
||||
|
||||
Command-line scripts for validating, health checking, and managing projects using the MokoStandards plugin system.
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
FILE INFORMATION
|
||||
DEFGROUP: MokoStandards.Root
|
||||
INGROUP: MokoStandards
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
PATH: /README.md
|
||||
BRIEF: Project overview and documentation
|
||||
-->
|
||||
|
||||
# MokoStandards Enterprise API
|
||||
|
||||
PHP implementation of MokoStandards — enterprise standards, automation framework, workflow templates, and bulk sync tooling.
|
||||
@@ -17,7 +28,7 @@ PHP implementation of MokoStandards — enterprise standards, automation framewo
|
||||
| `definitions/` | Repository structure definitions (`.tf` format) |
|
||||
| `deploy/` | Deployment scripts (SFTP, Joomla) |
|
||||
| `maintenance/` | Labels, inventory, SHA pinning, version sync |
|
||||
| `docs/` | API documentation, workflow guides, automation docs |
|
||||
| `tools/` | Standalone tools (legal doc generator) |
|
||||
| `tests/` | PHPUnit test suite |
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
FILE INFORMATION
|
||||
DEFGROUP: MokoStandards.Index
|
||||
INGROUP: MokoStandards.Analysis
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
PATH: /analysis/index.md
|
||||
BRIEF: Analysis directory index
|
||||
-->
|
||||
|
||||
# Docs Index: /api/analysis
|
||||
|
||||
## Purpose
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Automation
|
||||
* INGROUP: MokoStandards.Scripts
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /automation/bulk_joomla_template.php
|
||||
* VERSION: 04.06.10
|
||||
* BRIEF: Bulk scaffold and sync Joomla template repositories
|
||||
*
|
||||
* USAGE
|
||||
|
||||
@@ -10,9 +10,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Automation
|
||||
* INGROUP: MokoStandards.Scripts
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /automation/bulk_sync.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Enterprise-grade bulk repository synchronization
|
||||
*/
|
||||
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Automation
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /automation/enrich_mokostandards_xml.php
|
||||
* BRIEF: Enrich XML manifests with repo-specific build and deploy details
|
||||
*
|
||||
* Enrich XML .mokostandards manifests with repo-specific build, deploy, and script details.
|
||||
*
|
||||
* Runs AFTER push_mokostandards_xml.php. Clones each repo, inspects its contents,
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
FILE INFORMATION
|
||||
DEFGROUP: MokoStandards.Index
|
||||
INGROUP: MokoStandards.Automation
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
PATH: /automation/index.md
|
||||
BRIEF: Automation directory index
|
||||
-->
|
||||
|
||||
# Docs Index: /api/automation
|
||||
|
||||
## Purpose
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Automation
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /automation/migrate_to_gitea.php
|
||||
* VERSION: 04.06.10
|
||||
* BRIEF: Migrate repositories from GitHub to self-hosted Gitea instance
|
||||
*
|
||||
* USAGE
|
||||
|
||||
@@ -10,9 +10,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Automation
|
||||
* INGROUP: MokoStandards.Scripts
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /automation/push_files.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Push one or more specific files to one or more remote repositories
|
||||
*/
|
||||
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Automation
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /automation/push_mokostandards_xml.php
|
||||
* BRIEF: Push XML manifests to all governed repositories
|
||||
*
|
||||
* Push XML .mokostandards manifest to all governed repositories.
|
||||
*
|
||||
* Uses git SSH to bypass the Gitea reverse-proxy WAF that blocks
|
||||
|
||||
@@ -10,9 +10,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Automation
|
||||
* INGROUP: MokoStandards.Scripts
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /automation/repo_cleanup.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Enterprise repository cleanup — branches, PRs, issues, workflows, labels, logs
|
||||
*/
|
||||
|
||||
|
||||
@@ -10,9 +10,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://github.com/mokoconsulting-tech/MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /bin/moko
|
||||
* VERSION: 04.00.15
|
||||
* BRIEF: Unified CLI dispatcher — run any MokoStandards script without needing GitHub Actions
|
||||
*
|
||||
* USAGE
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/archive_repo.php
|
||||
* VERSION: 04.06.10
|
||||
* BRIEF: Gracefully retire a governed repository — archive, close issues/PRs, remove sync def
|
||||
*
|
||||
* USAGE
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/create_project.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Create baseline GitHub Projects for repositories with standard fields and views
|
||||
*
|
||||
* USAGE
|
||||
|
||||
+1
-3
@@ -9,9 +9,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/create_repo.php
|
||||
* VERSION: 04.06.10
|
||||
* BRIEF: Scaffold a new governed repository with full MokoStandards baseline
|
||||
*
|
||||
* USAGE
|
||||
@@ -162,7 +161,6 @@ DEFGROUP: {$name}
|
||||
INGROUP: MokoStandards
|
||||
REPO: {$repoUrl}
|
||||
PATH: /README.md
|
||||
VERSION: 01.00.00
|
||||
BRIEF: {$description}
|
||||
-->
|
||||
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/joomla_release.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Joomla release pipeline — build ZIP+tar.gz, upload to GitHub Release, update updates.xml
|
||||
*
|
||||
* USAGE
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/platform_detect.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Detect platform from .mokostandards file — outputs platform string
|
||||
*/
|
||||
|
||||
|
||||
+1
-2
@@ -7,9 +7,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/release.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Automate the MokoStandards version branch release flow
|
||||
*
|
||||
* USAGE
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/release_notes.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Extract release notes from CHANGELOG.md for a given version
|
||||
*/
|
||||
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/sync_rulesets.php
|
||||
* VERSION: 04.06.10
|
||||
* BRIEF: Apply branch protection rules to all repos via platform adapter
|
||||
*
|
||||
* USAGE
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/version_bump.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Auto-increment patch version in README.md — outputs old → new
|
||||
*/
|
||||
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/version_read.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Read VERSION from README.md — outputs just the version string
|
||||
*/
|
||||
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.CLI
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /cli/version_set_platform.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Set version in platform-specific files (Dolibarr $this->version, Joomla <version>)
|
||||
*/
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
"name": "mokoconsulting-tech/enterprise",
|
||||
"description": "MokoStandards Enterprise API \u2014 PHP implementation",
|
||||
"type": "library",
|
||||
"version": "04.05.00",
|
||||
"version": "05.00.00",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"authors": [
|
||||
{
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 01.00.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -17,7 +16,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,6 @@
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -17,7 +16,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*
|
||||
* NOTES
|
||||
@@ -28,7 +27,7 @@ locals {
|
||||
platform = "github-private"
|
||||
last_updated = "2026-03-12T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
visibility = "private"
|
||||
sync_priority = -1
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -17,7 +16,7 @@ locals {
|
||||
platform = "mokowaas"
|
||||
last_updated = "2026-01-15T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.06.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -21,7 +20,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-03-31T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -17,7 +16,7 @@ locals {
|
||||
platform = "standards"
|
||||
last_updated = "2026-03-03T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
FILE INFORMATION
|
||||
DEFGROUP: MokoStandards.Index
|
||||
INGROUP: MokoStandards.Definitions
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
PATH: /definitions/index.md
|
||||
BRIEF: Definitions directory index
|
||||
-->
|
||||
|
||||
# Docs Index: /api/definitions
|
||||
|
||||
## Purpose
|
||||
|
||||
@@ -83,7 +83,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -96,7 +95,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -111,7 +110,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -102,7 +101,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -104,7 +103,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -99,7 +98,7 @@ locals {
|
||||
platform = "mokowaas"
|
||||
last_updated = "2026-01-15T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -116,7 +115,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-03-31T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +81,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -94,7 +93,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -116,7 +115,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-03-31T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -98,7 +97,7 @@ locals {
|
||||
platform = "mokowaas"
|
||||
last_updated = "2026-01-15T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -98,7 +97,7 @@ locals {
|
||||
platform = "mokowaas"
|
||||
last_updated = "2026-01-15T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -103,7 +102,7 @@ locals {
|
||||
platform = "dolibarr"
|
||||
last_updated = "2026-01-07T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -99,7 +98,7 @@ locals {
|
||||
platform = "mokowaas"
|
||||
last_updated = "2026-01-15T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -99,7 +98,7 @@ locals {
|
||||
platform = "mokowaas"
|
||||
last_updated = "2026-01-15T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -89,7 +88,7 @@ locals {
|
||||
platform = "mokowaas"
|
||||
last_updated = "2026-01-15T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -125,7 +124,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -112,7 +111,7 @@ locals {
|
||||
platform = "multi-platform"
|
||||
last_updated = "2026-01-16T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,6 @@ locals {
|
||||
*
|
||||
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Version: 04.05.00
|
||||
* Schema Version: 1.0
|
||||
*/
|
||||
|
||||
@@ -99,7 +98,7 @@ locals {
|
||||
platform = "mokowaas"
|
||||
last_updated = "2026-01-15T00:00:00Z"
|
||||
maintainer = "Moko Consulting"
|
||||
version = "04.05.00"
|
||||
version = "05.00.00"
|
||||
schema_version = "1.0"
|
||||
}
|
||||
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Scripts.Deploy
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /deploy/deploy-joomla.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Smart Joomla deploy — routes files to correct Joomla directories based on XML manifest
|
||||
*
|
||||
* Parses the extension's XML manifest to determine type (component, module,
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
* FILE INFORMATION
|
||||
* DEFGROUP: MokoStandards.Scripts.Deploy
|
||||
* INGROUP: MokoStandards
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
||||
* PATH: /deploy/deploy-sftp.php
|
||||
* VERSION: 04.06.00
|
||||
* BRIEF: Deploy a repository src/ directory to a remote web server via SFTP
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,362 +0,0 @@
|
||||
# MokoStandards Scripts Architecture
|
||||
|
||||
**Version**: 2.0
|
||||
**Last Updated**: 2026-01-19
|
||||
**Status**: Comprehensive rebuild in progress
|
||||
|
||||
## Overview
|
||||
|
||||
This document defines the top-down architecture for all MokoStandards scripts and workflows.
|
||||
|
||||
## Design Principles
|
||||
|
||||
1. **Separation of Concerns**: Each module has a single, well-defined responsibility
|
||||
2. **Type Safety**: Full type hints on all public interfaces
|
||||
3. **Error Handling**: Comprehensive error messages with actionable guidance
|
||||
4. **Documentation**: Docstrings following Google style guide
|
||||
5. **Testability**: All modules designed for unit testing with clear interfaces
|
||||
6. **Logging**: Structured logging with consistent levels and formats
|
||||
7. **Configuration**: Centralized configuration management
|
||||
8. **Dependencies**: Minimal external dependencies, clear dependency tree
|
||||
|
||||
## Module Hierarchy
|
||||
|
||||
```
|
||||
scripts/
|
||||
├── lib/ # Core libraries (no external script dependencies)
|
||||
│ ├── common.py # Foundation: constants, utilities, decorators
|
||||
│ ├── validation_framework.py # Base classes for validators
|
||||
│ ├── config_manager.py # Configuration handling
|
||||
│ ├── github_client.py # GitHub API wrapper
|
||||
│ ├── audit_logger.py # Structured logging
|
||||
│ ├── extension_utils.py # Extension/package utilities
|
||||
│ ├── joomla_manifest.py # Joomla-specific manifest handling
|
||||
│ └── gui_utils.py # GUI utilities (optional)
|
||||
│
|
||||
├── validate/ # Validation scripts (depend on lib/)
|
||||
│ ├── auto_detect_platform.php # Platform detection (core)
|
||||
│ ├── validate_structure_v2.py # Structure validation
|
||||
│ ├── validate_repo_health.py # Repository health
|
||||
│ ├── schema_aware_health_check.py # Schema-based validation
|
||||
│ ├── check_repo_health.py # Health checker
|
||||
│ ├── validate_codeql_config.py # CodeQL validation
|
||||
│ ├── manifest.py # Manifest validation
|
||||
│ ├── workflows.py # Workflow validation
|
||||
│ ├── php_syntax.py # PHP syntax checking
|
||||
│ ├── xml_wellformed.py # XML validation
|
||||
│ ├── no_secrets.py # Secret detection
|
||||
│ ├── tabs.py # Tab/whitespace checking
|
||||
│ ├── paths.py # Path validation
|
||||
│ └── generate_stubs.py # Stub generation
|
||||
│
|
||||
├── automation/ # Automation scripts (depend on lib/, validate/)
|
||||
│ ├── bulk_update_repos.php (v2) # Bulk repository sync
|
||||
│ ├── auto_create_org_projects.py # Organization project automation
|
||||
│ ├── sync_dolibarr_changelog.py # Dolibarr changelog sync
|
||||
│ ├── sync_file_to_project.py # File sync to projects
|
||||
│ ├── create_repo_project.py # Repository project creation
|
||||
│ └── file-distributor.py # File distribution
|
||||
│
|
||||
├── release/ # Release management (depend on lib/, validate/)
|
||||
│ ├── detect_platform.py # Platform detection for releases
|
||||
│ ├── package_extension.py # Extension packaging
|
||||
│ └── dolibarr_release.py # Dolibarr release management
|
||||
│
|
||||
├── maintenance/ # Maintenance scripts (depend on lib/)
|
||||
│ ├── release_version.py # Version management
|
||||
│ ├── update_changelog.py # Changelog updates
|
||||
│ ├── validate_file_headers.py # Header validation
|
||||
│ └── flush_actions_cache.py # GitHub Actions cache management
|
||||
│
|
||||
├── analysis/ # Analysis tools (depend on lib/)
|
||||
│ ├── analyze_pr_conflicts.py # PR conflict analysis
|
||||
│ └── generate_canonical_config.py # Canonical configuration
|
||||
│
|
||||
├── build/ # Build scripts (depend on lib/)
|
||||
│ └── resolve_makefile.py # Makefile resolution
|
||||
│
|
||||
├── docs/ # Documentation generation (depend on lib/)
|
||||
│ └── rebuild_indexes.py # Index rebuilding
|
||||
│
|
||||
├── run/ # Runtime scripts (depend on lib/, automation/)
|
||||
│ └── setup_github_project_v2.py # GitHub Project v2 setup
|
||||
│
|
||||
└── tests/ # Test scripts
|
||||
├── test_bulk_update_repos.php # Bulk update tests
|
||||
└── test_dry_run.py # Dry run tests
|
||||
```
|
||||
|
||||
## Core Library Modules (`lib/`)
|
||||
|
||||
### common.py
|
||||
**Purpose**: Foundation module with core utilities
|
||||
**Exports**:
|
||||
- Constants (VERSION dynamically read from README.md, REPO_URL, EXIT codes)
|
||||
- File header generation
|
||||
- Logging utilities
|
||||
- Error handling decorators
|
||||
- Path utilities
|
||||
- Version extraction from README.md title line
|
||||
|
||||
### validation_framework.py
|
||||
**Purpose**: Base classes and interfaces for validation
|
||||
**Exports**:
|
||||
- `Validator` base class
|
||||
- `ValidationResult` data class
|
||||
- `ValidationRule` interface
|
||||
- Common validation patterns
|
||||
|
||||
### config_manager.py
|
||||
**Purpose**: Centralized configuration management
|
||||
**Exports**:
|
||||
- `ConfigManager` class
|
||||
- Configuration schema validation
|
||||
- Environment variable handling
|
||||
- Default configuration
|
||||
|
||||
### github_client.py
|
||||
**Purpose**: GitHub API wrapper with authentication
|
||||
**Exports**:
|
||||
- `GitHubClient` class
|
||||
- API request handling with retries
|
||||
- Rate limit management
|
||||
- Common GitHub operations
|
||||
|
||||
### audit_logger.py
|
||||
**Purpose**: Structured logging framework
|
||||
**Exports**:
|
||||
- `AuditLogger` class
|
||||
- Log level management
|
||||
- Structured log formatting
|
||||
- Log file handling
|
||||
|
||||
## Validation Modules (`validate/`)
|
||||
|
||||
All validation modules follow the pattern:
|
||||
1. Import from `lib/`
|
||||
2. Define validation rules
|
||||
3. Implement `Validator` interface
|
||||
4. Return `ValidationResult` objects
|
||||
5. Provide CLI interface
|
||||
|
||||
### auto_detect_platform.php
|
||||
**Critical Module**: Platform detection for all automation
|
||||
**Dependencies**: `lib/common`, `lib/validation_framework`
|
||||
**Exports**: `detect_platform()`, `PlatformType` enum
|
||||
|
||||
## Automation Modules (`automation/`)
|
||||
|
||||
### bulk_update_repos.php (v2)
|
||||
**Status**: ✅ Rebuilt (2026-01-19)
|
||||
**Purpose**: Schema-driven bulk repository synchronization
|
||||
**Dependencies**: `lib/`, `validate/auto_detect_platform`
|
||||
|
||||
### auto_create_org_projects.py
|
||||
**Purpose**: Automated organization project creation
|
||||
**Dependencies**: `lib/github_client`, `lib/config_manager`
|
||||
|
||||
## Workflows (`.github/workflows/`)
|
||||
|
||||
### Reusable Workflows
|
||||
All reusable workflows follow the pattern:
|
||||
1. Clear input parameters with descriptions
|
||||
2. Minimal dependencies
|
||||
3. Comprehensive error handling
|
||||
4. Status reporting
|
||||
|
||||
### Workflow Categories
|
||||
1. **CI/CD**: Build, test, deploy workflows
|
||||
2. **Quality**: Code quality, linting, validation
|
||||
3. **Automation**: Bulk updates, project management
|
||||
4. **Security**: Secret scanning, CodeQL, confidentiality
|
||||
5. **Maintenance**: Cache management, changelog updates
|
||||
|
||||
## Coding Standards
|
||||
|
||||
### Python
|
||||
- **Style**: PEP 8 compliant
|
||||
- **Type Hints**: Required for all public functions
|
||||
- **Docstrings**: Google style, required for all public functions
|
||||
- **Error Handling**: Use specific exception types
|
||||
- **Logging**: Use `audit_logger` for all logging
|
||||
- **Testing**: Unit tests for all public functions
|
||||
|
||||
### YAML (Workflows)
|
||||
- **Naming**: `kebab-case` for file names
|
||||
- **Indentation**: 2 spaces
|
||||
- **Comments**: Document all non-obvious steps
|
||||
- **Secrets**: Use repository/organization secrets, never hardcode
|
||||
- **Permissions**: Minimal required permissions only
|
||||
|
||||
## File Header Standard
|
||||
|
||||
All files must include:
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
# 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
|
||||
#
|
||||
# [License text...]
|
||||
#
|
||||
# FILE INFORMATION
|
||||
# DEFGROUP: [Group]
|
||||
# INGROUP: [Parent Group]
|
||||
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards-API
|
||||
# PATH: [Relative path from repo root]
|
||||
# VERSION: [X.Y.Z] # Version is dynamically read from README.md title line
|
||||
# BRIEF: [One-line description]
|
||||
```
|
||||
|
||||
**Note**: The VERSION constant in `common.py` and `MOKO_VERSION` in `common.sh` are now dynamically extracted from the README.md title line, which follows the format:
|
||||
```markdown
|
||||
# README - MokoStandards (VERSION: XX.YY.ZZ)
|
||||
```
|
||||
This ensures a single source of truth for the repository version.
|
||||
|
||||
## Error Handling Strategy
|
||||
|
||||
### Exit Codes
|
||||
- `0`: Success
|
||||
- `1`: General error
|
||||
- `2`: Invalid arguments
|
||||
- `3`: File/resource not found
|
||||
- `4`: Permission error
|
||||
- `5`: Validation failed
|
||||
- `6`: External dependency error
|
||||
|
||||
### Error Messages
|
||||
Format: `[LEVEL] Component: Message (Context)`
|
||||
- **ERROR**: Unrecoverable errors
|
||||
- **WARNING**: Non-fatal issues
|
||||
- **INFO**: Informational messages
|
||||
- **DEBUG**: Detailed diagnostic information
|
||||
|
||||
## Testing Strategy
|
||||
|
||||
### Unit Tests
|
||||
- Located in `scripts/tests/`
|
||||
- Use `pytest` framework
|
||||
- Mock external dependencies
|
||||
- 80%+ code coverage target
|
||||
|
||||
### Integration Tests
|
||||
- Test workflows end-to-end
|
||||
- Use test repositories
|
||||
- Validate against schemas
|
||||
|
||||
### Validation Tests
|
||||
- All validators must have test cases
|
||||
- Test both valid and invalid inputs
|
||||
- Test edge cases
|
||||
|
||||
## Configuration Management
|
||||
|
||||
### Configuration Hierarchy
|
||||
1. Command-line arguments (highest priority)
|
||||
2. Environment variables
|
||||
3. Configuration files (`MokoStandards.override.xml`)
|
||||
4. Default values (lowest priority)
|
||||
|
||||
### Configuration Schema
|
||||
Validated against `schemas/unified-repository-schema.json`
|
||||
|
||||
## Logging Strategy
|
||||
|
||||
### Log Levels
|
||||
- **DEBUG**: Detailed diagnostic for development
|
||||
- **INFO**: General informational messages
|
||||
- **WARNING**: Warning messages, recoverable issues
|
||||
- **ERROR**: Error messages, unrecoverable issues
|
||||
- **CRITICAL**: Critical failures requiring immediate attention
|
||||
|
||||
### Log Format
|
||||
```
|
||||
[TIMESTAMP] [LEVEL] [COMPONENT] Message (context_key=value)
|
||||
```
|
||||
|
||||
## Dependency Management
|
||||
|
||||
### Python Dependencies
|
||||
Minimal external dependencies:
|
||||
- **Required**: None (stdlib only for core modules)
|
||||
- **Optional**:
|
||||
- `requests` for GitHub API (fallback to `subprocess` + `gh` CLI)
|
||||
- `PyYAML` for YAML parsing (fallback to `json`)
|
||||
- `pytest` for testing (dev only)
|
||||
|
||||
### Dependency Installation
|
||||
```bash
|
||||
pip install -r requirements.txt # Production
|
||||
pip install -r requirements-dev.txt # Development
|
||||
```
|
||||
|
||||
## Migration Guide
|
||||
|
||||
### From v1 to v2
|
||||
1. Update imports to use `lib/` modules
|
||||
2. Replace ad-hoc validation with `validation_framework`
|
||||
3. Use `ConfigManager` instead of manual config parsing
|
||||
4. Replace print statements with `audit_logger`
|
||||
5. Add type hints to all functions
|
||||
6. Add docstrings to all public functions
|
||||
|
||||
## Performance Considerations
|
||||
|
||||
### Caching
|
||||
- Platform detection results
|
||||
- GitHub API responses (with expiry)
|
||||
- Validation results for unchanged files
|
||||
|
||||
### Parallelization
|
||||
- Repository operations can run in parallel
|
||||
- Use `concurrent.futures` for I/O-bound tasks
|
||||
- Respect GitHub API rate limits
|
||||
|
||||
## Security Considerations
|
||||
|
||||
1. **No Hardcoded Secrets**: Use GitHub secrets
|
||||
2. **Input Validation**: Validate all user inputs
|
||||
3. **Path Traversal Prevention**: Validate all file paths
|
||||
4. **Command Injection Prevention**: Use `subprocess` safely
|
||||
5. **Least Privilege**: Minimal permissions in workflows
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Version Numbering
|
||||
- Major: Breaking changes (expected in v2 rebuild)
|
||||
- Minor: New features
|
||||
- Patch: Bug fixes
|
||||
|
||||
### Changelog
|
||||
All changes documented in `CHANGELOG.md` following Keep a Changelog format.
|
||||
|
||||
### Review Process
|
||||
1. All changes require pull request
|
||||
2. Automated validation must pass
|
||||
3. Manual review required
|
||||
4. Tests must pass
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
1. **Plugin System**: Allow custom validators
|
||||
2. **Web Dashboard**: UI for health monitoring
|
||||
3. **Metrics Collection**: Track validation trends
|
||||
4. **AI Integration**: Automated issue detection
|
||||
5. **Multi-language Support**: Beyond Python
|
||||
|
||||
## References
|
||||
|
||||
- [PEP 8 Style Guide](https://pep8.org/)
|
||||
- [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html)
|
||||
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
|
||||
- [Keep a Changelog](https://keepachangelog.com/)
|
||||
- [Semantic Versioning](https://semver.org/)
|
||||
|
||||
---
|
||||
|
||||
**Maintained by**: Moko Consulting
|
||||
**Questions**: hello@mokoconsulting.tech
|
||||
**Repository**: https://github.com/MokoConsulting/MokoStandards
|
||||
@@ -1,383 +0,0 @@
|
||||
# Auto-Create Organization Projects
|
||||
|
||||
## Overview
|
||||
|
||||
The `auto_create_org_projects.py` script automatically creates smart GitHub Projects for every repository in the mokoconsulting-tech organization. It intelligently detects project types (Joomla, Dolibarr, or Generic) and creates appropriate project structures with customized fields and views.
|
||||
|
||||
## Features
|
||||
|
||||
- **Automatic Project Type Detection**: Detects Joomla, Dolibarr, or generic projects
|
||||
- **Smart Project Creation**: Creates projects with type-specific custom fields and views
|
||||
- **Roadmap Generation**: Automatically generates roadmaps for repos that don't have one
|
||||
- **Roadmap Push**: Pushes generated roadmaps directly to repository docs/ROADMAP.md
|
||||
- **MokoStandards Integration**: Respects existing Project #7 for MokoStandards
|
||||
- **Dry Run Mode**: Test without making actual changes
|
||||
- **Verbose Logging**: Detailed output for debugging
|
||||
|
||||
## Requirements
|
||||
|
||||
### Authentication
|
||||
|
||||
One of the following authentication methods:
|
||||
|
||||
1. **GitHub Token** (Recommended for automation):
|
||||
```bash
|
||||
export GH_PAT="your_personal_access_token"
|
||||
```
|
||||
|
||||
2. **GitHub CLI**:
|
||||
```bash
|
||||
gh auth login
|
||||
```
|
||||
|
||||
### Token Permissions
|
||||
|
||||
The token needs the following scopes:
|
||||
- `repo` - Full repository access
|
||||
- `project` - Project read/write access
|
||||
- `read:org` - Organization read access
|
||||
|
||||
### Python Dependencies
|
||||
|
||||
```bash
|
||||
pip3 install requests
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Usage
|
||||
|
||||
```bash
|
||||
# Dry run first to see what would happen
|
||||
python3 scripts/auto_create_org_projects.py --dry-run
|
||||
|
||||
# Actually create projects and roadmaps
|
||||
export GH_PAT="your_token"
|
||||
python3 scripts/auto_create_org_projects.py
|
||||
```
|
||||
|
||||
### With Verbose Logging
|
||||
|
||||
```bash
|
||||
python3 scripts/auto_create_org_projects.py --verbose
|
||||
```
|
||||
|
||||
### For a Different Organization
|
||||
|
||||
```bash
|
||||
python3 scripts/auto_create_org_projects.py --org your-org-name
|
||||
```
|
||||
|
||||
### Combined Options
|
||||
|
||||
```bash
|
||||
python3 scripts/auto_create_org_projects.py --dry-run --verbose --org MokoConsulting
|
||||
```
|
||||
|
||||
## What It Does
|
||||
|
||||
### 1. Repository Discovery
|
||||
|
||||
- Fetches all repositories in the organization
|
||||
- Filters out archived repositories
|
||||
- Skips MokoStandards (Project #7 already exists)
|
||||
|
||||
### 2. Project Type Detection
|
||||
|
||||
Automatically detects project type based on repository contents:
|
||||
|
||||
**Joomla Projects:**
|
||||
- Presence of `.xml` manifest files
|
||||
- Joomla-specific directory structure (`administrator/`, `components/`, etc.)
|
||||
- Manifest content contains "joomla" keywords
|
||||
|
||||
**Dolibarr Projects:**
|
||||
- Module descriptor files (`mod*.class.php`)
|
||||
- Dolibarr directory structure (`htdocs/`, `core/modules/`)
|
||||
- Class files in standard Dolibarr structure
|
||||
|
||||
**Generic Projects:**
|
||||
- Any repository not matching Joomla or Dolibarr patterns
|
||||
- Default fallback type
|
||||
|
||||
### 3. Roadmap Management
|
||||
|
||||
For each repository:
|
||||
|
||||
1. **Check for Existing Roadmap**: Looks for `docs/ROADMAP.md`
|
||||
2. **Generate if Missing**: Creates type-specific roadmap with:
|
||||
- Version-based milestone structure
|
||||
- Appropriate deliverables for project type
|
||||
- Metadata and revision history
|
||||
3. **Push to Repository**: Commits roadmap directly to default branch
|
||||
|
||||
#### Roadmap Structure
|
||||
|
||||
**Joomla Projects:**
|
||||
- Joomla version compatibility tracking
|
||||
- Extension-specific milestones
|
||||
- Marketplace considerations
|
||||
|
||||
**Dolibarr Projects:**
|
||||
- Dolibarr version compatibility
|
||||
- Module number and descriptor tracking
|
||||
- Database migration planning
|
||||
|
||||
**Generic Projects:**
|
||||
- Standard version milestones
|
||||
- Core functionality tracking
|
||||
- General development phases
|
||||
|
||||
### 4. Project Creation
|
||||
|
||||
Creates GitHub Project v2 with:
|
||||
|
||||
**Common Fields (All Types):**
|
||||
- Status (Backlog, Todo, In Progress, etc.)
|
||||
- Priority (Critical, High, Medium, Low)
|
||||
- Size/Effort (XS, S, M, L, XL, XXL)
|
||||
- Sprint
|
||||
- Target Version
|
||||
- Blocked Reason
|
||||
- Acceptance Criteria
|
||||
|
||||
**Joomla-Specific Fields:**
|
||||
- Joomla Version
|
||||
- Extension Type
|
||||
- Marketplace Status
|
||||
- Update Server URL
|
||||
- PHP Minimum Version
|
||||
- Installation Type
|
||||
|
||||
**Dolibarr-Specific Fields:**
|
||||
- Dolibarr Version
|
||||
- Module Number
|
||||
- Database Changes
|
||||
- Module Descriptor Path
|
||||
- Module Version
|
||||
- Requires Sudo
|
||||
|
||||
**Generic Fields:**
|
||||
- Technology Stack
|
||||
- Environment
|
||||
- Release Channel
|
||||
- API Version
|
||||
- Deployment Status
|
||||
|
||||
### 5. Project Views
|
||||
|
||||
Creates standard views for each project:
|
||||
|
||||
1. **Master Backlog** (Table) - All items by priority
|
||||
2. **Sprint Board** (Board) - Kanban view by status
|
||||
3. **Release Roadmap** (Roadmap) - Timeline by version
|
||||
4. **Blocked Items** (Table) - Items needing attention
|
||||
|
||||
Plus type-specific views:
|
||||
- **Joomla**: Extension Compatibility Matrix, Marketplace Pipeline
|
||||
- **Dolibarr**: Module Compatibility Matrix, Database Migration Tracker
|
||||
- **Generic**: Deployment Pipeline, Technology Stack View
|
||||
|
||||
## Example Output
|
||||
|
||||
```
|
||||
==============================================================================
|
||||
Auto-Create Smart Projects for Organization Repositories
|
||||
==============================================================================
|
||||
|
||||
🔍 Fetching repositories from mokoconsulting-tech...
|
||||
✅ Found 15 total repositories (12 active)
|
||||
|
||||
==============================================================================
|
||||
Processing: MokoDoliTools
|
||||
==============================================================================
|
||||
📦 Detected type: dolibarr
|
||||
⚠️ No roadmap found, creating one...
|
||||
📋 Creating/updating roadmap for MokoDoliTools...
|
||||
✅ Roadmap created/updated for MokoDoliTools
|
||||
|
||||
📁 Creating project for MokoDoliTools (dolibarr)...
|
||||
✅ Project creation queued for MokoDoliTools
|
||||
|
||||
==============================================================================
|
||||
Processing: MokoJoomlaExtension
|
||||
==============================================================================
|
||||
📦 Detected type: joomla
|
||||
✅ Roadmap already exists
|
||||
|
||||
📁 Creating project for MokoJoomlaExtension (joomla)...
|
||||
✅ Project creation queued for MokoJoomlaExtension
|
||||
|
||||
==============================================================================
|
||||
SUMMARY REPORT
|
||||
==============================================================================
|
||||
|
||||
📊 Organization: mokoconsulting-tech
|
||||
✅ Projects Created: 12
|
||||
📋 Roadmaps Created: 8
|
||||
⏭️ Repositories Skipped: 1
|
||||
|
||||
✅ Created Projects:
|
||||
- MokoDoliTools
|
||||
- MokoJoomlaExtension
|
||||
...
|
||||
|
||||
📋 Created Roadmaps:
|
||||
- MokoDoliTools
|
||||
- MokoGenericProject
|
||||
...
|
||||
|
||||
⏭️ Skipped Repositories:
|
||||
- MokoStandards (existing)
|
||||
|
||||
==============================================================================
|
||||
|
||||
✅ Processing complete!
|
||||
```
|
||||
|
||||
## Integration with Existing Infrastructure
|
||||
|
||||
### Leverages Existing Templates
|
||||
|
||||
The script uses the project configuration templates from:
|
||||
- `templates/projects/joomla-project-config.json`
|
||||
- `templates/projects/dolibarr-project-config.json`
|
||||
- `templates/projects/generic-project-config.json`
|
||||
|
||||
### Respects MokoStandards Project #7
|
||||
|
||||
The script explicitly skips MokoStandards repository since it already has Project #7 configured and operational.
|
||||
|
||||
### Uses GitHub GraphQL API
|
||||
|
||||
Leverages the same GraphQL API patterns as `setup_github_project_v2.py` for consistency.
|
||||
|
||||
## Dry Run Mode
|
||||
|
||||
Always test with `--dry-run` first:
|
||||
|
||||
```bash
|
||||
python3 scripts/auto_create_org_projects.py --dry-run --verbose
|
||||
```
|
||||
|
||||
This will show you:
|
||||
- Which repositories would be processed
|
||||
- What project types would be detected
|
||||
- Which roadmaps would be created
|
||||
- What projects would be created
|
||||
|
||||
No actual changes are made in dry run mode.
|
||||
|
||||
## Error Handling
|
||||
|
||||
The script handles errors gracefully:
|
||||
|
||||
- **Authentication Failures**: Clear messages about token requirements
|
||||
- **API Errors**: Captured and reported at the end
|
||||
- **Missing Configs**: Falls back to generic template
|
||||
- **Repository Access Issues**: Skips and continues
|
||||
|
||||
All errors are collected and displayed in the summary report.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "requests library required"
|
||||
|
||||
```bash
|
||||
pip3 install requests
|
||||
```
|
||||
|
||||
### "GitHub token required"
|
||||
|
||||
```bash
|
||||
export GH_PAT="your_token"
|
||||
# OR
|
||||
gh auth login
|
||||
```
|
||||
|
||||
### "Permission denied"
|
||||
|
||||
Ensure your token has:
|
||||
- `repo` scope
|
||||
- `project` scope
|
||||
- `read:org` scope
|
||||
|
||||
### "Failed to detect project type"
|
||||
|
||||
The script will fall back to "generic" type. You can manually adjust the project after creation.
|
||||
|
||||
### "Roadmap creation failed"
|
||||
|
||||
Check that:
|
||||
- Token has write access to repository
|
||||
- Default branch name is correct
|
||||
- `docs/` directory exists or can be created
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Always Dry Run First**: Test with `--dry-run` before making changes
|
||||
2. **Use Verbose Mode**: Easier to debug with `--verbose`
|
||||
3. **Check Token Permissions**: Ensure token has all required scopes
|
||||
4. **Review Generated Roadmaps**: Customize roadmaps after automatic generation
|
||||
5. **Monitor API Rate Limits**: Script may hit rate limits with many repos
|
||||
|
||||
## Next Steps After Running
|
||||
|
||||
After the script completes:
|
||||
|
||||
1. **Review Projects**: Check created projects in GitHub UI
|
||||
2. **Customize Roadmaps**: Edit generated roadmaps for specific needs
|
||||
3. **Configure Automations**: Set up GitHub Actions for project automation
|
||||
4. **Add Initial Items**: Populate projects with issues and tasks
|
||||
5. **Share with Team**: Notify team members about new project structure
|
||||
|
||||
## Integration with CI/CD
|
||||
|
||||
You can run this script in GitHub Actions:
|
||||
|
||||
```yaml
|
||||
name: Auto-Create Projects
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * 0' # Weekly
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
create-projects:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- name: Install dependencies
|
||||
run: pip install requests
|
||||
- name: Create projects
|
||||
env:
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
run: python3 scripts/auto_create_org_projects.py --verbose
|
||||
```
|
||||
|
||||
## See Also
|
||||
|
||||
- [setup_github_project_v2.py](./run/setup_github_project_v2.py) - Single project setup
|
||||
- [sync_file_to_project.py](./automation/sync_file_to_project.py) - Sync documentation files to Project #7
|
||||
- [templates/projects/README.md](../templates/projects/README.md) - Project templates documentation
|
||||
- [bulk_update_repos.php](./bulk_update_repos.php) - Bulk repository updates
|
||||
|
||||
## Support
|
||||
|
||||
For issues or questions:
|
||||
1. Check this documentation
|
||||
2. Run with `--dry-run --verbose` for debugging
|
||||
3. Review error messages in summary report
|
||||
4. Open issue in MokoStandards repository
|
||||
5. Contact development team
|
||||
|
||||
## Version History
|
||||
|
||||
| Version | Date | Changes |
|
||||
| -------- | ---------- | ------------------------------------------------ |
|
||||
| 01.00.00 | 2026-01-12 | Initial release with auto-detection and roadmap generation |
|
||||
@@ -1,98 +0,0 @@
|
||||
|
||||
# Standard Dry-Run Pattern for MokoStandards Scripts
|
||||
|
||||
## 1. Add --dry-run argument to argparse
|
||||
|
||||
```python
|
||||
parser.add_argument(
|
||||
'--dry-run',
|
||||
action='store_true',
|
||||
help='Show what would be done without making changes'
|
||||
)
|
||||
```
|
||||
|
||||
## 2. Store in args and use throughout script
|
||||
|
||||
```python
|
||||
args = parser.parse_args()
|
||||
dry_run = args.dry_run
|
||||
|
||||
if dry_run:
|
||||
print("[DRY-RUN] Mode enabled - no changes will be made")
|
||||
```
|
||||
|
||||
## 3. Add dry-run checks before write operations
|
||||
|
||||
```python
|
||||
if dry_run:
|
||||
print(f"[DRY-RUN] Would create file: {filepath}")
|
||||
else:
|
||||
with open(filepath, 'w') as f:
|
||||
f.write(content)
|
||||
print(f"Created file: {filepath}")
|
||||
```
|
||||
|
||||
## 4. Pattern for file operations
|
||||
|
||||
```python
|
||||
def write_file(path, content, dry_run=False):
|
||||
if dry_run:
|
||||
print(f"[DRY-RUN] Would write to: {path}")
|
||||
print(f"[DRY-RUN] Content length: {len(content)} bytes")
|
||||
return
|
||||
|
||||
with open(path, 'w') as f:
|
||||
f.write(content)
|
||||
print(f"Wrote to: {path}")
|
||||
```
|
||||
|
||||
## 5. Pattern for API calls
|
||||
|
||||
```python
|
||||
def update_repository(repo, data, dry_run=False):
|
||||
if dry_run:
|
||||
print(f"[DRY-RUN] Would update repository: {repo}")
|
||||
print(f"[DRY-RUN] Data: {data}")
|
||||
return None
|
||||
|
||||
response = api.update(repo, data)
|
||||
print(f"Updated repository: {repo}")
|
||||
return response
|
||||
```
|
||||
|
||||
## 6. Pattern for shell commands
|
||||
|
||||
```python
|
||||
import subprocess
|
||||
|
||||
def run_command(cmd, dry_run=False):
|
||||
if dry_run:
|
||||
print(f"[DRY-RUN] Would execute: {cmd}")
|
||||
return 0
|
||||
|
||||
result = subprocess.run(cmd, shell=True)
|
||||
return result.returncode
|
||||
```
|
||||
|
||||
## 7. Summary reporting
|
||||
|
||||
```python
|
||||
def main():
|
||||
# ... script logic ...
|
||||
|
||||
if dry_run:
|
||||
print()
|
||||
print("=" * 60)
|
||||
print("[DRY-RUN] Summary:")
|
||||
print(f" Files that would be modified: {modified_count}")
|
||||
print(f" Files that would be created: {created_count}")
|
||||
print(f" API calls that would be made: {api_call_count}")
|
||||
print("=" * 60)
|
||||
else:
|
||||
print()
|
||||
print("Summary:")
|
||||
print(f" Files modified: {modified_count}")
|
||||
print(f" Files created: {created_count}")
|
||||
print(f" API calls made: {api_call_count}")
|
||||
```
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
# Legal Document Generator - Web Interface
|
||||
|
||||
## Overview
|
||||
|
||||
The Legal Document Generator Web Interface provides a browser-based UI for creating Terms of Service and Privacy Policy documents. Users can configure all options through an intuitive form and preview the generated HTML directly in their browser.
|
||||
|
||||
## Features
|
||||
|
||||
- **Interactive Web Interface**: Modern, responsive web UI
|
||||
- **Real-time Preview**: See generated documents instantly in the browser
|
||||
- **Download Capability**: Download generated HTML files directly
|
||||
- **Three Website Types**: Support for membership, plain, and ecommerce websites
|
||||
- **Customizable Options**: Company name, website URL, contact email
|
||||
- **Professional Styling**: Generated documents include responsive CSS
|
||||
|
||||
## Installation
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Python 3.7 or higher
|
||||
- Flask web framework
|
||||
|
||||
### Install Dependencies
|
||||
|
||||
```bash
|
||||
pip install flask
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Starting the Web Server
|
||||
|
||||
Basic usage (runs on http://127.0.0.1:5000):
|
||||
```bash
|
||||
python scripts/legal_doc_generator_web.py
|
||||
```
|
||||
|
||||
Custom port:
|
||||
```bash
|
||||
python scripts/legal_doc_generator_web.py --port 8080
|
||||
```
|
||||
|
||||
Make accessible from network:
|
||||
```bash
|
||||
python scripts/legal_doc_generator_web.py --host 0.0.0.0 --port 8080
|
||||
```
|
||||
|
||||
Debug mode:
|
||||
```bash
|
||||
python scripts/legal_doc_generator_web.py --debug
|
||||
```
|
||||
|
||||
### Using the Interface
|
||||
|
||||
1. **Start the server** using one of the commands above
|
||||
2. **Open your browser** and navigate to the displayed URL (e.g., http://127.0.0.1:5000)
|
||||
3. **Fill in the form**:
|
||||
- Select your website type (Plain, Membership, or E-commerce)
|
||||
- Enter your company name
|
||||
- Enter your website URL
|
||||
- Enter your contact email
|
||||
- Choose which document(s) to generate
|
||||
4. **Click "Generate Preview"** to see the document in the preview pane
|
||||
5. **Click "Download HTML"** to save the generated document
|
||||
|
||||
## Form Options
|
||||
|
||||
### Website Type
|
||||
- **Plain Website**: For informational websites with basic analytics and contact forms
|
||||
- **Membership Website**: Includes terms for user accounts, membership fees, and user-generated content
|
||||
- **E-commerce Website**: Includes terms for online sales, payments, shipping, and returns
|
||||
|
||||
### Document Type
|
||||
- **Terms of Service**: Generate only the Terms of Service document
|
||||
- **Privacy Policy**: Generate only the Privacy Policy document
|
||||
- **Both**: Generate a combined document with both policies
|
||||
|
||||
## Features
|
||||
|
||||
### Live Preview
|
||||
The preview pane shows exactly how your document will look, with professional styling applied.
|
||||
|
||||
### Instant Download
|
||||
Click the download button to save the generated HTML file with an appropriate filename based on your company name.
|
||||
|
||||
### Responsive Design
|
||||
The web interface works on desktop, tablet, and mobile devices.
|
||||
|
||||
## Security
|
||||
|
||||
- All user input is sanitized using HTML escaping
|
||||
- XSS vulnerabilities are prevented
|
||||
- No data is stored on the server
|
||||
- Documents are generated on-demand
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Flask Not Found
|
||||
If you see "Flask is required for the web interface":
|
||||
```bash
|
||||
pip install flask
|
||||
```
|
||||
|
||||
### Port Already in Use
|
||||
If port 5000 is already in use, specify a different port:
|
||||
```bash
|
||||
python scripts/legal_doc_generator_web.py --port 8080
|
||||
```
|
||||
|
||||
### Cannot Access from Other Devices
|
||||
To make the server accessible from other devices on your network:
|
||||
```bash
|
||||
python scripts/legal_doc_generator_web.py --host 0.0.0.0
|
||||
```
|
||||
|
||||
## Command Line Alternative
|
||||
|
||||
If you prefer command-line usage, the original CLI versions are still available:
|
||||
|
||||
**Python:**
|
||||
```bash
|
||||
python scripts/legal_doc_generator.py --type membership --company-name "Acme Inc"
|
||||
```
|
||||
|
||||
**PHP:**
|
||||
```bash
|
||||
php scripts/legal_doc_generator.php --type membership --company-name "Acme Inc"
|
||||
```
|
||||
|
||||
## Disclaimer
|
||||
|
||||
⚠️ **Important:** These generated documents are templates and should be reviewed by a qualified attorney before use. Customize them to fit your specific business needs and comply with applicable laws in your jurisdiction.
|
||||
|
||||
## License
|
||||
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
|
||||
@@ -1,392 +0,0 @@
|
||||
# New Automation Scripts - v2.0.1
|
||||
|
||||
This document describes the new automation scripts added to MokoStandards.
|
||||
|
||||
## Overview
|
||||
|
||||
The following scripts have been added to enhance automation capabilities across analysis, validation, maintenance, documentation, and utility categories.
|
||||
|
||||
## Analysis Scripts
|
||||
|
||||
### `analyze_dependencies.py`
|
||||
**Location:** `scripts/analysis/analyze_dependencies.py`
|
||||
|
||||
Analyzes project dependencies across multiple package managers (Python, npm, composer).
|
||||
|
||||
**Features:**
|
||||
- Scans for requirements.txt, package.json, composer.json
|
||||
- Lists all dependencies by type (production, dev)
|
||||
- Optional check for outdated packages
|
||||
- JSON output support
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Analyze current directory
|
||||
python3 scripts/analysis/analyze_dependencies.py
|
||||
|
||||
# Analyze specific path
|
||||
python3 scripts/analysis/analyze_dependencies.py /path/to/project
|
||||
|
||||
# JSON output
|
||||
python3 scripts/analysis/analyze_dependencies.py --json
|
||||
|
||||
# Check for outdated packages
|
||||
python3 scripts/analysis/analyze_dependencies.py --check-outdated
|
||||
```
|
||||
|
||||
### `code_metrics.py`
|
||||
**Location:** `scripts/analysis/code_metrics.py`
|
||||
|
||||
Analyzes code metrics including lines of code, file counts, and language distribution.
|
||||
|
||||
**Features:**
|
||||
- Counts total lines, code lines, and comment lines
|
||||
- Breaks down by programming language
|
||||
- Identifies largest files
|
||||
- Comment ratio analysis
|
||||
- JSON output support
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Analyze current directory
|
||||
python3 scripts/analysis/code_metrics.py
|
||||
|
||||
# Analyze specific path
|
||||
python3 scripts/analysis/code_metrics.py /path/to/project
|
||||
|
||||
# JSON output
|
||||
python3 scripts/analysis/code_metrics.py --json
|
||||
```
|
||||
|
||||
## Automation Scripts
|
||||
|
||||
### `setup_dev_environment.py`
|
||||
**Location:** `scripts/automation/setup_dev_environment.py`
|
||||
|
||||
Quick setup script for new contributors to configure their development environment.
|
||||
|
||||
**Features:**
|
||||
- Checks for required tools (git, python3)
|
||||
- Verifies Python version (3.8+)
|
||||
- Sets up git commit message template
|
||||
- Installs Python dependencies
|
||||
- Configures pre-commit hooks
|
||||
- Checks environment variables
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Full setup
|
||||
python3 scripts/automation/setup_dev_environment.py
|
||||
|
||||
# Skip dependency installation
|
||||
python3 scripts/automation/setup_dev_environment.py --skip-install
|
||||
```
|
||||
|
||||
### `check_outdated_actions.py`
|
||||
**Location:** `scripts/automation/check_outdated_actions.py`
|
||||
|
||||
Checks for outdated GitHub Actions in workflow files.
|
||||
|
||||
**Features:**
|
||||
- Scans all workflow files (.yml, .yaml)
|
||||
- Identifies actions with multiple versions
|
||||
- Detects SHA-based versions
|
||||
- Compares against known latest versions
|
||||
- Provides actionable recommendations
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Check default location (.github/workflows)
|
||||
python3 scripts/automation/check_outdated_actions.py
|
||||
|
||||
# Check custom workflow directory
|
||||
python3 scripts/automation/check_outdated_actions.py --workflow-dir path/to/workflows
|
||||
```
|
||||
|
||||
## Validation Scripts
|
||||
|
||||
### `check_markdown_links.py`
|
||||
**Location:** `scripts/validate/check_markdown_links.py`
|
||||
|
||||
Validates links in markdown files to ensure they are not broken.
|
||||
|
||||
**Features:**
|
||||
- Extracts all links from markdown files
|
||||
- Validates local file links
|
||||
- Detects broken relative links
|
||||
- Categorizes links (external, local, anchor)
|
||||
- Reports broken links with file and line number
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Check current directory
|
||||
python3 scripts/validate/check_markdown_links.py
|
||||
|
||||
# Check specific path
|
||||
python3 scripts/validate/check_markdown_links.py docs/
|
||||
|
||||
# Skip external link validation
|
||||
python3 scripts/validate/check_markdown_links.py --skip-external
|
||||
```
|
||||
|
||||
**Exit Code:** Returns 1 if broken links are found, 0 otherwise.
|
||||
|
||||
### `find_todos.py`
|
||||
**Location:** `scripts/validate/find_todos.py`
|
||||
|
||||
Finds and reports TODO, FIXME, and other code comments across the codebase.
|
||||
|
||||
**Features:**
|
||||
- Searches for customizable markers (TODO, FIXME, HACK, XXX, BUG, NOTE)
|
||||
- Supports multiple programming languages
|
||||
- Groups results by marker type or file
|
||||
- Excludes common directories (node_modules, vendor, etc.)
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Find all markers
|
||||
python3 scripts/validate/find_todos.py
|
||||
|
||||
# Find specific markers
|
||||
python3 scripts/validate/find_todos.py --markers TODO FIXME
|
||||
|
||||
# Group by file instead of marker
|
||||
python3 scripts/validate/find_todos.py --group-by file
|
||||
|
||||
# Search specific directory
|
||||
python3 scripts/validate/find_todos.py src/
|
||||
```
|
||||
|
||||
### `check_license_headers.py`
|
||||
**Location:** `scripts/validate/check_license_headers.py`
|
||||
|
||||
Checks and optionally fixes missing or incorrect license headers in source files.
|
||||
|
||||
**Features:**
|
||||
- Validates GPL-3.0-or-later license headers
|
||||
- Supports multiple file types (Python, JavaScript, PHP, Shell, etc.)
|
||||
- Can automatically add missing headers
|
||||
- Respects shebang lines in scripts
|
||||
- Configurable copyright year
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Check for missing headers
|
||||
python3 scripts/validate/check_license_headers.py
|
||||
|
||||
# Add missing headers
|
||||
python3 scripts/validate/check_license_headers.py --fix
|
||||
|
||||
# Use specific year
|
||||
python3 scripts/validate/check_license_headers.py --fix --year 2026
|
||||
```
|
||||
|
||||
**Exit Code:** Returns 1 if missing headers are found, 0 otherwise.
|
||||
|
||||
## Maintenance Scripts
|
||||
|
||||
### `update_copyright_year.py`
|
||||
**Location:** `scripts/maintenance/update_copyright_year.py`
|
||||
|
||||
Updates copyright year in file headers across the codebase.
|
||||
|
||||
**Features:**
|
||||
- Updates various copyright formats
|
||||
- Processes multiple file types
|
||||
- Dry-run mode by default
|
||||
- Excludes common build/dependency directories
|
||||
- Batch processing
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Dry run (preview changes)
|
||||
python3 scripts/maintenance/update_copyright_year.py
|
||||
|
||||
# Actually update files
|
||||
python3 scripts/maintenance/update_copyright_year.py --apply
|
||||
|
||||
# Use specific year
|
||||
python3 scripts/maintenance/update_copyright_year.py --year 2026 --apply
|
||||
|
||||
# Update specific directory
|
||||
python3 scripts/maintenance/update_copyright_year.py src/ --apply
|
||||
```
|
||||
|
||||
### `clean_old_branches.py`
|
||||
**Location:** `scripts/maintenance/clean_old_branches.py`
|
||||
|
||||
Identifies and optionally deletes old Git branches.
|
||||
|
||||
**Features:**
|
||||
- Finds branches older than specified days
|
||||
- Checks if branches are merged
|
||||
- Protects main/master/develop branches
|
||||
- Shows last commit date and days since last commit
|
||||
- Optional forced deletion
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Analyze branches older than 90 days
|
||||
python3 scripts/maintenance/clean_old_branches.py
|
||||
|
||||
# Use custom threshold
|
||||
python3 scripts/maintenance/clean_old_branches.py --days 60
|
||||
|
||||
# Delete merged old branches
|
||||
python3 scripts/maintenance/clean_old_branches.py --delete-merged
|
||||
|
||||
# Delete all old branches (caution!)
|
||||
python3 scripts/maintenance/clean_old_branches.py --delete-all --force
|
||||
|
||||
# Use different base branch
|
||||
python3 scripts/maintenance/clean_old_branches.py --base-branch develop
|
||||
```
|
||||
|
||||
## Documentation Scripts
|
||||
|
||||
### `generate_script_catalog.py`
|
||||
**Location:** `scripts/docs/generate_script_catalog.py`
|
||||
|
||||
Generates a comprehensive catalog of all scripts in the repository.
|
||||
|
||||
**Features:**
|
||||
- Scans all script directories
|
||||
- Extracts metadata from file headers
|
||||
- Organizes by category
|
||||
- Generates markdown documentation
|
||||
- Includes usage examples
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Generate catalog to stdout
|
||||
python3 scripts/docs/generate_script_catalog.py
|
||||
|
||||
# Save to file
|
||||
python3 scripts/docs/generate_script_catalog.py --output SCRIPT_CATALOG.md
|
||||
|
||||
# Use custom scripts directory
|
||||
python3 scripts/docs/generate_script_catalog.py --scripts-dir custom/scripts
|
||||
```
|
||||
|
||||
### `check_doc_coverage.py`
|
||||
**Location:** `scripts/docs/check_doc_coverage.py`
|
||||
|
||||
Checks documentation coverage by identifying undocumented scripts and templates.
|
||||
|
||||
**Features:**
|
||||
- Analyzes scripts and templates
|
||||
- Calculates documentation coverage percentage
|
||||
- Identifies missing README files
|
||||
- Provides overall quality rating
|
||||
- Lists undocumented items
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Check current directory
|
||||
python3 scripts/docs/check_doc_coverage.py
|
||||
|
||||
# Check specific path
|
||||
python3 scripts/docs/check_doc_coverage.py /path/to/project
|
||||
```
|
||||
|
||||
## Utility Scripts
|
||||
|
||||
### `git_helper.sh`
|
||||
**Location:** `scripts/run/git_helper.sh`
|
||||
|
||||
Helper script for common git operations with enhanced output.
|
||||
|
||||
**Features:**
|
||||
- Enhanced status with statistics
|
||||
- Interactive cleanup of untracked files
|
||||
- Branch listing with dates
|
||||
- Stash management with descriptions
|
||||
- Commit history visualization
|
||||
- Search commit messages
|
||||
- Undo last commit (safely)
|
||||
- Merge conflict detection
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
# Show enhanced status
|
||||
bash scripts/run/git_helper.sh status
|
||||
|
||||
# Clean untracked files
|
||||
bash scripts/run/git_helper.sh clean
|
||||
|
||||
# Sync with remote
|
||||
bash scripts/run/git_helper.sh sync
|
||||
|
||||
# List branches with dates
|
||||
bash scripts/run/git_helper.sh branch
|
||||
|
||||
# Stash with description
|
||||
bash scripts/run/git_helper.sh stash "WIP: feature implementation"
|
||||
|
||||
# Apply stash
|
||||
bash scripts/run/git_helper.sh unstash
|
||||
|
||||
# Show commit history
|
||||
bash scripts/run/git_helper.sh history 20
|
||||
|
||||
# Search commits
|
||||
bash scripts/run/git_helper.sh search "fix bug"
|
||||
|
||||
# Undo last commit (keeps changes)
|
||||
bash scripts/run/git_helper.sh undo-commit
|
||||
|
||||
# Show diff statistics
|
||||
bash scripts/run/git_helper.sh diff-stats
|
||||
|
||||
# Check for merge conflicts
|
||||
bash scripts/run/git_helper.sh conflicts
|
||||
```
|
||||
|
||||
## Script Statistics
|
||||
|
||||
**New Scripts Added:** 11
|
||||
- Analysis: 2
|
||||
- Automation: 2
|
||||
- Validation: 3
|
||||
- Maintenance: 2
|
||||
- Documentation: 2
|
||||
- Utility: 1
|
||||
|
||||
**Total Lines of Code:** ~9,800 lines
|
||||
|
||||
## Common Features
|
||||
|
||||
All new scripts include:
|
||||
- Comprehensive docstrings and headers
|
||||
- Command-line argument parsing
|
||||
- Help messages (`--help`)
|
||||
- Error handling and validation
|
||||
- Progress indicators and colored output
|
||||
- Exclusion of common directories (node_modules, vendor, etc.)
|
||||
- Support for dry-run modes where applicable
|
||||
|
||||
## Integration
|
||||
|
||||
These scripts integrate seamlessly with the existing MokoStandards automation framework:
|
||||
- Follow the same file header conventions
|
||||
- Use consistent coding standards
|
||||
- Compatible with existing workflows
|
||||
- Can be called from CI/CD pipelines
|
||||
- Support batch operations
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
Potential future additions:
|
||||
- Web-based dashboards for metrics
|
||||
- GitHub Actions integration for automatic checks
|
||||
- Email notifications for outdated dependencies
|
||||
- Automated pull request creation for updates
|
||||
- Integration with project management tools
|
||||
|
||||
## Support
|
||||
|
||||
For issues or questions about these scripts:
|
||||
1. Check the script's `--help` output
|
||||
2. Review this documentation
|
||||
3. Open an issue in the repository
|
||||
4. Contact hello@mokoconsulting.tech
|
||||
@@ -1,178 +0,0 @@
|
||||
# Quick Start: Auto-Create Organization Projects
|
||||
|
||||
This guide provides a quick start for automatically creating smart GitHub Projects for all repositories in the mokoconsulting-tech organization.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- GitHub Personal Access Token with permissions:
|
||||
- `repo` (full repository access)
|
||||
- `project` (read and write)
|
||||
- `read:org` (organization read)
|
||||
- Python 3.7+ with `requests` library installed
|
||||
|
||||
## Option 1: GitHub Actions (Recommended)
|
||||
|
||||
### Run via GitHub UI
|
||||
|
||||
1. Go to **Actions** tab in the MokoStandards repository
|
||||
2. Select **"Auto-Create Organization Projects"** workflow
|
||||
3. Click **"Run workflow"**
|
||||
4. Configure options:
|
||||
- **Dry run**: Check to preview without making changes (recommended first time)
|
||||
- **Verbose**: Check to enable detailed logging
|
||||
5. Click **"Run workflow"**
|
||||
6. Review the workflow logs and summary
|
||||
|
||||
### Scheduled Runs
|
||||
|
||||
The workflow automatically runs quarterly (every 3 months) in dry-run mode to detect new repositories and changes.
|
||||
|
||||
## Option 2: Command Line
|
||||
|
||||
### Dry Run First (Recommended)
|
||||
|
||||
```bash
|
||||
# Preview what would be created
|
||||
python3 scripts/auto_create_org_projects.py --dry-run --verbose
|
||||
```
|
||||
|
||||
### Create Projects and Roadmaps
|
||||
|
||||
```bash
|
||||
# Set your GitHub token
|
||||
export GH_PAT="your_github_token"
|
||||
|
||||
# Run the script
|
||||
python3 scripts/auto_create_org_projects.py
|
||||
|
||||
# Or with verbose logging
|
||||
python3 scripts/auto_create_org_projects.py --verbose
|
||||
```
|
||||
|
||||
## What Gets Created
|
||||
|
||||
### For Each Repository
|
||||
|
||||
1. **Project Type Detection**
|
||||
- Joomla: Detects `.xml` manifests and Joomla directory structure
|
||||
- Dolibarr: Detects `mod*.class.php` descriptors and Dolibarr structure
|
||||
- Generic: Default for everything else
|
||||
|
||||
2. **Roadmap Generation** (if missing)
|
||||
- Creates `docs/ROADMAP.md` in the repository
|
||||
- Type-specific content with version milestones
|
||||
- Committed directly to default branch
|
||||
|
||||
3. **GitHub Project Creation**
|
||||
- Project with repository-specific name
|
||||
- Custom fields based on project type
|
||||
- Standard views (Master Backlog, Sprint Board, Release Roadmap, Blocked Items)
|
||||
- Type-specific views
|
||||
|
||||
### Custom Fields by Type
|
||||
|
||||
**All Projects:**
|
||||
- Status, Priority, Size/Effort, Sprint, Target Version
|
||||
- Blocked Reason, Acceptance Criteria
|
||||
|
||||
**Joomla Projects Add:**
|
||||
- Joomla Version, Extension Type, Marketplace Status
|
||||
- Update Server URL, Extension Version, PHP Minimum
|
||||
- Installation Type, Has Frontend/Backend/API
|
||||
|
||||
**Dolibarr Projects Add:**
|
||||
- Dolibarr Version, Module Number, Database Changes
|
||||
- Module Descriptor, Module Version, PHP Minimum
|
||||
- Requires Sudo, Module Family, Has Triggers/Hooks/Widgets
|
||||
|
||||
**Generic Projects Add:**
|
||||
- Technology Stack, Environment, Release Channel
|
||||
- API Version, Deployment Status, Infrastructure
|
||||
- Database Type
|
||||
|
||||
## Quick Workflow
|
||||
|
||||
```bash
|
||||
# 1. Test with dry run
|
||||
python3 scripts/auto_create_org_projects.py --dry-run --verbose
|
||||
|
||||
# 2. Review the output
|
||||
# - Check detected project types
|
||||
# - Verify roadmaps to be created
|
||||
# - Confirm projects to be created
|
||||
|
||||
# 3. Run for real
|
||||
export GH_PAT="your_token"
|
||||
python3 scripts/auto_create_org_projects.py --verbose
|
||||
|
||||
# 4. Review created projects
|
||||
# Visit: https://github.com/orgs/mokoconsulting-tech/projects
|
||||
```
|
||||
|
||||
## Single Repository Mode
|
||||
|
||||
To create a project for a specific repository:
|
||||
|
||||
```bash
|
||||
python3 scripts/create_repo_project.py REPO_NAME --type joomla
|
||||
python3 scripts/create_repo_project.py REPO_NAME --type dolibarr
|
||||
python3 scripts/create_repo_project.py REPO_NAME --type generic
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "GitHub token required"
|
||||
|
||||
Set the `GH_PAT` environment variable:
|
||||
```bash
|
||||
export GH_PAT="ghp_your_token_here"
|
||||
```
|
||||
|
||||
### "Permission denied"
|
||||
|
||||
Verify your token has these scopes:
|
||||
- `repo` - Full repository access
|
||||
- `project` - Project read/write
|
||||
- `read:org` - Organization read
|
||||
|
||||
### "Failed to detect project type"
|
||||
|
||||
The script defaults to "generic" type. Manually specify type when creating:
|
||||
```bash
|
||||
python3 scripts/create_repo_project.py REPO_NAME --type joomla
|
||||
```
|
||||
|
||||
### "Rate limit exceeded"
|
||||
|
||||
GitHub API has rate limits. Wait a few minutes and try again, or use a token with higher limits.
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Always dry-run first** to preview changes
|
||||
2. **Use verbose mode** for better visibility
|
||||
3. **Review generated roadmaps** and customize as needed
|
||||
4. **Check created projects** and adjust fields/views
|
||||
5. **Configure automations** after project creation
|
||||
6. **Add initial issues** to populate the project
|
||||
|
||||
## Next Steps After Creation
|
||||
|
||||
1. **Review Projects**: Visit each project and verify configuration
|
||||
2. **Customize Roadmaps**: Edit generated roadmaps for specific needs
|
||||
3. **Add Issues**: Populate projects with existing issues
|
||||
4. **Configure Automations**: Set up workflow automations
|
||||
5. **Share with Team**: Notify team members about new project boards
|
||||
|
||||
## Documentation
|
||||
|
||||
- [Full Documentation](./AUTO_CREATE_ORG_PROJECTS.md)
|
||||
- [Project Templates](../templates/projects/README.md)
|
||||
- [GitHub Projects v2 Standard](../templates/projects/README.md)
|
||||
|
||||
## Support
|
||||
|
||||
For issues:
|
||||
1. Check logs with `--verbose` flag
|
||||
2. Review error messages
|
||||
3. Consult [AUTO_CREATE_ORG_PROJECTS.md](./AUTO_CREATE_ORG_PROJECTS.md)
|
||||
4. Open issue in MokoStandards repository
|
||||
@@ -1,180 +0,0 @@
|
||||
# Workflow Standards
|
||||
|
||||
> Canonical reference for Gitea Actions CI/CD workflows across all Moko Consulting repositories.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Template Repos (canonical source) → Production Repos (synced copies)
|
||||
───────────────────────────────────── ──────────────────────────────────
|
||||
MokoStandards-Template-Joomla → MokoOnyx, MokoCassiopeia, MokoJGDPC, etc.
|
||||
MokoStandards-Template-Dolibarr → MokoCRM, MokoDoliForm, MokoDoliAuth, etc.
|
||||
MokoStandards-Template-Generic → MokoISOUpdatePortable, etc.
|
||||
MokoStandards-Template-Client → client-clarksvillefurs, client-kiddieland
|
||||
```
|
||||
|
||||
**MokoOnyx** is the living reference implementation for Joomla workflows. Template repos are the **single source of truth** for workflow content. The MokoStandards-API repo does NOT store workflow templates — its sync engine (`RepositorySynchronizer.php`) clones template repos at runtime to get the latest workflows.
|
||||
|
||||
### How Sync Works
|
||||
|
||||
```
|
||||
bulk-repo-sync.yml (API repo)
|
||||
→ RepositorySynchronizer.php detects platform type
|
||||
→ Clones the matching template repo to /tmp/
|
||||
→ Copies .gitea/workflows/*.yml from template → target repo
|
||||
```
|
||||
|
||||
No workflow files are stored in the API repo. This prevents drift.
|
||||
|
||||
## Template Repos
|
||||
|
||||
| Repo | Purpose | Types |
|
||||
|------|---------|-------|
|
||||
| `MokoStandards-Template-Joomla` | All Joomla extension types in one repo | plugin, template, module, component, package, library |
|
||||
| `MokoStandards-Template-Dolibarr` | Dolibarr module scaffold | — |
|
||||
| `MokoStandards-Template-Generic` | Non-platform projects | — |
|
||||
| `MokoStandards-Template-Client` | Client Joomla sites with media sync | — |
|
||||
|
||||
## Standard Workflow Suite
|
||||
|
||||
### Joomla Repositories (10 workflows)
|
||||
|
||||
| Workflow | Trigger | Purpose |
|
||||
|----------|---------|---------|
|
||||
| `auto-release.yml` | PR merge to main (src/ changes) | Stable release: zip, Gitea release, version bump, updates.xml |
|
||||
| `pre-release.yml` | Manual dispatch | Dev/alpha/beta/rc: patch bump, zip, pre-release |
|
||||
| `ci-joomla.yml` | PRs to main | PHP lint, PHPStan, coding standards |
|
||||
| `pr-check.yml` | PRs to main | Gate: manifest XML validation, build test |
|
||||
| `deploy-manual.yml` | Manual dispatch | SFTP deploy to selected environment |
|
||||
| `repo-health.yml` | Weekly schedule / manual | Structure compliance, required files |
|
||||
| `update-server.yml` | Weekly schedule / manual | Validate updates.xml format + download URLs |
|
||||
| `security-audit.yml` | Weekly + PR (lock file changes) | Dependency vulnerability scanning |
|
||||
| `notify.yml` | Workflow completion | ntfy push on release success or failure |
|
||||
| `cleanup.yml` | Weekly (Sunday 03:00 UTC) | Delete merged branches + old workflow runs |
|
||||
|
||||
### Dolibarr Repositories (11 workflows)
|
||||
|
||||
Same as Joomla except:
|
||||
- `ci-dolibarr.yml` replaces `ci-joomla.yml` (Dolibarr-specific validation)
|
||||
- `publish-to-mokodolimods.yml` added (copies src/ to mokodolimods on release)
|
||||
|
||||
### Generic Repositories (9 workflows)
|
||||
|
||||
Same as Joomla minus `ci-joomla.yml` (no platform-specific CI).
|
||||
|
||||
### Client Repositories (10 workflows)
|
||||
|
||||
Same as Joomla minus `update-server.yml` (no updates.xml — clients are sites, not extensions), plus:
|
||||
- `sync-media.yml` — Bidirectional SFTP sync for `images/`, `files/`, `media/` between dev and production (every 6 hours + manual dispatch)
|
||||
|
||||
**Per-client repo variables required for sync:**
|
||||
| Variable | Purpose |
|
||||
|----------|---------|
|
||||
| `DEV_SYNC_HOST` | Dev server hostname |
|
||||
| `DEV_SYNC_PORT` | Dev SSH port (default 22) |
|
||||
| `DEV_SYNC_USERNAME` | Dev server user |
|
||||
| `DEV_SYNC_PATH` | Base path on dev |
|
||||
| `PROD_SYNC_HOST` | Production server hostname |
|
||||
| `PROD_SYNC_PORT` | Production SSH port (default 22) |
|
||||
| `PROD_SYNC_USERNAME` | Production server user |
|
||||
| `PROD_SYNC_PATH` | Base path on production |
|
||||
|
||||
**Per-client repo secrets:** `DEV_SYNC_KEY`, `PROD_SYNC_KEY`
|
||||
|
||||
## Release Model
|
||||
|
||||
```
|
||||
Feature branch → PR → merge to main → auto-release.yml (STABLE)
|
||||
↓
|
||||
pre-release.yml (manual dispatch for dev/alpha/beta/rc)
|
||||
```
|
||||
|
||||
- **Stable releases** trigger automatically on PR merge to main (with `src/` changes)
|
||||
- **Pre-releases** (dev, alpha, beta, rc) are manual via workflow_dispatch
|
||||
- All releases overwrite the previous release for that channel (no history accumulation)
|
||||
- Higher releases cascade-delete lower ones (stable deletes all pre-releases, rc deletes beta+alpha+dev, etc.)
|
||||
|
||||
### Version Bump Policy
|
||||
|
||||
| Trigger | Bump | Example |
|
||||
|---------|------|---------|
|
||||
| Stable (PR merge to main) | **Minor** — reset patch to 00 | `03.00.07` → `03.01.00` |
|
||||
| Pre-release (manual) | **Patch** | `03.00.07` → `03.00.08` |
|
||||
| Patch rollover (99→00) | Auto-bump minor | `03.00.99` → `03.01.00` |
|
||||
| Minor rollover (99→00) | Auto-bump major | `03.99.00` → `04.00.00` |
|
||||
|
||||
## Org-Level Configuration
|
||||
|
||||
These secrets and variables are set at the MokoConsulting org level and available to all repos:
|
||||
|
||||
### Secrets
|
||||
| Name | Purpose |
|
||||
|------|---------|
|
||||
| `GA_TOKEN` | Gitea API token for releases, branch operations |
|
||||
| `GH_TOKEN` | GitHub token for mirrors |
|
||||
| `DEPLOY_SSH_KEY` | Universal SSH key for SFTP deploys |
|
||||
| `DEV_SSH_KEY` | Dev server SSH key |
|
||||
| `DEMO_FTP_KEY` | Demo server SFTP key |
|
||||
|
||||
### Variables
|
||||
| Name | Value | Purpose |
|
||||
|------|-------|---------|
|
||||
| `NTFY_URL` | `https://ntfy.mokoconsulting.tech` | Notification server |
|
||||
| `NTFY_TOPIC` | `gitea-releases` | Default notification topic |
|
||||
| `DEV_SSH_HOST` | `dev.mokoconsulting.tech` | Dev server hostname |
|
||||
| `DEV_SSH_PORT` | `22` | Dev server SSH port |
|
||||
| `DEV_SSH_USERNAME` | `mokoconsulting_dev` | Dev server username |
|
||||
| `DEMO_FTP_HOST` | `demo.mokoconsulting.tech` | Demo server hostname |
|
||||
| `DEMO_FTP_PORT` | `22` | Demo server port |
|
||||
| `DEMO_FTP_USERNAME` | `mokoconsulting_demo` | Demo server username |
|
||||
|
||||
## Syncing Workflows
|
||||
|
||||
To update workflows across all repos from the canonical template:
|
||||
|
||||
```bash
|
||||
# Joomla repos — sync from unified template
|
||||
for REPO in MokoOnyx MokoCassiopeia MokoJGDPC MokoJoomHero MokoJoomTOS MokoWaaS MokoWaaSAnnounce MokoDPCalendarAPI; do
|
||||
cd /a/$REPO
|
||||
rm -f .gitea/workflows/*.yml
|
||||
cp /a/MokoStandards-Template-Joomla/.gitea/workflows/*.yml .gitea/workflows/
|
||||
git add .gitea/workflows/ && git commit -m "chore: sync workflows" && git push
|
||||
done
|
||||
|
||||
# Dolibarr repos — sync from Dolibarr template
|
||||
for REPO in MokoCRM MokoDoliForm MokoDoliAuth MokoDolibarr ...; do
|
||||
cd /a/$REPO
|
||||
rm -f .gitea/workflows/*.yml
|
||||
cp /a/MokoStandards-Template-Dolibarr/.gitea/workflows/*.yml .gitea/workflows/
|
||||
git add .gitea/workflows/ && git commit -m "chore: sync workflows" && git push
|
||||
done
|
||||
|
||||
# Client repos — sync from Client template
|
||||
for REPO in client-clarksvillefurs client-kiddieland; do
|
||||
cd /a/$REPO
|
||||
rm -f .gitea/workflows/*.yml
|
||||
cp /a/MokoStandards-Template-Client/.gitea/workflows/*.yml .gitea/workflows/
|
||||
git add .gitea/workflows/ && git commit -m "chore: sync workflows" && git push
|
||||
done
|
||||
```
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|------|--------|
|
||||
| 2026-05-02 | Initial standardization: 10-workflow Joomla suite from MokoOnyx |
|
||||
| 2026-05-02 | Added pre-release.yml for manual dev/alpha/beta/rc builds |
|
||||
| 2026-05-02 | Removed auto-deploy (deploy is manual only) |
|
||||
| 2026-05-02 | Modernized Dolibarr/Generic/Client templates to match |
|
||||
| 2026-05-02 | Added workflows to all 22 Dolibarr production repos |
|
||||
| 2026-05-02 | Moved canonical source from API repo to template repos |
|
||||
| 2026-05-02 | Added sync-media.yml to Client template (bidirectional SFTP) |
|
||||
| 2026-05-02 | Deployed workflows to client repos (clarksvillefurs, kiddieland) |
|
||||
| 2026-05-02 | Consolidated 6 Joomla template repos → `MokoStandards-Template-Joomla` |
|
||||
| 2026-05-02 | Deleted individual template repos (Plugin, Template, Module, Component, Package, Library) |
|
||||
| 2026-05-02 | Cascade delete: higher releases auto-delete lower pre-release channels |
|
||||
| 2026-05-02 | Release naming: includes extension element name (e.g. "mokodpcalendarapi 03.00.00 (stable)") |
|
||||
| 2026-05-02 | Stable releases overwrite (not append) |
|
||||
| 2026-05-04 | Removed updates.xml + update-server.yml from client repos (sites, not extensions) |
|
||||
| 2026-05-04 | Added client.tf definition in MokoStandards-API |
|
||||
| 2026-05-05 | Version policy: stable=minor bump, pre-release=patch bump (was major/patch) |
|
||||
@@ -1,23 +0,0 @@
|
||||
# Analysis Tools
|
||||
|
||||
## Overview
|
||||
|
||||
This directory contains documentation for analysis tools in `/api/analysis/`.
|
||||
|
||||
Analysis tools provide code quality, dependency analysis, and other analytical capabilities.
|
||||
|
||||
## Contents
|
||||
|
||||
_To be documented_
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [API Overview](../index.md)
|
||||
- [Validation Tools](../validate/index.md)
|
||||
|
||||
---
|
||||
|
||||
**Location**: `docs/api/analysis/`
|
||||
**Mirrors**: `/api/analysis/`
|
||||
**Last Updated**: 2026-03-03
|
||||
**Maintained By**: MokoStandards Team
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user