chore: sync workflows, scripts, and configurations from MokoStandards
This commit is contained in:
3
.github/dependabot.yml
vendored
3
.github/dependabot.yml
vendored
@@ -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:
|
||||
|
||||
24
.github/workflows/ci.yml
vendored
24
.github/workflows/ci.yml
vendored
@@ -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
|
||||
|
||||
10
.github/workflows/release.yml
vendored
10
.github/workflows/release.yml
vendored
@@ -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 }}
|
||||
|
||||
10
.github/workflows/reusable-deploy.yml
vendored
10
.github/workflows/reusable-deploy.yml
vendored
@@ -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
|
||||
|
||||
@@ -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