• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/perl
2
3# Copyright (C) 2007 Apple Inc.  All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# 1.  Redistributions of source code must retain the above copyright
10#     notice, this list of conditions and the following disclaimer.
11# 2.  Redistributions in binary form must reproduce the above copyright
12#     notice, this list of conditions and the following disclaimer in the
13#     documentation and/or other materials provided with the distribution.
14# 3.  Neither the name of Apple Inc. ("Apple") nor the names of
15#     its contributors may be used to endorse or promote products derived
16#     from this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29# This script updates WebKitTools/iExploder/htdocs/cssproperties.in based on
30# WebCore/css/CSSPropertyNames.in.
31
32use warnings;
33use strict;
34
35use FindBin;
36use lib $FindBin::Bin;
37use webkitdirs;
38
39use File::Spec;
40
41sub generateSectionFromCSSPropertyNamesFile();
42sub readiExploderFile();
43sub svnRevision($);
44sub writeiExploderFile();
45
46my $iExploderFile = File::Spec->catfile(sourceDir(), split("/", "WebKitTools/iExploder/htdocs/cssproperties.in"));
47my $cssPropertyNamesFile = File::Spec->catfile(sourceDir(), split("/", "WebCore/css/CSSPropertyNames.in"));
48
49my @sections = readiExploderFile();
50$sections[0] = generateSectionFromCSSPropertyNamesFile();
51writeiExploderFile();
52
53print `svn stat $iExploderFile`;
54print "Successfully updated!\n";
55
56exit 0;
57
58sub generateSectionFromCSSPropertyNamesFile()
59{
60    my $revision = svnRevision($cssPropertyNamesFile);
61    my $path = File::Spec->abs2rel($cssPropertyNamesFile, sourceDir());
62    my $result = "# From WebKit svn r" . $revision . " (" . $path . ")\n";
63
64    my @properties = ();
65
66    open(IN, $cssPropertyNamesFile) || die "$!";
67    while (my $l = <IN>) {
68        chomp $l;
69        next if $l =~ m/^\s*#/ || $l =~ m/^\s*$/;
70        push(@properties, $l);
71    }
72    close(IN);
73
74    $result .= join("\n", sort { $a cmp $b } @properties) . "\n\n";
75
76    return $result;
77}
78
79sub readiExploderFile()
80{
81    my @sections = ();
82    local $/ = "\n\n";
83
84    open(IN, $iExploderFile) || die "$!";
85    @sections = <IN>;
86    close(IN);
87
88    return @sections;
89}
90
91sub svnRevision($)
92{
93    my ($file) = @_;
94    my $revision = "";
95
96    open INFO, "svn info '$file' |" or die;
97    while (<INFO>) {
98        if (/^Revision: (.+)/) {
99            $revision = $1;
100        }
101    }
102    close INFO;
103
104    return $revision ? $revision : "UNKNOWN";
105}
106
107sub writeiExploderFile()
108{
109    open(OUT, "> $iExploderFile") || die "$!";
110    print OUT join("", @sections);
111    close(OUT);
112}
113