chore: Sync MokoStandards workflows and configurations #75

Merged
jmiller-moko merged 1 commits from chore/sync-mokostandards-updates into main 2026-01-30 04:45:28 +00:00
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
copilot-pull-request-reviewer[bot] commented 2026-01-30 04:52:55 +00:00 (Migrated from github.com)
Review

json is imported but not used in this script. Please remove it (or use it) to avoid unused-import lint issues.


`json` is imported but not used in this script. Please remove it (or use it) to avoid unused-import lint issues. ```suggestion ```
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
copilot-pull-request-reviewer[bot] commented 2026-01-30 04:52:51 +00:00 (Migrated from github.com)
Review

Tuple is imported from typing but not used in this script. Please remove it to avoid unused-import lint issues.

from typing import List, Optional
`Tuple` is imported from `typing` but not used in this script. Please remove it to avoid unused-import lint issues. ```suggestion from typing import List, Optional ```
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
copilot-pull-request-reviewer[bot] commented 2026-01-30 04:52:55 +00:00 (Migrated from github.com)
Review

os and datetime are imported but unused. Please remove them to keep the script minimal and avoid unused-import lint errors.

import re
import sys
`os` and `datetime` are imported but unused. Please remove them to keep the script minimal and avoid unused-import lint errors. ```suggestion import re import sys ```
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
copilot-pull-request-reviewer[bot] commented 2026-01-30 04:52:54 +00:00 (Migrated from github.com)
Review

os is imported but not used anywhere in this script. Please remove it to avoid unused-import lint issues.


`os` is imported but not used anywhere in this script. Please remove it to avoid unused-import lint issues. ```suggestion ```
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
copilot-pull-request-reviewer[bot] commented 2026-01-30 04:52:54 +00:00 (Migrated from github.com)
Review

os is imported but not used in this script. Please remove it to avoid unused-import lint issues.


`os` is imported but not used in this script. Please remove it to avoid unused-import lint issues. ```suggestion ```
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
copilot-pull-request-reviewer[bot] commented 2026-01-30 04:52:54 +00:00 (Migrated from github.com)
Review

asdict and Tuple are imported but not used. Please remove them (or update the implementation to use them) to keep the module lint-clean.

`asdict` and `Tuple` are imported but not used. Please remove them (or update the implementation to use them) to keep the module lint-clean.
# 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
copilot-pull-request-reviewer[bot] commented 2026-01-30 04:52:53 +00:00 (Migrated from github.com)
Review

os is imported but not used anywhere in this file. Please remove it to avoid unused-import lint issues.


`os` is imported but not used anywhere in this file. Please remove it to avoid unused-import lint issues. ```suggestion ```
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
copilot-pull-request-reviewer[bot] commented 2026-01-30 04:52:52 +00:00 (Migrated from github.com)
Review

Tuple is imported from typing but not used in this module. Please remove it to keep the imports clean.

from typing import List, Dict, Optional, Any
`Tuple` is imported from `typing` but not used in this module. Please remove it to keep the imports clean. ```suggestion from typing import List, Dict, Optional, Any ```
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