; --- Project details
name             = Zapp
author           = Doug Bell <preaction@cpan.org>
license          = Perl_5
copyright_holder = Doug Bell
copyright_year   = 2021

[Authority]
authority  = cpan:PREACTION
do_munging = 0

[GithubMeta]
;homepage = http://preaction.me/project
issues = 1
[MetaResources]
IRC                     = irc://irc.libera.chat/#mojo-yancy

; --- Module management
[@Filter]
-bundle = @Basic
; GatherDir must be configured separately
-remove = GatherDir
-remove = Readme

[Readme::Brief]
[ReadmeAnyFromPod]
location = root
filename = README.mkdn
type = markdown

[PodWeaver]
replacer = replace_with_comment
post_code_replacer = replace_with_nothing
[RewriteVersion]
[CPANFile]
[MetaJSON]
[MetaProvides::Package]
[MetaNoIndex]
directory = t
directory = xt
directory = inc
directory = share
directory = eg
directory = examples
[Git::Contributors]
; authordep Pod::Weaver::Section::Contributors
[Test::ReportPrereqs]
[Test::Compile]

; --- Repository management
[Git::GatherDir]
include_dotfiles = 1
prune_directory = ^eg
; Exclude dotfiles in the root directory
exclude_match = ^\.[^/]+$
; Exclude generated root content, which is included by the various plugins
; Without this, we get an error about duplicate content
exclude_filename = cpanfile
exclude_filename = META.json
exclude_filename = LICENSE
exclude_filename = README
exclude_filename = README.mkdn
exclude_filename = Makefile.PL

[CopyFilesFromBuild]
; Copy generated content to the repository root so users without Dist::Zilla
; can use it
copy = cpanfile
copy = META.json
copy = LICENSE
copy = Makefile.PL

[GitHubREADME::Badge]
badges = travis
badges = coveralls

; --- Git management
[CheckChangesHasContent]
changelog = CHANGES
[Git::Check]
; Automatically commit these files during release
allow_dirty_match = README.*
allow_dirty_match = .*[.]PL
allow_dirty = cpanfile
allow_dirty = LICENSE
allow_dirty = CHANGES
allow_dirty = META.json

[Git::Commit / Commit_Dirty_Files]
; Automatically commit with release version and changelog
changelog = CHANGES
commit_msg = release v%v%n%n%c
allow_dirty_match = README.*
allow_dirty_match = .*[.]PL
allow_dirty = cpanfile
allow_dirty = LICENSE
allow_dirty = CHANGES
allow_dirty = META.json
add_files_in = .
[Git::Tag]
changelog = CHANGES
tag_message = %N v%v - %{yyyy-MM-dd}d%n%n%c ; Tag annotations show up in github release list

; NextRelease acts *during* pre-release to write $VERSION and
; timestamp to Changes and  *after* release to add a new 
; section, so to act at the right time after release, it must actually
; come after Commit_Dirty_Files but before Commit_Changes in the
; dist.ini.  It will still act during pre-release as usual

[NextRelease]
filename = CHANGES
[BumpVersionAfterRelease]

[Git::Commit / Commit_Changes]
commit_msg = incrementing version after release
allow_dirty = CHANGES
allow_dirty_match = ^bin/
allow_dirty_match = ^lib/.*\.pm$
allow_dirty_match = .*[.]PL
[Git::Push]

[Run::AfterBuild / build docker images]
run = [ "$CI" != "true" ] && docker build --pull --tag preaction/zapp:latest "%d"
fatal_errors = 0

[Run::Test / test docker images]
run = [ "$CI" != "true" ] && docker run --rm -v "$PWD":/app preaction/zapp:latest prove -r /app/t

[Run::AfterRelease / release docker images]
run = docker build --pull --tag preaction/zapp:latest --tag preaction/zapp:v%v "%d"
run = docker push preaction/zapp:latest
run = docker push preaction/zapp:v%v

[Run::AfterRelease / clean up release dirs]
run = rm -rf %a %d

; --- Project-specific directives

[Prereqs]
perl = 5.028
Mojolicious = 8.65
Yancy = 1.074
Minion = 10.14
Mojo::SQLite = 0
Minion::Backend::SQLite = 5.0.3

;-- Core prereqs
Cwd = 0
Digest = 0
IPC::Open3 = 0
List::Util = 0
Scalar::Util = 0
Symbol = 0
Text::Balanced = 0
Test::More = 0
Time::Piece = 0

;-- Common prereqs with minimum version requirements
;Path::Tiny = 0.072 ; Fixes issues with File::Path
;List::Util = 1.29 ; First version with pair* functions
;Getopt::Long = 2.36 ; First version with GetOptionsFromArray
;Import::Base = 0.012 ; Fixed using subs in imports
;Log::Any = 1.045 ; Returns message and faster

[Prereqs / TestRequires]
;Test::More = 1.001005 ; First version that allows args to subtests
;Test::Deep = 0
;Test::Differences = 0
;Test::Fatal = 0