add CONTRIBUTING.md file for github PRs
[ach-master.git] / tools / suitenames / buildsuites.pl
1 #!/usr/bin/perl -w
2 use strict;
3 use autodie;
4 use Text::CSV;
5 use Template;
6
7 my $usage = "usage: $0 template csv-file openssl-file\n";
8
9 my $template = shift;
10 my $iana_csv = shift;
11 my $openssl_txt = shift;
12
13 my $ossl_version;
14
15
16 my $iana = parse_csv($iana_csv);
17 #print Dumper($iana);
18 my $ossl = parse_openssl($openssl_txt);
19 #print Dumper($ossl);
20
21 my @merged;
22 for my $id (sort keys {map { $_ => 1 } (keys %$iana, keys %$ossl)}) {
23   push(@merged, [$id, $iana->{$id}, $ossl->{$id}]);
24 }
25
26 my $tt = Template->new();
27 $tt->process($template, {table => \@merged,
28                          openssl_version => $ossl_version,
29                          timestamp => scalar localtime time,
30                         });
31
32 sub parse_csv {
33   my $fn = shift;
34
35   my $d = {};
36
37   my $csv = Text::CSV->new({binary => 1})
38     or die "CSV open error: " . Text::CSV->error_diag();
39   open my $fh, "<:encoding(utf8)", $fn or die "$fn: $!";
40   while(my $row = $csv->getline($fh)) {
41     $row->[1] =~ /^TLS_/ or next;
42     $d->{$row->[0]} = $row->[1];
43   }
44   $d;
45 }
46 sub parse_openssl {
47   my $fn = shift;
48
49   my $d = {};
50   open(F, "<$fn");
51   while(<F>) {
52     chomp;
53     if(/^OpenSSL/) {
54       $ossl_version = $_;
55       next;
56     }
57     /^\s*([\da-fx,]+)\s*-\s*(\S+)\s/i || next;
58     $d->{$1} = $2;
59   }
60   close(F);
61   $d;
62 }