#!/usr/bin/env php * * This file is part of a Moko Consulting project. * * SPDX-License-Identifier: GPL-3.0-or-later * * FILE INFORMATION * DEFGROUP: MokoPlatform.Scripts.Fix * INGROUP: MokoPlatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform * PATH: /fix/fix_tabs.php * BRIEF: CLI script to convert tabs to spaces in tracked source files */ declare(strict_types=1); require_once __DIR__ . '/../vendor/autoload.php'; require_once __DIR__ . '/../lib/Enterprise/CliFramework.php'; use MokoEnterprise\CliFramework; use MokoEnterprise\FileFixUtility; class FixTabs extends CliFramework { protected function configure(): void { $this->setDescription('Convert tabs to spaces in tracked source files'); $this->addArgument('--path', 'Repository root (default: current directory)', '.'); $this->addArgument('--type', 'File type: yaml, python, shell, all', 'all'); } protected function run(): int { $path = (string) $this->getArgument('--path'); $fileType = (string) $this->getArgument('--type'); try { $files = FileFixUtility::fixTabs($path, $fileType, $this->dryRun); } catch (\InvalidArgumentException $e) { $this->log('ERROR', $e->getMessage()); return self::EXIT_USAGE; } foreach ($files as $f) { $this->status(true, "Fixed: {$f}"); } $label = $this->dryRun ? 'Would fix' : 'Fixed'; $this->log("{$label} " . count($files) . ' file(s)'); return self::EXIT_SUCCESS; } } $app = new FixTabs(); exit($app->execute());