#!/usr/bin/env php * * This file is part of a Moko Consulting project. * * SPDX-License-Identifier: GPL-3.0-or-later * * FILE INFORMATION * DEFGROUP: MokoStandards.Scripts.Validate * INGROUP: MokoStandards * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform * PATH: /validate/check_dolibarr_module.php * BRIEF: Validates Dolibarr module directory structure */ declare(strict_types=1); require_once __DIR__ . '/../../vendor/autoload.php'; use MokoEnterprise\CliFramework; /** * Validates the required directory structure of a Dolibarr module repository. */ class CheckDolibarrModule extends CliFramework { /** * Configure available arguments. */ protected function configure(): void { $this->setDescription('Validates Dolibarr module directory structure'); $this->addArgument('--path', 'Repository path to check', '.'); } /** * Run the Dolibarr module validation. * * @return int Exit code: 0 on pass, 1 on failure. */ protected function run(): int { $path = $this->getArgument('--path'); $passed = 0; $failed = 0; $this->section('Checking directory structure'); if (!is_dir($path . '/src')) { $this->status(false, 'src/ directory exists'); $failed++; } else { $this->status(true, 'src/ directory exists'); $passed++; } if (!is_dir($path . '/src/core/modules')) { $this->status(false, 'src/core/modules/ directory exists'); $failed++; } else { $this->status(true, 'src/core/modules/ directory exists'); $passed++; } if (!is_dir($path . '/src/langs')) { $this->warning('Missing suggested directory: src/langs/'); } else { $this->status(true, 'src/langs/ directory exists'); $passed++; } $this->section('Checking module descriptor'); $descriptors = glob($path . '/src/core/modules/mod*.class.php') ?: []; if (empty($descriptors)) { $this->status(false, 'Module descriptor found (mod*.class.php)'); $failed++; } else { $this->status(true, 'Module descriptor found', basename($descriptors[0])); $passed++; } $this->printSummary($passed, $failed, $this->elapsed()); if ($failed > 0) { return 1; } return 0; } } $script = new CheckDolibarrModule('check_dolibarr_module', 'Validates Dolibarr module directory structure'); exit($script->execute());