#!/usr/bin/perl

use strict;
use warnings;

our $gcov_file = $ARGV[0] or undef;

open my $g, '<', $gcov_file
    or die("Unable to open '$gcov_file': $!");

my ($actual, $covered, $uncovered, $percent) = (0, 0, 0, 0);

while (<$g>) {
    my $report_line = $_;

    chomp($report_line);

    $actual += 1;
    $actual -= 1 if $report_line =~ / -:/;

    $uncovered += 1 if $report_line =~ /#####:/;
}

close($g);

$covered = $actual - $uncovered;
$percent = int(($covered * 100) / $actual);

$gcov_file =~ s/^\.\///g;
$gcov_file =~ s/\.gcov$//g;

my $cover_file    = "$gcov_file:";
my $cover_literal = "$covered / $actual";
my $cover_percent = "$percent%";

format ReportLine =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>>>>>>  @>>>>>
$cover_file,                                $cover_literal, $cover_percent
.

$~ = 'ReportLine';
write;

0;