Sha256: 2f177a3328593b27c697b05b3f0eb3b109fcde4bf773d4e395763fa5f6ab9a67

Contents?: true

Size: 1.39 KB

Versions: 12

Compression:

Stored size: 1.39 KB

Contents

#!/usr/bin/env perl6
use v6;
use Template::Mustache;
use YAMLish;

my $base-dir = $?FILE.IO.resolve.parent.parent;
my @exercises;

if @*ARGS {
  if @*ARGS[0] eq '--all' {
    push @exercises, .basename for $base-dir.child('exercises').dir;
  } else {
    @exercises = @*ARGS;
  }
} else {
  say 'No args given; working in current directory.';
  if 'example.yaml'.IO ~~ :f {
    push @exercises, $*CWD.IO.basename;
  } else {
    say 'example.yaml not found; exiting.';
    exit;
  }
}

for @exercises -> $exercise {
  my $exercise-dir = $base-dir.child("exercises/$exercise");
  if (my $yaml = $exercise-dir.child('example.yaml')) !~~ :f {
    say "No example.yaml found for $exercise.";
    next;
  };
  print "Generating $exercise... ";

  my %data = load-yaml $yaml.slurp;
  $_=.chomp when Str for @(%data.values);

  my $cdata = $base-dir.child("x-common/exercises/$exercise/canonical-data.json");
  %data<cdata> = :json($cdata.slurp) if $cdata ~~ :f;

  create-file "$exercise.t", 'test';

  %data<module_file> = %data<example>;
  create-file |<Example.pm6 module>;

  %data<module_file> = %data<stub>;
  create-file "{%data<exercise>}.pm6", 'module';

  say 'Generated.';

  sub create-file ($filename, $template) {
    spurt (my $file = $exercise-dir.child($filename)),
      Template::Mustache.render($base-dir.child("templates/$template.mustache").slurp, %data);
    $file.chmod(0o755) if $template ~~ 'test';
  }
}

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
trackler-2.1.0.48 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.47 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.46 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.45 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.44 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.43 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.42 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.41 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.40 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.39 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.38 tracks/perl6/bin/exercise-gen.pl6
trackler-2.1.0.37 tracks/perl6/bin/exercise-gen.pl6