Merge pull request #75 from mokoconsulting-tech/chore/sync-mokostandards-updates

chore: Sync MokoStandards workflows and configurations
This commit was merged in pull request #75.
This commit is contained in:
2026-01-29 22:45:27 -06:00
committed by GitHub
13 changed files with 75 additions and 85 deletions

View File

@@ -8,9 +8,6 @@
# VERSION: 01.00.00 # VERSION: 01.00.00
# BRIEF: Dependabot configuration for automated dependency updates and security patches # BRIEF: Dependabot configuration for automated dependency updates and security patches
# NOTE: Monitors GitHub Actions for vulnerabilities and keeps ecosystem secure # 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 version: 2
updates: updates:

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,7 +7,7 @@
<description>Default repository structure applicable to all repository types with minimal requirements</description> <description>Default repository structure applicable to all repository types with minimal requirements</description>
<repository-type>library</repository-type> <repository-type>library</repository-type>
<platform>multi-platform</platform> <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> <maintainer>Moko Consulting</maintainer>
</metadata> </metadata>

View File

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

View File

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

View File

@@ -27,8 +27,10 @@ NOTE: Follows Keep a Changelog format, supports Added/Changed/Deprecated/Removed
""" """
import argparse import argparse
import os
import re import re
import sys import sys
from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import List, Optional 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 BRIEF: Validate copyright headers and file information in repository files
""" """
import os
import sys import sys
from pathlib import Path from pathlib import Path
from typing import List, Tuple, Dict from typing import List, Tuple, Dict

View File

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

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/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. This file is part of a Moko Consulting project.

View File

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