#!/usr/pkg/bin/php83
<?php

require_once dirname(__FILE__).'/../__init_script__.php';

$synopsis = <<<EOT
**save_lint.php**
    Discover lint problems and save them to database so that they can
    be displayed in Diffusion.

EOT;

$args = id(new PhutilArgumentParser($argv))
  ->setTagline(pht('save lint errors to database'))
  ->setSynopsis($synopsis)
  ->parseStandardArguments()
  ->parse(array(
    array(
      'name' => 'all',
      'help' => pht(
        'Discover problems in the whole repository instead of just changes '.
        'since the last run.'),
    ),
    array(
      'name' => 'arc',
      'param' => 'path',
      'default' => 'arc',
      'help' => pht('Path to Arcanist executable.'),
    ),
    array(
      'name' => 'severity',
      'param' => 'string',
      'default' => ArcanistLintSeverity::SEVERITY_ADVICE,
      'help' => pht(
        'Minimum severity, one of %s constants.',
        'ArcanistLintSeverity'),
    ),
    array(
      'name' => 'chunk-size',
      'param' => 'number',
      'default' => 256,
      'help' => pht('Number of paths passed to `%s` at once.', 'arc'),
    ),
    array(
      'name' => 'blame',
      'help' => pht(
        'Assign lint errors to authors who last modified the line.'),
    ),
  ));

echo pht('Saving lint errors to database...')."\n";

$count = id(new DiffusionLintSaveRunner())
  ->setAll($args->getArg('all', false))
  ->setArc($args->getArg('arc'))
  ->setSeverity($args->getArg('severity'))
  ->setChunkSize($args->getArg('chunk-size'))
  ->setNeedsBlame($args->getArg('blame'))
  ->run('.');

echo "\n".pht('Processed %d files.', $count)."\n";
