setName('passwd')
            ->setDescription('Allows to change the user and/or password programmatically')
            ->addOption(
                'user',
                'u',
                InputOption::VALUE_REQUIRED,
                'The username. Use empty double quotes if you need an empty username.'
            )
            ->addOption(
                'password',
                'p',
                InputOption::VALUE_REQUIRED,
                "The password."
            )
            ->setHelp('The %command.name% command allows to change the user and/or password. Useful when running automated scripts or needing to programmatically set them without admin access.')
        ;
    }
    protected function serve()
    {
        require_once __DIR__ . '/../vendor/autoload.php';
        $grav = Grav::instance();
        $config = $grav['config'];
        $locator = $grav['locator'];
        $filename = 'config://plugins/git-sync.yaml';
        $file = YamlFile::instance($locator->findResource($filename, true, true));
        $this->options = [
            'user'       => $this->input->getOption('user'),
            'password'   => $this->input->getOption('password')
        ];
        if ($this->options['password'] !== null) {
            $this->options['password'] = Helper::encrypt($this->options['password']);
        }
        $user = $this->options['user'] !== null ? $this->options['user'] : $config->get('plugins.git-sync.user');
        $password = $this->options['password'] !== null ? $this->options['password'] : $config->get('plugins.git-sync.password');
        $config->set('plugins.git-sync.user', $user);
        $config->set('plugins.git-sync.password', $password);
        $content = $grav['config']->get('plugins.git-sync');
        $file->save($content);
        $file->free();
        $this->output->writeln('');
        $this->output->writeln('User / Password updated.');
        $this->output->writeln('');
    }
    private function console_header($readable, $cmd = '', $remote_action = false)
    {
        $this->output->writeln(
            "$readable" . ($cmd ? "($cmd)" : ''). ($remote_action ? '...' : '')
        );
    }
    private function console_log($lines, $password)
    {
        foreach ($lines as $line) {
            $this->output->writeln('  ' . Helper::preventReadablePassword($line, $password));
        }
    }
}