[Picture-in-Picture Web API] Implement HTMLVideoElement.requestPictureInPicture(...
[WebKit-https.git] / Source / WebInspectorUI / Scripts / fix-worker-imports-for-optimized-builds.pl
1 #!/usr/bin/env perl
2
3 use strict;
4 use warnings;
5 use Getopt::Long;
6 use File::Copy qw/move/;
7 use File::Temp qw/tempfile/;
8 use File::Spec;
9
10 sub fixWorkerImportsInFile($$);
11 sub fixWorkerImportsInDirectory($);
12
13 our $inputDirectory;
14
15 GetOptions('input-directory=s' => \$inputDirectory);
16
17 if (defined $inputDirectory) {
18     fixWorkerImportsInDirectory($inputDirectory);
19     exit;
20 }
21
22 print "Usage: $0 --input-directory <path>\n";
23 exit;
24
25 sub fixWorkerImportsInFile($$)
26 {
27     my $inputScriptFilename = shift;
28     my $outputScriptFilename = shift;
29
30     open IN, $inputScriptFilename or die "Couldn't open $inputScriptFilename: $!";
31     my ($out, $tempFilename) = tempfile(UNLINK => 0) or die;
32
33     my $previousLine = "";
34     while (<IN>) {
35         s|/External/Esprima/esprima.js|/Esprima.js|;
36         print $out $_;
37
38         # Error if there is an "External/" path that we did not rewrite.
39         if ($_ =~ /External\//) {
40             my $sanitizedPath = $inputScriptFilename;
41             $sanitizedPath =~ s/^.*?Workers/Workers/;
42             print "ERROR: $sanitizedPath: Unhandled External importScript in Worker script on line $.: $_";
43             exit 1;
44         }
45     }
46
47     close $out;
48     close IN;
49
50     move $tempFilename, $outputScriptFilename or die "$!";
51 }
52
53 sub fixWorkerImportsInDirectory($)
54 {
55     my $inputDirectory = shift;
56
57     opendir(DIR, $inputDirectory) || die "$!";
58     my @files = grep { !/^\.{1,2}$/ } readdir (DIR);
59     closedir(DIR);
60
61     foreach my $file (@files) {
62         next if $file eq '.' or $file eq '..';
63         my $path = File::Spec->catdir($inputDirectory, $file);
64         if (-d $path) {
65             fixWorkerImportsInDirectory($path);
66         } elsif ($file =~ /\.js$/) {
67             fixWorkerImportsInFile($path, $path);
68         }
69     }
70 }