bc_tools/update_knownissues.pl
author maciejs
Mon, 12 Apr 2010 11:55:43 +0100
changeset 234 74890d706f0c
child 243 4ee1b1d72018
permissions -rw-r--r--
Added tools for filtering bc reports and updating known issues file
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
234
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     1
#!/usr/bin/perl
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     2
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     3
# Copyright (c) 2009 Symbian Foundation Ltd
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     4
# This component and the accompanying materials are made available
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     6
# which accompanies this distribution, and is available
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     8
#
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     9
# Initial Contributors:
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    10
# Symbian Foundation Ltd - initial contribution.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    11
#	Maciej Seroka, maciejs@symbian.org
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    12
#
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    13
# Description:
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    14
#   This is a tool for adding BC issues to Known Issues list.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    15
#
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    16
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    17
use strict;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    18
use Getopt::Long;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    19
use XML::Simple;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    20
use Tie::File;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    21
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    22
my $hdr_report;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    23
my $lib_report;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    24
my $ki_file;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    25
my $current_report;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    26
my $header_num;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    27
my $n;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    28
my $m;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    29
my $file_name;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    30
my $check_sum;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    31
my $comment = "Issue closed as invalid by the PkO (Not a BC break)."; # This is a default comment that will be added to Known Issues list with each header file.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    32
my $header_found;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    33
my $status;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    34
my $line;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    35
my @lines;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    36
my $help;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    37
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    38
sub usage($);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    39
sub help();
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    40
sub usage_error();
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    41
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    42
my %optmap = (  'headers-report' => \$hdr_report,
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    43
			    'libraries-report' => \$lib_report,
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    44
			    'knownissues-file' => \$ki_file,
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    45
				'help' => \$help);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    46
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    47
GetOptions(\%optmap,
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    48
          'headers-report=s',
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    49
          'libraries-report=s',
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    50
          'knownissues-file=s',
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    51
		  'help!') 
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    52
          or usage_error();
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    53
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    54
if ($help) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    55
	help();
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    56
}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    57
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    58
# --headers-report is mandatory.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    59
usage_error(), unless (defined($hdr_report) || defined($lib_report));
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    60
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    61
# --knownissues-file is mandatory.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    62
usage_error(), unless (defined($ki_file));
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    63
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    64
# Open Known Isses file.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    65
tie @lines, 'Tie::File', $ki_file or die ("Cannot tie file \"$ki_file\". $!\n");
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    66
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    67
if ($hdr_report) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    68
	# Parse the input XML into hashrefs.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    69
	print "Parsing " . $hdr_report . "... ";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    70
	$current_report = XMLin("./$hdr_report", keeproot => 1,
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    71
		forcearray => [ 'header', 'baselineversion', 'currentversion', 'timestamp', 'day', 'month', 'year', 'hour', 'minute', 'second', #
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    72
		'haversion', 'formatversion', 'cmdlineparms', 'parm', 'pname', 'pvalue', 'knownissuesversion', 'os', 'version', 'buildweek', 'issuelist',#
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    73
		'headerfile', 'filename', 'comparefilename', 'status', 'comment', 'issue', 'checksum', 'shortname', 'issueid', 'typeid', 'identityid', #
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    74
		'identitydescription', 'typestring', 'cause', 'documentation', 'ignoreinformation', 'linenumber', 'severity', 'scseverity'], keyattr => [] );
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    75
	print "complete \n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    76
	# Get number of header files.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    77
	my $header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    78
	print "Number of header files in the report: $header_num \n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    79
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    80
	$n = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    81
	while ($n < $header_num) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    82
		$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    83
		$check_sum = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'checksum'}->[0];
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    84
		$m = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    85
		$header_found = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    86
		$status = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    87
		foreach (@lines) { 
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    88
			if (@lines[$m] =~ "\"$file_name\"") { # Mark header file as present in the Known Issues file.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    89
				$header_found = 1;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    90
				$line = $m;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    91
				last;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    92
			}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    93
			$m++;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    94
		}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    95
		if ($header_found) { # Ensure there is no duplicate in the Known Issues file.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    96
			$m = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    97
			foreach (@lines) { 
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    98
				if (@lines[$m] =~ "checksum=\"$check_sum\"") { 
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    99
					$status = 1; # Means OK issue (already known).
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   100
					print "Duplicate found ($check_sum) for header file: $file_name\n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   101
					last;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   102
				}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   103
				$m++;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   104
			}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   105
		}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   106
		if (($header_found) && (!($status))) { # Insert new version of header file.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   107
			splice @lines, $line+1, 0, "    <version checksum=\"$check_sum\">";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   108
			splice @lines, $line+2, 0, "      <status>OK<\/status>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   109
			splice @lines, $line+3, 0, "      <comment>$comment<\/comment>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   110
			splice @lines, $line+4, 0, "    <\/version>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   111
			print "New version ($check_sum) of header file: $file_name added to Known Issues list\n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   112
		}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   113
		if (!($header_found)) { # Insert new header file.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   114
			# Find the first occurrence of <headerfile>. - ASSUMPTION: at least one entry exists.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   115
			$m = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   116
			foreach (@lines) { 
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   117
				if (@lines[$m] =~ "<headerfile") { 
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   118
					last; }
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   119
				else {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   120
					$m++;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   121
				}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   122
			}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   123
			splice @lines, $m, 0, "  <headerfile name=\"$file_name\">";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   124
			splice @lines, $m+1, 0, "    <version checksum=\"$check_sum\">";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   125
			splice @lines, $m+2, 0, "      <status>OK<\/status>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   126
			splice @lines, $m+3, 0, "      <comment>$comment<\/comment>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   127
			splice @lines, $m+4, 0, "    <\/version>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   128
			splice @lines, $m+5, 0, "  <\/headerfile>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   129
			print "Header file: $file_name ($check_sum) added to Known Issues list\n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   130
		}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   131
		$n++;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   132
	}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   133
	print "OK\n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   134
}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   135
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   136
if ($lib_report) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   137
	print "Warning: Automatic update of the Known Issues file based on a libraries report is not available in the current version of the script.\n"
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   138
}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   139
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   140
untie @lines;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   141
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   142
exit 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   143
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   144
sub usage($)
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   145
{
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   146
    my $error = shift;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   147
    my $fh = $error == 0 ? *STDOUT : *STDERR;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   148
    print $fh "update_knownissues.pl\n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   149
            "Specify the headers report or\/and libraries report and the known issues file\n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   150
            "synopsis:\n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   151
            "  update_knownissues.pl --help\n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   152
            "  update_knownissues.pl [--headers-report=FILENAME1] [--libraries-report=FILENAME2] [--knownissues-file=FILENAME3] \n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   153
            "options:\n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   154
            "  --help                        Display this help and exit\n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   155
            "  --headers-report=FILENAME1    FILENAME1 is the name of the filtered headers (sub-)report.\n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   156
            "  --libraries-report=FILENAME2  FILENAME2 is the name of the filtered libraries report. This option is not implemented yet.\n" .
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   157
            "  --knownissues-file=FILENAME3  FILENAME3 is the name of the known issues file which will be updated.\n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   158
    exit $error;            
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   159
}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   160
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   161
sub help()
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   162
{
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   163
    usage(0);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   164
}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   165
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   166
sub usage_error()
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   167
{
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   168
    usage(1);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   169
}