1#!/usr/bin/perl -w 2 3use strict; 4use Getopt::Long; 5use File::Copy qw/move/; 6use File::Temp qw/tempfile/; 7 8our $inputScriptFilename; 9our $outputScriptFilename; 10 11GetOptions('input-script=s' => \$inputScriptFilename, 12 'output-script=s' => \$outputScriptFilename); 13 14unless (defined $inputScriptFilename and defined $outputScriptFilename) { 15 print "Usage: $0 --input-script <path> --output-script <path>\n"; 16 exit; 17} 18 19open IN, $inputScriptFilename or die "Couldn't open $inputScriptFilename: $!"; 20our ($out, $tempFilename) = tempfile(UNLINK => 0) or die; 21 22our $previousLine = ""; 23while (<IN>) { 24 # Warn about console.assert in control flow statement without braces. Can change logic when stripped. 25 if (/console\.assert/) { 26 if ($previousLine =~ /^\s*(for|if|else|while|do)\b/ && $previousLine !~ /\{\s*$/) { 27 print "WARNING: console.assert inside control flow statement without braces on line: $.: $_"; 28 } 29 } 30 31 s/\s*console\.assert\(.*\);\s*//g; 32 print $out $_; 33 $previousLine = $_ if $_ !~ /^\s*$/; 34 35 # If console.assert is still on the line, either we missed a semicolon or it is multi-line. These did not get stripped. 36 if ($_ =~ /\s*console\.assert\(/) { 37 if ($_ =~ /\)\s*$/) { 38 print "WARNING: console.assert missing trailing semicolon on line $.: $_" ; 39 } else { 40 print "WARNING: Multi-line console.assert on line $.: $_" ; 41 } 42 } 43} 44 45close $out; 46close IN; 47 48move $tempFilename, $outputScriptFilename or die "$!"; 49