chore: sync workflows, scripts, and configurations from MokoStandards

This commit is contained in:
Moko Standards Bot
2026-01-30 04:44:59 +00:00
parent 212918cc62
commit f5c8f42440
13 changed files with 75 additions and 85 deletions

View File

@@ -8,9 +8,6 @@
# VERSION: 01.00.00
# BRIEF: Dependabot configuration for automated dependency updates and security patches
# NOTE: Monitors GitHub Actions for vulnerabilities and keeps ecosystem secure
# NOTE: Reviewers and assignees are synced from MokoStandards. Repositories must have
# the "mokoconsulting-tech/maintainers" team configured. Individual assignees
# may be customized per repository if needed.
version: 2
updates:

View File

@@ -61,7 +61,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Detect platform type
id: platform
@@ -138,7 +138,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -175,7 +175,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -213,10 +213,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v6
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
@@ -241,10 +241,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v6
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
@@ -280,7 +280,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -309,10 +309,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v6
uses: actions/setup-go@v5
with:
go-version: '1.21'
cache: true
@@ -331,7 +331,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup Ruby
uses: ruby/setup-ruby@v1
@@ -353,7 +353,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup Rust
uses: actions-rs/toolchain@v1

View File

@@ -54,7 +54,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
with:
fetch-depth: 0
@@ -124,7 +124,7 @@ jobs:
md5sum "${ZIP_NAME}" > "${ZIP_NAME}.md5"
- name: Upload build artifacts
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v4
with:
name: release-package
path: |
@@ -139,10 +139,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v7
uses: actions/download-artifact@v4.1.3
with:
name: release-package
path: ./artifacts
@@ -175,7 +175,7 @@ jobs:
fi
- name: Create Release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ steps.version.outputs.version }}
name: Release ${{ steps.version.outputs.version }}

View File

@@ -139,10 +139,6 @@ jobs:
- name: Setup SSH key
if: inputs.deployment-method == 'ssh' || inputs.deployment-method == 'rsync'
run: |
if [ -z "${{ secrets.DEPLOY_KEY }}" ]; then
echo "Error: DEPLOY_KEY secret is not set"
exit 1
fi
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
@@ -248,12 +244,6 @@ jobs:
echo "❌ Health check failed after ${TIMEOUT}s" >> $GITHUB_STEP_SUMMARY
exit 1
- name: Cleanup SSH key
if: always() && (inputs.deployment-method == 'ssh' || inputs.deployment-method == 'rsync')
run: |
rm -f ~/.ssh/deploy_key
echo "SSH key cleaned up"
- name: Update deployment status (success)
if: success()
uses: chrnorm/deployment-status@v2

View File

