MediaWiki  master
jsparse.php
Go to the documentation of this file.
1 <?php
24 require_once __DIR__ . '/Maintenance.php';
25 
31 class JSParseHelper extends Maintenance {
32  public $errs = 0;
33 
34  public function __construct() {
35  parent::__construct();
36  $this->addDescription( 'Runs parsing/syntax checks on JavaScript files' );
37  $this->addArg( 'file(s)', 'JavaScript file to test', false );
38  }
39 
40  public function execute() {
41  if ( $this->hasArg( 0 ) ) {
42  $files = $this->mArgs;
43  } else {
44  $this->maybeHelp( true ); // @todo fixme this is a lame API :)
45  exit( 1 ); // it should exit from the above first...
46  }
47 
48  $parser = new JSParser();
49  foreach ( $files as $filename ) {
50  Wikimedia\suppressWarnings();
51  $js = file_get_contents( $filename );
52  Wikimedia\restoreWarnings();
53  if ( $js === false ) {
54  $this->output( "$filename ERROR: could not read file\n" );
55  $this->errs++;
56  continue;
57  }
58 
59  try {
60  $parser->parse( $js, $filename, 1 );
61  } catch ( Exception $e ) {
62  $this->errs++;
63  $this->output( "$filename ERROR: " . $e->getMessage() . "\n" );
64  continue;
65  }
66 
67  $this->output( "$filename OK\n" );
68  }
69 
70  if ( $this->errs > 0 ) {
71  exit( 1 );
72  }
73  }
74 }
75 
76 $maintClass = JSParseHelper::class;
77 require_once RUN_MAINTENANCE_IF_MAIN;
$maintClass
Definition: jsparse.php:76
const RUN_MAINTENANCE_IF_MAIN
Definition: Maintenance.php:39
maybeHelp( $force=false)
Maybe show the help.
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
Definition: Maintenance.php:82
Maintenance script to test JavaScript validity using JsMinPlus&#39; parser.
Definition: jsparse.php:31
hasArg( $argId=0)
Does a given argument exist?
addDescription( $text)
Set the description text.
addArg( $arg, $description, $required=true)
Add some args that are needed.
output( $out, $channel=null)
Throw some output to the user.