38a975ee57
Branch Policy Check / Verify merge target (pull_request) Successful in 0s
Remove VERSION: XX.YY.ZZ lines from 213 file headers across PHP, TypeScript, TF definitions, workflows, CSS, markdown, and XML files. Version is tracked in composer.json and CHANGELOG.md only. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
332 lines
13 KiB
Terraform
332 lines
13 KiB
Terraform
/**
|
|
* Dolibarr Platform Structure Definition
|
|
* Standard repository structure for the full Dolibarr ERP/CRM installation
|
|
*
|
|
* This is distinct from dolibarr — it defines the ENTIRE Dolibarr platform
|
|
* (htdocs/, not src/). It does NOT have a module descriptor, numero, or
|
|
* publish-to-mokodolimods workflow.
|
|
*
|
|
* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
* Schema Version: 1.0
|
|
*/
|
|
|
|
locals {
|
|
repository_structure = {
|
|
metadata = {
|
|
name = "Dolibarr Platform"
|
|
description = "Full Dolibarr ERP/CRM installation — htdocs/ root, not a module"
|
|
repository_type = "platform"
|
|
platform = "dolibarr"
|
|
last_updated = "2026-03-31T00:00:00Z"
|
|
maintainer = "Moko Consulting"
|
|
version = "05.00.00"
|
|
schema_version = "1.0"
|
|
}
|
|
|
|
root_files = [
|
|
{
|
|
name = "README.md"
|
|
extension = "md"
|
|
description = "Developer-focused documentation"
|
|
required = true
|
|
always_overwrite = false
|
|
protected = true
|
|
audience = "developer"
|
|
},
|
|
{
|
|
name = "CONTRIBUTING.md"
|
|
extension = "md"
|
|
description = "Contribution guidelines"
|
|
required = true
|
|
always_overwrite = true
|
|
template = "templates/docs/required/template-CONTRIBUTING.md"
|
|
audience = "contributor"
|
|
},
|
|
{
|
|
name = "LICENSE"
|
|
extension = ""
|
|
description = "GPL-3.0-or-later license file"
|
|
required = true
|
|
always_overwrite = true
|
|
template = "templates/docs/required/LICENSE"
|
|
},
|
|
{
|
|
name = "composer.json"
|
|
extension = "json"
|
|
description = "Composer package definition"
|
|
required = true
|
|
always_overwrite = false
|
|
},
|
|
{
|
|
name = "phpstan.neon"
|
|
extension = "neon"
|
|
description = "PHPStan static analysis configuration"
|
|
required = true
|
|
always_overwrite = true
|
|
template = "templates/configs/phpstan.neon"
|
|
},
|
|
{
|
|
name = "Makefile"
|
|
extension = ""
|
|
description = "Build automation targets"
|
|
required = true
|
|
always_overwrite = true
|
|
template = "templates/configs/Makefile"
|
|
},
|
|
{
|
|
name = "src/.ftpignore"
|
|
extension = ""
|
|
description = "Files excluded from SFTP deployment"
|
|
required = true
|
|
always_overwrite = true
|
|
template = "templates/configs/ftp_ignore"
|
|
},
|
|
{
|
|
name = ".gitea/.mokostandards"
|
|
extension = "xml"
|
|
description = "MokoStandards XML manifest — generated programmatically by RepositorySynchronizer::migrateMokoStandards()"
|
|
required = true
|
|
always_overwrite = false
|
|
template = "managed-by-sync"
|
|
source_type = "programmatic"
|
|
},
|
|
{
|
|
name = "renovate.json"
|
|
extension = "json"
|
|
description = "Renovate dependency management configuration"
|
|
required = true
|
|
always_overwrite = false
|
|
audience = "developer"
|
|
template = "templates/configs/renovate.json"
|
|
}
|
|
]
|
|
|
|
directories = [
|
|
{
|
|
name = "htdocs"
|
|
path = "htdocs"
|
|
description = "Dolibarr web root — entire platform"
|
|
required = true
|
|
purpose = "Contains the full Dolibarr installation including core, custom modules, and themes"
|
|
},
|
|
{
|
|
name = "docs"
|
|
path = "docs"
|
|
description = "Developer and technical documentation"
|
|
required = true
|
|
purpose = "Contains technical documentation"
|
|
files = [
|
|
{
|
|
name = "update-server.md"
|
|
extension = "md"
|
|
description = "Dolibarr update server (update.txt) documentation"
|
|
required = true
|
|
always_overwrite = true
|
|
template = "templates/docs/required/template-update-server-dolibarr.md"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
name = ".github"
|
|
path = ".github"
|
|
description = "GitHub configuration"
|
|
required = true
|
|
purpose = "Contains GitHub Actions workflows and configuration"
|
|
subdirectories = [
|
|
{
|
|
name = "workflows"
|
|
path = ".github/workflows"
|
|
description = "GitHub Actions workflows"
|
|
requirement_status = "required"
|
|
files = [
|
|
{
|
|
name = "codeql-analysis.yml"
|
|
extension = "yml"
|
|
description = "CodeQL security analysis workflow"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/generic/codeql-analysis.yml.template"
|
|
},
|
|
{
|
|
name = "standards-compliance.yml"
|
|
extension = "yml"
|
|
description = "MokoStandards compliance validation"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = ".github/workflows/standards-compliance.yml"
|
|
},
|
|
{
|
|
name = "enterprise-firewall-setup.yml"
|
|
extension = "yml"
|
|
description = "Enterprise firewall configuration"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/shared/enterprise-firewall-setup.yml.template"
|
|
},
|
|
{
|
|
name = "deploy-dev.yml"
|
|
extension = "yml"
|
|
description = "SFTP deployment to dev server (htdocs/)"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/shared/deploy-dev.yml.template"
|
|
},
|
|
{
|
|
name = "deploy-demo.yml"
|
|
extension = "yml"
|
|
description = "SFTP deployment to demo server"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/shared/deploy-demo.yml.template"
|
|
},
|
|
{
|
|
name = "deploy-rs.yml"
|
|
extension = "yml"
|
|
description = "SFTP deployment to release staging server"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/shared/deploy-rs.yml.template"
|
|
},
|
|
{
|
|
name = "sync-version-on-merge.yml"
|
|
extension = "yml"
|
|
description = "Auto-bump patch version on merge"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/shared/sync-version-on-merge.yml.template"
|
|
},
|
|
{
|
|
name = "auto-release.yml"
|
|
extension = "yml"
|
|
description = "Auto-create GitHub Release on minor version"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/shared/auto-release.yml.template"
|
|
},
|
|
{
|
|
name = "repository-cleanup.yml"
|
|
extension = "yml"
|
|
description = "Scheduled cleanup: retired workflows, stale branches"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/shared/repository-cleanup.yml.template"
|
|
},
|
|
{
|
|
name = "auto-dev-issue.yml"
|
|
extension = "yml"
|
|
description = "Auto-create tracking issue on dev/rc branch creation"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/shared/auto-dev-issue.yml.template"
|
|
},
|
|
{
|
|
name = "repo_health.yml"
|
|
extension = "yml"
|
|
description = "Dolibarr platform health checks (shared guardrails, no module-specific checks)"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "templates/workflows/dolibarr/repo_health.yml.template"
|
|
},
|
|
{
|
|
name = "cascade-dev.yml"
|
|
extension = "yml"
|
|
description = "Forward-merge main to all open branches (dev, rc/*, beta/*, alpha/*) on push to main"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "workflows/cascade-dev.yml"
|
|
},
|
|
{
|
|
name = "gitleaks.yml"
|
|
extension = "yml"
|
|
description = "Secret scanning — detect leaked credentials, API keys, and tokens using Gitleaks"
|
|
requirement_status = "required"
|
|
always_overwrite = true
|
|
template = "workflows/gitleaks.yml"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
name = "ISSUE_TEMPLATE"
|
|
path = ".github/ISSUE_TEMPLATE"
|
|
description = "GitHub issue templates"
|
|
requirement_status = "required"
|
|
files = [
|
|
{
|
|
name = "config.yml"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/config.yml"
|
|
},
|
|
{
|
|
name = "adr.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/adr.md"
|
|
},
|
|
{
|
|
name = "bug_report.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/bug_report.md"
|
|
},
|
|
{
|
|
name = "documentation.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/documentation.md"
|
|
},
|
|
{
|
|
name = "enterprise_support.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/enterprise_support.md"
|
|
},
|
|
{
|
|
name = "feature_request.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/feature_request.md"
|
|
},
|
|
{
|
|
name = "firewall-request.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/firewall-request.md"
|
|
},
|
|
{
|
|
name = "question.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/question.md"
|
|
},
|
|
{
|
|
name = "request-license.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/request-license.md"
|
|
},
|
|
{
|
|
name = "rfc.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/rfc.md"
|
|
},
|
|
{
|
|
name = "security.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/security.md"
|
|
},
|
|
{
|
|
name = "dolibarr_issue.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/dolibarr_issue.md"
|
|
},
|
|
{
|
|
name = "dolibarr_module_id_request.md"
|
|
always_overwrite = true
|
|
template = "templates/github/ISSUE_TEMPLATE/dolibarr_module_id_request.md"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
output "crm_platform_structure" {
|
|
description = "Dolibarr Platform repository structure definition"
|
|
value = local.repository_structure
|
|
}
|