@@ -7,7 +7,7 @@
<description>Standard repository structure for MokoCRM (Dolibarr) modules</description>
<repository-type>crm-module</repository-type>
<platform>mokokrm</platform>
<last-updated>2026-01-30T00:00:00Z</last-updated>
<last-updated>2026-01-07T00:00:00Z</last-updated>
<maintainer>Moko Consulting</maintainer>
</metadata>
@@ -17,7 +17,7 @@
<file extension="md">
<name>README.md</name>
<description>Developer-focused documentation for contributors and maintainers</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
<stub-content><![CDATA[# {MODULE_NAME}
@@ -61,21 +61,21 @@ See LICENSE file for details.
<file extension="md">
<name>CONTRIBUTING.md</name>
<description>Contribution guidelines</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>contributor</audience>
</file>
<file extension="md">
<name>ROADMAP.md</name>
<description>Project roadmap with version goals and milestones</description>
<requirement-status>optional</requirement-status>
<required>false</required>
<audience>general</audience>
</file>
<file extension="">
<name>LICENSE</name>
<description>License file (GPL-3.0-or-later) - Default for Dolibarr/CRM modules</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>general</audience>
<template>templates/licenses/GPL-3.0</template>
<license-type>GPL-3.0-or-later</license-type>
@@ -84,14 +84,14 @@ See LICENSE file for details.
<file extension="md">
<name>CHANGELOG.md</name>
<description>Version history and changes</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>general</audience>
</file>
<file>
<name>Makefile</name>
<description>Build automation using MokoStandards templates</description>
<requirement-status>required</requirement-status>
<required>true</required>
<always-overwrite>true</always-overwrite>
<audience>developer</audience>
<source>
@@ -110,14 +110,14 @@ See LICENSE file for details.
<file extension="editorconfig">
<name>.editorconfig</name>
<description>Editor configuration for consistent coding style</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
</file>
<file extension="gitignore">
<name>.gitignore</name>
<description>Git ignore patterns - preserved during sync operations</description>
<requirement-status>required</requirement-status>
<required>true</required>
<always-overwrite>false</always-overwrite>
<audience>developer</audience>
</file>
@@ -125,7 +125,7 @@ See LICENSE file for details.
<file extension="gitattributes">
<name>.gitattributes</name>
<description>Git attributes configuration</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
</file>
</root-files>
@@ -136,14 +136,14 @@ See LICENSE file for details.
<directory path="src">
<name>src</name>
<description>Module source code for deployment</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains the actual module code that gets deployed to Dolibarr</purpose>
<files>
<file extension="md">
<name>README.md</name>
<description>End-user documentation deployed with the module</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>end-user</audience>
<stub-content><![CDATA[# {MODULE_NAME}
@@ -183,7 +183,7 @@ See CHANGELOG.md for version history.
<file extension="php">
<name>core/modules/mod{ModuleName}.class.php</name>
<description>Main module descriptor file</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
</file>
</files>
@@ -192,13 +192,13 @@ See CHANGELOG.md for version history.
<directory path="src/core">
<name>core</name>
<description>Core module files</description>
<requirement-status>required</requirement-status>
<required>true</required>
</directory>
<directory path="src/langs">
<name>langs</name>
<description>Language translation files</description>
<requirement-status>required</requirement-status>
<required>true</required>
</directory>
<directory path="src/sql">
@@ -237,14 +237,14 @@ See CHANGELOG.md for version history.
<directory path="docs">
<name>docs</name>
<description>Developer and technical documentation</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains technical documentation, API docs, architecture diagrams</purpose>
<files>
<file extension="md">
<name>index.md</name>
<description>Documentation index</description>
<requirement-status>required</requirement-status>
<required>true</required>
</file>
</files>
</directory>
@@ -253,7 +253,7 @@ See CHANGELOG.md for version history.
<directory path="scripts">
<name>scripts</name>
<description>Build and maintenance scripts</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains scripts for building, testing, and deploying</purpose>
<files>
@@ -290,14 +290,14 @@ See CHANGELOG.md for version history.
<directory path="tests">
<name>tests</name>
<description>Test files</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains unit tests, integration tests, and test fixtures</purpose>
<subdirectories>
<directory path="tests/unit">
<name>unit</name>
<description>Unit tests</description>
<requirement-status>required</requirement-status>
<required>true</required>
</directory>
<directory path="tests/integration">

View File

@@ -7,7 +7,7 @@
<description>Default repository structure applicable to all repository types with minimal requirements</description>
<repository-type>library</repository-type>
<platform>multi-platform</platform>
<last-updated>2026-01-30T00:00:00Z</last-updated>
<last-updated>2026-01-16T00:00:00Z</last-updated>
<maintainer>Moko Consulting</maintainer>
</metadata>

View File

@@ -7,7 +7,7 @@
<description>Standard repository structure for MokoWaaS (Joomla) components</description>
<repository-type>waas-component</repository-type>
<platform>mokowaas</platform>
<last-updated>2026-01-30T00:00:00Z</last-updated>
<last-updated>2026-01-15T00:00:00Z</last-updated>
<maintainer>Moko Consulting</maintainer>
</metadata>
@@ -17,14 +17,14 @@
<file extension="md">
<name>README.md</name>
<description>Developer-focused documentation for contributors and maintainers</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
</file>
<file extension="">
<name>LICENSE</name>
<description>License file (GPL-3.0-or-later) - Default for Joomla/WaaS components</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>general</audience>
<template>templates/licenses/GPL-3.0</template>
<license-type>GPL-3.0-or-later</license-type>
@@ -33,21 +33,21 @@
<file extension="md">
<name>CHANGELOG.md</name>
<description>Version history and changes</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>general</audience>
</file>
<file extension="md">
<name>SECURITY.md</name>
<description>Security policy and vulnerability reporting</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>general</audience>
</file>
<file extension="md">
<name>CODE_OF_CONDUCT.md</name>
<description>Community code of conduct</description>
<requirement-status>required</requirement-status>
<required>true</required>
<always-overwrite>true</always-overwrite>
<audience>contributor</audience>
</file>
@@ -55,21 +55,21 @@
<file extension="md">
<name>ROADMAP.md</name>
<description>Project roadmap with version goals and milestones</description>
<requirement-status>optional</requirement-status>
<required>false</required>
<audience>general</audience>
</file>
<file extension="md">
<name>CONTRIBUTING.md</name>
<description>Contribution guidelines</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>contributor</audience>
</file>
<file>
<name>Makefile</name>
<description>Build automation using MokoStandards templates</description>
<requirement-status>required</requirement-status>
<required>true</required>
<always-overwrite>true</always-overwrite>
<audience>developer</audience>
<source>
@@ -88,7 +88,7 @@
<file extension="gitignore">
<name>.gitignore</name>
<description>Git ignore patterns for Joomla development - preserved during sync operations</description>
<requirement-status>required</requirement-status>
<required>true</required>
<always-overwrite>false</always-overwrite>
<audience>developer</audience>
<template>templates/configs/.gitignore.joomla</template>
@@ -129,14 +129,14 @@
<file extension="gitattributes">
<name>.gitattributes</name>
<description>Git attributes configuration</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
</file>
<file extension="editorconfig">
<name>.editorconfig</name>
<description>Editor configuration for consistent coding style - preserved during sync</description>
<requirement-status>required</requirement-status>
<required>true</required>
<always-overwrite>false</always-overwrite>
<audience>developer</audience>
</file>
@@ -148,21 +148,21 @@
<directory path="site">
<name>site</name>
<description>Component frontend (site) code</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains frontend component code deployed to site</purpose>
<files>
<file extension="php">
<name>controller.php</name>
<description>Main site controller</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
</file>
<file extension="xml">
<name>manifest.xml</name>
<description>Component manifest for site</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
</file>
</files>
@@ -183,7 +183,7 @@
<directory path="site/views">
<name>views</name>
<description>Site views</description>
<requirement-status>required</requirement-status>
<required>true</required>
</directory>
</subdirectories>
</directory>
@@ -192,14 +192,14 @@
<directory path="admin">
<name>admin</name>
<description>Component backend (admin) code</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains backend component code for administrator</purpose>
<files>
<file extension="php">
<name>controller.php</name>
<description>Main admin controller</description>
<requirement-status>required</requirement-status>
<required>true</required>
<audience>developer</audience>
</file>
</files>
@@ -220,7 +220,7 @@
<directory path="admin/views">
<name>views</name>
<description>Admin views</description>
<requirement-status>required</requirement-status>
<required>true</required>
</directory>
<directory path="admin/sql">
@@ -263,7 +263,7 @@
<directory path="language">
<name>language</name>
<description>Language translation files</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains language INI files</purpose>
</directory>
@@ -271,14 +271,14 @@
<directory path="docs">
<name>docs</name>
<description>Developer and technical documentation</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains technical documentation, API docs, architecture diagrams</purpose>
<files>
<file extension="md">
<name>index.md</name>
<description>Documentation index</description>
<requirement-status>required</requirement-status>
<required>true</required>
</file>
</files>
</directory>
@@ -287,7 +287,7 @@
<directory path="scripts">
<name>scripts</name>
<description>Build and maintenance scripts</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains scripts for building, testing, and deploying</purpose>
<files>
@@ -325,14 +325,14 @@
<directory path="tests">
<name>tests</name>
<description>Test files</description>
<requirement-status>required</requirement-status>
<required>true</required>
<purpose>Contains unit tests, integration tests, and test fixtures</purpose>
<subdirectories>
<directory path="tests/unit">
<name>unit</name>
<description>Unit tests</description>
<requirement-status>required</requirement-status>
<required>true</required>
</directory>
<directory path="tests/integration">

View File

@@ -27,12 +27,13 @@ NOTE: Updates CHANGELOG.md and optionally updates VERSION in files
"""
import argparse
import json
import re
import subprocess
import sys
from datetime import datetime
from pathlib import Path
from typing import List, Optional
from typing import List, Optional, Tuple
class VersionReleaser:

View File

@@ -27,8 +27,10 @@ NOTE: Follows Keep a Changelog format, supports Added/Changed/Deprecated/Removed
"""
import argparse
import os
import re
import sys
from datetime import datetime
from pathlib import Path
from typing import List, Optional

View File

@@ -28,6 +28,7 @@ VERSION: 05.00.00
BRIEF: Validate copyright headers and file information in repository files
"""
import os
import sys
from pathlib import Path
from typing import List, Tuple, Dict

View File

@@ -31,13 +31,14 @@ Exit codes:
import argparse
import hashlib
import json
import os
import pickle
import sys
import xml.etree.ElementTree as ET
from dataclasses import dataclass
from dataclasses import dataclass, asdict
from enum import Enum
from pathlib import Path
from typing import Dict, List, Optional
from typing import Dict, List, Optional, Tuple
# Version
@@ -145,7 +146,6 @@ class DetectionCache:
with open(cache_file, 'wb') as f:
pickle.dump(result, f)
except (pickle.PickleError, OSError):
# Ignore cache write failures: cache is optional optimization
pass
def clear(self) -> None:
@@ -154,7 +154,6 @@ class DetectionCache:
try:
cache_file.unlink()
except OSError:
# Ignore failures to delete cache files: stale cache entries are non-critical
pass
@@ -229,6 +228,7 @@ class PlatformDetector:
indicators: List[str] = []
metadata: Dict[str, str] = {}
manifest_patterns = ["**/*.xml"]
skip_dirs = {".git", "vendor", "node_modules", ".github"}
for xml_file in self.repo_path.glob("**/*.xml"):

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""
Copyright (C) 2025-2026 Moko Consulting <hello@mokoconsulting.tech>
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
This file is part of a Moko Consulting project.

View File

@@ -27,11 +27,12 @@ Exit codes:
"""
import sys
import os
import argparse
import xml.etree.ElementTree as ET
import json
from pathlib import Path
from typing import List, Dict, Optional, Any
from typing import List, Dict, Tuple, Optional, Any
from dataclasses import dataclass
from enum import Enum
@@ -112,8 +113,6 @@ class RepositoryStructureValidator:
elif content.startswith('<?xml') or content.startswith('<'):
return "xml"
except Exception:
# Intentionally ignore read/parse errors; fall through to the generic
# "Unable to detect schema format" ValueError raised below.
pass
# Unable to detect format