use 5.016;
use strict;
use warnings;

use ExtUtils::MakeMaker;

WriteMakefile(
  VERSION_FROM => 'lib/Kalamar.pm',
  ABSTRACT     => 'Mojolicious-based Frontend for KorAP',
  NAME         => 'Kalamar',
  AUTHOR       => 'Nils Diewald',
  BUILD_REQUIRES => {
    'Test::More' => 0,
    'Test::Mojo::Session' => 1.06,
    'Test::Mojo::WithRoles' => 0.02,
  },
  LICENSE      => 'freebsd',
  PREREQ_PM => {
    'Mojolicious' => '8.42',
    'Mojolicious::Plugin::TagHelpers::Pagination' => 0.07,
    'Mojolicious::Plugin::TagHelpers::MailToChiffre' => 0.10,
    'Mojolicious::Plugin::ClosedRedirect' => 0.15,
    'Mojolicious::Plugin::Notifications' => 1.05,
    'Mojolicious::Plugin::MailException' => 0.20,
    'Mojolicious::Plugin::Util::RandomString' => 0.08,
    'Mojolicious::Plugin::CHI' => 0.20,
    'Mojolicious::Plugin::ClientIP' => 0.01,
    'Cache::FastMmap' => 1.47,
    'Data::Serializer' => 0.60,
    'Mojo::JWT' => 0.05,

    # Required for Data::Serializer at the moment
    'JSON' => 4.02,

    # Required for bundled plugins
    'Mojolicious::Plugin::Piwik' => 0.28,

    # Currently on GitHub only (github.com/akron)
    'Mojolicious::Plugin::Localize' => 0.20,
    'Mojolicious::Plugin::TagHelpers::ContentBlock' => 0.08,
  },

  META_MERGE   => {
    'meta-spec' => { version => 2 },
    requires  => { perl => '5.010001' },
    resources => {
      license     => 'https://opensource.org/licenses/BSD-2-Clause',
      repository  => {
        type => 'git',
        url => 'https://github.com/KorAP/Kalamar.git',
        web => 'https://github.com/KorAP/Kalamar',
      },
      bugtracker => {
        web => 'https://github.com/KorAP/Kalamar/issues'
      }
    }
  },

  test => {
    TESTS => 't/*.t'
  }
);
