<?php

namespace MintyPHP\Console\Commands\Module;

final class PermissionsSyncCommand extends AbstractModuleCommand
{
    public function name(): string
    {
        return 'module:permissions-sync';
    }

    public function description(): string
    {
        return 'Sync module permissions to DB and deactivate orphaned ones';
    }

    public function execute(array $args, array $options): int
    {
        $result = $this->moduleRunner()->permissionsSync();
        fwrite(STDOUT, sprintf(
            "module-permissions-sync: created=%d updated=%d unchanged=%d deactivated=%d total=%d\n",
            $result['created'],
            $result['updated'],
            $result['unchanged'],
            $result['deactivated'],
            $result['total']
        ));

        if ($result['message'] !== 'module-permissions-sync: ok') {
            fwrite(STDOUT, $result['message'] . PHP_EOL);
        }

        return (int) $result['exit_code'];
    }
}
