chore: sync workflows, scripts, and configurations from MokoStandards
This commit is contained in:
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"):
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user