release: v05.00.00 — major version bump, CHANGELOG, Grafana 2-col #5

Merged
jmiller merged 6 commits from dev into main 2026-05-11 22:13:30 +00:00
326 changed files with 10190 additions and 13204 deletions
+1 -2
View File
@@ -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
#
# +========================================================================+
+1 -2
View File
@@ -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
+7
View File
@@ -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
+1 -2
View File
@@ -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
#
# +========================================================================+
+1 -1
View File
@@ -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
+87
View File
@@ -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
+11
View File
@@ -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.
+12 -1
View File
@@ -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
+11
View File
@@ -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
+1 -1
View File
@@ -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
+1 -2
View File
@@ -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
*/
+7
View File
@@ -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,
+11
View File
@@ -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
+1 -2
View File
@@ -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
+1 -2
View File
@@ -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
*/
+7
View File
@@ -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
+1 -2
View File
@@ -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
*/
+1 -2
View File
@@ -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
+1 -2
View File
@@ -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
+1 -2
View File
@@ -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
View File
@@ -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}
-->
+1 -2
View File
@@ -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
+1 -2
View File
@@ -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
View File
@@ -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
+1 -2
View File
@@ -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
*/
+1 -2
View File
@@ -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
+1 -2
View File
@@ -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
*/
+1 -2
View File
@@ -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
*/
+1 -2
View File
@@ -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
View File
@@ -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": [
{
-1
View File
@@ -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
*/
+1 -2
View File
@@ -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
+1 -2
View File
@@ -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
+1 -2
View File
@@ -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"
}
-1
View File
@@ -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
*/
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+11
View File
@@ -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
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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"
}
+1 -2
View File
@@ -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,
+1 -2
View File
@@ -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
*/
-362
View File
@@ -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
-383
View File
@@ -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 |
-98
View File
@@ -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}")
```
-138
View File
@@ -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.
-392
View File
@@ -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
-178
View File
@@ -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
-180
View File
@@ -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) |
-23
View File
@@ -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