#!/usr/bin/env perl

use strict;
use warnings;
use lib 'lib';

use Cpanel::JSON::XS;

use Gherkin::Parser;
use Gherkin::Pickles::Compiler;

package App::GherkinGeneratePickles;
$App::GherkinGeneratePickles::VERSION = '17.0.2';
sub run {
    my ( $class, $fh, @file_list ) = @_;
    my $json = Cpanel::JSON::XS->new->utf8->canonical;

    my $next_id = 0;
    my $id_generator =
        sub {
            my $id = $next_id++;
            return "$id";
    };
    my $parser = Gherkin::Parser->new(
        Gherkin::AstBuilder->new($id_generator)
        );

    for my $file (@file_list) {
        my $pickles = Gherkin::Pickles::Compiler->compile(
            $parser->parse($file, $file), $id_generator
        );
        for my $pickle (@$pickles) {
            print $fh $json->encode($pickle);
            print "\n"
        }
    }
}

__PACKAGE__->run(\*STDOUT, @ARGV) unless caller;
