File Coverage

blib/lib/Stencil/Source/Awncorp/Project.pm
Criterion Covered Total %
statement 11 14 78.5
branch n/a
condition n/a
subroutine 4 5 80.0
pod 0 1 0.0
total 15 20 75.0


line stmt bran cond sub pod time code
1             package Stencil::Source::Awncorp::Project;
2              
3 2     2   44609 use 5.014;
  2         9  
4              
5 2     2   13 use strict;
  2         4  
  2         46  
6 2     2   14 use warnings;
  2         6  
  2         71  
7              
8 2     2   489 use Data::Object::Class;
  2         1029  
  2         18  
9              
10             extends 'Stencil::Source';
11              
12             our $VERSION = '0.01'; # VERSION
13              
14             sub dist {
15 0     0 0   my ($self, $name) = @_;
16              
17 0           $name =~ s/::/-/g;
18              
19 0           return $name
20             }
21              
22             1;
23              
24              
25              
26             =encoding utf8
27              
28             =head1 NAME
29              
30             Stencil::Source::Awncorp::Project
31              
32             =cut
33              
34             =head1 ABSTRACT
35              
36             Stencil Generator for Projects
37              
38             =cut
39              
40             =head1 SYNOPSIS
41              
42             use Stencil::Source::Awncorp::Project;
43              
44             my $s = Stencil::Source::Awncorp::Project->new;
45              
46             =cut
47              
48             =head1 DESCRIPTION
49              
50             This package provides a L<Stencil> generator for L<Dist::Zilla> based projects
51             that use. This generator produces the following specification:
52              
53             name: MyApp
54             abstract: Doing One Thing Very Well
55             main_module: lib/MyApp.pm
56              
57             prerequisites:
58             - "routines = 0"
59             - "Data::Object::Class = 0"
60             - "Data::Object::ClassHas = 0"
61              
62             operations:
63             - from: editorconfig
64             make: .editorconfig
65             - from: gitattributes
66             make: .gitattributes
67             - from: build
68             make: .github/build
69             - from: release
70             make: .github/release
71             - from: workflow-release
72             make: .github/workflows/releasing.yml
73             - from: workflow-test
74             make: .github/workflows/testing.yml
75             - from: gitignore
76             make: .gitignore
77             - from: mailmap
78             make: .mailmap
79             - from: perlcriticrc
80             make: .perlcriticrc
81             - from: perltidyrc
82             make: .perltidyrc
83             - from: replydeps
84             make: .replydeps
85             - from: replyrc
86             make: .replyrc
87             - from: code-of-conduct
88             make: CODE_OF_CONDUCT.md
89             - from: contributing
90             make: CONTRIBUTING.md
91             - from: manifest-skip
92             make: MANIFEST.SKIP
93             - from: stability
94             make: STABILITY.md
95             - from: template
96             make: TEMPLATE
97             - from: version
98             make: VERSION
99             - from: dist
100             make: dist.ini
101              
102             =cut
103              
104             =head1 INHERITS
105              
106             This package inherits behaviors from:
107              
108             L<Stencil::Source>
109              
110             =cut
111              
112             =head1 LIBRARIES
113              
114             This package uses type constraints from:
115              
116             L<Types::Standard>
117              
118             =cut
119              
120             =head1 AUTHOR
121              
122             Al Newkirk, C<awncorp@cpan.org>
123              
124             =head1 LICENSE
125              
126             Copyright (C) 2011-2019, Al Newkirk, et al.
127              
128             This is free software; you can redistribute it and/or modify it under the terms
129             of the The Apache License, Version 2.0, as elucidated in the L<"license
130             file"|https://github.com/iamalnewkirk/stencil-source-awncorp/blob/master/LICENSE>.
131              
132             =head1 PROJECT
133              
134             L<Wiki|https://github.com/iamalnewkirk/stencil-source-awncorp/wiki>
135              
136             L<Project|https://github.com/iamalnewkirk/stencil-source-awncorp>
137              
138             L<Initiatives|https://github.com/iamalnewkirk/stencil-source-awncorp/projects>
139              
140             L<Milestones|https://github.com/iamalnewkirk/stencil-source-awncorp/milestones>
141              
142             L<Contributing|https://github.com/iamalnewkirk/stencil-source-awncorp/blob/master/CONTRIBUTE.md>
143              
144             L<Issues|https://github.com/iamalnewkirk/stencil-source-awncorp/issues>
145              
146             =cut
147              
148             __DATA__
149              
150             @=spec
151              
152             name: MyApp
153             abstract: Doing One Thing Very Well
154             main_module: lib/MyApp.pm
155              
156             prerequisites:
157             - "routines = 0"
158             - "Data::Object::Class = 0"
159             - "Data::Object::ClassHas = 0"
160              
161             operations:
162             - from: editorconfig
163             make: .editorconfig
164             - from: gitattributes
165             make: .gitattributes
166             - from: build
167             make: .github/build
168             - from: release
169             make: .github/release
170             - from: workflow-release
171             make: .github/workflows/releasing.yml
172             - from: workflow-test
173             make: .github/workflows/testing.yml
174             - from: gitignore
175             make: .gitignore
176             - from: mailmap
177             make: .mailmap
178             - from: perlcriticrc
179             make: .perlcriticrc
180             - from: perltidyrc
181             make: .perltidyrc
182             - from: replydeps
183             make: .replydeps
184             - from: replyrc
185             make: .replyrc
186             - from: code-of-conduct
187             make: CODE_OF_CONDUCT.md
188             - from: contributing
189             make: CONTRIBUTING.md
190             - from: manifest-skip
191             make: MANIFEST.SKIP
192             - from: stability
193             make: STABILITY.md
194             - from: template
195             make: TEMPLATE
196             - from: version
197             make: VERSION
198             - from: dist
199             make: dist.ini
200              
201             @=editorconfig
202              
203             [*]
204             charset = utf-8
205             end_of_line = lf
206             indent_size = 2
207             indent_style = space
208             insert_final_newline = false
209             tab_width = 2
210             trim_trailing_whitespace = true
211              
212             @=gitattributes
213              
214             *.pl linguist-language=Perl
215             *.pm linguist-language=Perl
216             *.t linguist-language=Perl
217              
218             .github/* linguist-documentation
219             dev/* linguist-documentation
220              
221             @=build
222              
223             #!/bin/bash
224              
225             # Check the repo is in ready-state
226             if ! git diff-index --quiet HEAD --; then
227             echo "Uncommitted changes!" && exit 0;
228             fi
229              
230             # Build Package
231             DZIL_RELEASE=0 dzil build
232              
233             # Push generated POD changes
234             if ! git diff-index --quiet HEAD --; then
235             git checkout CHANGES && git add . && git commit -m 'Update documentation'
236             fi
237              
238             @=release
239              
240             #!/bin/bash
241              
242             export V=$1
243             export DZIL_RELEASE=1
244              
245             # Ensure release version is explicit
246             if [ ! -n "$V" ]; then
247             echo 'No release version!' && exit 0;
248             fi
249              
250             # Check the repo is in ready-state
251             if ! git diff-index --quiet HEAD --; then
252             echo "Uncommitted changes!" && exit 0;
253             fi
254              
255             # Test fake build before release
256             if ! dzil test; then
257             echo "Build test failed!" && exit 0;
258             fi
259              
260             # Cleanup the mess
261             dzil clean
262              
263             # Delete existing release tag (if exists)
264             git tag -d cpan $V 2> /dev/null
265             git push origin :refs/tags/cpan :refs/tags/$V 2> /dev/null
266              
267             # Persist Release VERSION
268             echo $V > VERSION
269              
270             # Delete existing POD documents
271             find lib -type f -name \*.pod -exec rm {} \;
272              
273             # Regenerate all necessary POD documents
274             testauto -o lib -t TEMPLATE
275              
276             # Push generated POD changes
277             if ! git diff-index --quiet HEAD --; then
278             git add . && git commit -m 'Add release updates'
279             fi
280              
281             # Build, Tag, and Push Package Release
282             dzil release
283              
284             # Tag as CPAN for releasing
285             git tag cpan 2> /dev/null
286              
287             # Re-push all tags (just in case)
288             git push --tags 2> /dev/null
289              
290             @=workflow-release
291              
292             name: Releasing
293              
294             on:
295             push:
296             tags:
297             - cpan
298              
299             jobs:
300             Perl-5300:
301             runs-on: ubuntu-latest
302              
303             steps:
304             - uses: actions/checkout@v1
305             - name: Install Perlbrew
306             run: sudo apt install -y perlbrew
307             - name: Initial Perlbrew
308             run: sudo perlbrew init
309             - name: Install CPANM
310             run: sudo perlbrew install-cpanm
311             - name: Install Perl 5.30
312             run: sudo perlbrew install -n perl-5.30.0
313             - name: Verify Perl Version
314             run: sudo perlbrew exec --with perl-5.30.0 perl -V
315             - name: Install Perl::Critic
316             run: sudo perlbrew exec --with perl-5.30.0 cpanm -qn Perl::Critic
317             - name: Install Perl Dependencies
318             run: sudo perlbrew exec --with perl-5.30.0 cpanm -qn --reinstall --installdeps .
319             - name: Critiquing Project
320             run: sudo perlbrew exec --with perl-5.30.0 perlcritic lib t
321             - name: Testing Project
322             run: sudo perlbrew exec --with perl-5.30.0 prove -Ilib -r t
323             env:
324             HARNESS_OPTIONS: j9
325              
326             Perl-5280:
327             runs-on: ubuntu-latest
328              
329             steps:
330             - uses: actions/checkout@v1
331             - name: Install Perlbrew
332             run: sudo apt install -y perlbrew
333             - name: Initial Perlbrew
334             run: sudo perlbrew init
335             - name: Install CPANM
336             run: sudo perlbrew install-cpanm
337             - name: Install Perl 5.28
338             run: sudo perlbrew install -n perl-5.28.0
339             - name: Verify Perl Version
340             run: sudo perlbrew exec --with perl-5.28.0 perl -V
341             - name: Install Perl::Critic
342             run: sudo perlbrew exec --with perl-5.28.0 cpanm -qn Perl::Critic
343             - name: Install Perl Dependencies
344             run: sudo perlbrew exec --with perl-5.28.0 cpanm -qn --reinstall --installdeps .
345             - name: Critiquing Project
346             run: sudo perlbrew exec --with perl-5.28.0 perlcritic lib t
347             - name: Testing Project
348             run: sudo perlbrew exec --with perl-5.28.0 prove -Ilib -r t
349             env:
350             HARNESS_OPTIONS: j9
351              
352             Perl-5260:
353             runs-on: ubuntu-latest
354              
355             steps:
356             - uses: actions/checkout@v1
357             - name: Install Perlbrew
358             run: sudo apt install -y perlbrew
359             - name: Initial Perlbrew
360             run: sudo perlbrew init
361             - name: Install CPANM
362             run: sudo perlbrew install-cpanm
363             - name: Install Perl 5.26
364             run: sudo perlbrew install -n perl-5.26.0
365             - name: Verify Perl Version
366             run: sudo perlbrew exec --with perl-5.26.0 perl -V
367             - name: Install Perl::Critic
368             run: sudo perlbrew exec --with perl-5.26.0 cpanm -qn Perl::Critic
369             - name: Install Perl Dependencies
370             run: sudo perlbrew exec --with perl-5.26.0 cpanm -qn --reinstall --installdeps .
371             - name: Critiquing Project
372             run: sudo perlbrew exec --with perl-5.26.0 perlcritic lib t
373             - name: Testing Project
374             run: sudo perlbrew exec --with perl-5.26.0 prove -Ilib -r t
375             env:
376             HARNESS_OPTIONS: j9
377              
378             Perl-5240:
379             runs-on: ubuntu-latest
380              
381             steps:
382             - uses: actions/checkout@v1
383             - name: Install Perlbrew
384             run: sudo apt install -y perlbrew
385             - name: Initial Perlbrew
386             run: sudo perlbrew init
387             - name: Install CPANM
388             run: sudo perlbrew install-cpanm
389             - name: Install Perl 5.24
390             run: sudo perlbrew install -n perl-5.24.0
391             - name: Verify Perl Version
392             run: sudo perlbrew exec --with perl-5.24.0 perl -V
393             - name: Install Perl::Critic
394             run: sudo perlbrew exec --with perl-5.24.0 cpanm -qn Perl::Critic
395             - name: Install Perl Dependencies
396             run: sudo perlbrew exec --with perl-5.24.0 cpanm -qn --reinstall --installdeps .
397             - name: Critiquing Project
398             run: sudo perlbrew exec --with perl-5.24.0 perlcritic lib t
399             - name: Testing Project
400             run: sudo perlbrew exec --with perl-5.24.0 prove -Ilib -r t
401             env:
402             HARNESS_OPTIONS: j9
403              
404             Perl-5220:
405             runs-on: ubuntu-latest
406              
407             steps:
408             - uses: actions/checkout@v1
409             - name: Install Perlbrew
410             run: sudo apt install -y perlbrew
411             - name: Initial Perlbrew
412             run: sudo perlbrew init
413             - name: Install CPANM
414             run: sudo perlbrew install-cpanm
415             - name: Install Perl 5.22
416             run: sudo perlbrew install -n perl-5.22.0
417             - name: Verify Perl Version
418             run: sudo perlbrew exec --with perl-5.22.0 perl -V
419             - name: Install Perl::Critic
420             run: sudo perlbrew exec --with perl-5.22.0 cpanm -qn Perl::Critic
421             - name: Install Perl Dependencies
422             run: sudo perlbrew exec --with perl-5.22.0 cpanm -qn --reinstall --installdeps .
423             - name: Critiquing Project
424             run: sudo perlbrew exec --with perl-5.22.0 perlcritic lib t
425             - name: Testing Project
426             run: sudo perlbrew exec --with perl-5.22.0 prove -Ilib -r t
427             env:
428             HARNESS_OPTIONS: j9
429              
430             Perl-5182:
431             runs-on: ubuntu-latest
432              
433             steps:
434             - uses: actions/checkout@v1
435             - name: Install Perlbrew
436             run: sudo apt install -y perlbrew
437             - name: Initial Perlbrew
438             run: sudo perlbrew init
439             - name: Install CPANM
440             run: sudo perlbrew install-cpanm
441             - name: Install Perl 5.18
442             run: sudo perlbrew install -n perl-5.18.2
443             - name: Verify Perl Version
444             run: sudo perlbrew exec --with perl-5.18.2 perl -V
445             - name: Install Perl::Critic
446             run: sudo perlbrew exec --with perl-5.18.2 cpanm -qn Perl::Critic
447             - name: Install Perl Dependencies
448             run: sudo perlbrew exec --with perl-5.18.2 cpanm -qn --reinstall --installdeps .
449             - name: Critiquing Project
450             run: sudo perlbrew exec --with perl-5.18.2 perlcritic lib t
451             - name: Testing Project
452             run: sudo perlbrew exec --with perl-5.18.2 prove -Ilib -r t
453             env:
454             HARNESS_OPTIONS: j9
455              
456             Dist-Upload:
457             runs-on: ubuntu-latest
458             needs: ["Perl-5300", "Perl-5280", "Perl-5260", "Perl-5240", "Perl-5220", "Perl-5182"]
459              
460             steps:
461             - uses: actions/checkout@v1
462             - name: Setup Git User
463             run: git config --global user.name "Al Newkirk"
464             - name: Setup Git Email
465             run: git config --global user.email "awncorp@cpan.org"
466             - name: Setup GitHub User
467             run: git config --global github.user ${{ secrets.GithubUser }}
468             - name: Setup GitHub Token
469             run: git config --global github.token ${{ secrets.GithubToken }}
470             - name: Install CPANM
471             run: sudo apt install -y cpanminus
472             - name: Install Dist::Zilla
473             run: sudo cpanm -qn Dist::Zilla
474             - name: Install Dist::Zilla Dependencies
475             run: dzil authordeps | sudo cpanm -qn
476             - name: Install Project Dependencies
477             run: sudo cpanm -qn --reinstall --installdeps .
478             - name: Cleanup Build Environment
479             run: dzil clean
480             - name: Build Project Distribution
481             run: V=$(cat VERSION) DZIL_RELEASING=1 dzil build
482             - name: Discard Generated Changelog
483             run: git checkout CHANGES
484             - name: Discard Generated Tarball
485             run: rm $(ls *.tar.gz)
486             - name: Copy CHANGES to Build Directory
487             run: cp -f CHANGES $(echo *-$(cat VERSION))
488             - name: Manually Create Release Tarball
489             run: tar czf $(echo *-$(cat VERSION)).tar.gz $(echo *-$(cat VERSION))
490             - name: Upload to CPAN
491             run: cpan-upload -u ${{ secrets.CpanUser }} -p ${{ secrets.CpanPass }} $(ls *.tar.gz)
492              
493             @=workflow-test
494              
495             name: Testing
496              
497             on:
498             push:
499             branches:
500             - issue-*
501             - milestone-*
502             - project-*
503              
504             jobs:
505             Perl-0000:
506             runs-on: ubuntu-latest
507              
508             steps:
509             - uses: actions/checkout@v1
510             - name: Setup Git User
511             run: git config --global user.name "Al Newkirk"
512             - name: Setup Git Email
513             run: git config --global user.email "awncorp@cpan.org"
514             - name: Setup GitHub User
515             run: git config --global github.user ${{ secrets.GithubUser }}
516             - name: Setup GitHub Token
517             run: git config --global github.user ${{ secrets.GithubToken }}
518             - name: Install CPANM
519             run: sudo apt install -y cpanminus
520             - name: Install Perl::Critic
521             run: sudo cpanm -qn Perl::Critic
522             - name: Install Project Dependencies
523             run: sudo cpanm -qn --reinstall --installdeps .
524             - name: Critiquing Project
525             run: perlcritic lib t
526             - name: Testing Project
527             run: prove -Ilib -r t
528             env:
529             HARNESS_OPTIONS: j9
530              
531             @=gitignore
532              
533             /*
534              
535             !/.github
536             !/bin
537             !/lib
538             !/t
539              
540             !CHANGES
541             !CODE_OF_CONDUCT.md
542             !CONTRIBUTING.md
543             !INSTALL
544             !LICENSE
545             !Makefile.PL
546             !MANIFEST.SKIP
547             !META.json
548             !META.yml
549             !OVERVIEW.md
550             !README
551             !README.md
552             !STABILITY.md
553             !TEMPLATE
554             !VERSION
555             !build
556             !cpanfile
557             !dist.ini
558             !release
559              
560             !.editorconfig
561             !.gitattributes
562             !.gitignore
563             !.mailmap
564             !.perltidyrc
565             !.perlcriticrc
566             !.replyrc
567             !.replydeps
568              
569             @=mailmap
570              
571             Al Newkirk <awncorp@cpan.org> <al@alnewkirk.com>
572             Al Newkirk <awncorp@cpan.org> <al@iamalnewkirk.com>
573              
574             @=perlcriticrc
575              
576             color=1
577             severity=5
578             theme=risky + (pbp * security) - cosmetic
579             verbose=4
580             exclude=ClassHierarchies NamingConventions RequireTestLabels
581              
582             [-Modules::RequireVersionVar]
583             [-Modules::RequireExplicitPackage]
584              
585             @=perltidyrc
586              
587             -pbp # Start with Perl Best Practices
588             -w # Show all warnings
589             -iob # Ignore old breakpoints
590             -l=80 # 80 characters per line
591             -mbl=2 # No more than 2 blank lines
592             -i=2 # Indentation is 2 columns
593             -ci=2 # Continuation indentation is 2 columns
594             -vt=0 # Less vertical tightness
595             -pt=2 # High parenthesis tightness
596             -bt=2 # High brace tightness
597             -sbt=2 # High square bracket tightness
598             -wn # Weld nested containers
599             -isbc # Don't indent comments without leading space
600             -cab=0 # Break after comma (comma arrow breakpoints)
601             -novalign
602              
603             @=replydeps
604              
605             Reply
606             App::Nopaste
607             B::Keywords
608             Class::Refresh
609             IO::Pager
610             Proc::InvokeEditor
611             Term::ReadKey
612             Term::ReadLine::Gnu
613              
614             @=replyrc
615              
616             [Editor]
617             [Interrupt]
618             [FancyPrompt]
619             [DataDumper]
620             [AutoRefresh]
621              
622             [Colors]
623             [Hints]
624             [LexicalPersistence]
625             [LoadClass]
626             [Nopaste]
627             [Packages]
628             [Pager]
629             [ReadLine]
630             [ResultCache]
631              
632             [Autocomplete::Commands]
633             [Autocomplete::Functions]
634             [Autocomplete::Globals]
635             [Autocomplete::Keywords]
636             [Autocomplete::Lexicals]
637             [Autocomplete::Methods]
638             [Autocomplete::Packages]
639              
640             @=code-of-conduct
641              
642             ## Pledge
643              
644             In the interest of fostering an open, inclusive, and welcoming environment, we,
645             as contributors and maintainers pledge, to the best of our ability, to make
646             participation in our project and our community an enjoyable experience for
647             everyone involved.
648              
649             ## Standards
650              
651             Examples of acceptable behavior by participants include:
652              
653             * Being polite and respectful in communication
654             * Willing to give and receive constructive criticism
655             * Advancing the successful development of the project
656             * Being a productive member of the community
657              
658             Examples of unacceptable behavior by participants include:
659              
660             * Being impolite or disrespectful in communication
661             * Unwilling to receive constructive criticism
662             * Hindering the successful development of the project
663             * Being an unproductive member of the community
664              
665             ## Maintainership
666              
667             Project maintainers are responsible for clarifying the standards of acceptable
668             behavior and are expected to take appropriate and fair corrective action in
669             response to any instances of unacceptable behavior. Project maintainers have
670             the right and responsibility to remove, edit, or reject comments, commits,
671             code, wiki edits, issues, and other contributions that are not aligned with
672             this Code of Conduct, or to ban temporarily or permanently any contributor for
673             other behaviors that they deem inappropriate.
674              
675             Additionally, project maintainers are obligated to:
676              
677             * Help contributors
678             * Review comments, commits, issues, and other project contributions
679             * Approve comments, commits, issues, and other project contributions
680             * Enforce community guidelines
681              
682             ### Policy Scope
683              
684             This Code of Conduct applies only and exclusively to official project spaces,
685             mediums, and accounts owned by and representative of the project. Examples of
686             project representation include using an official project e-mail address,
687             posting via an official social media account or acting as an appointed
688             representative at an online or offline event.
689              
690             Please take note that this does not include the personal public or private
691             social media accounts, non-project related websites, emails, communications or
692             activities online or offline, of any participant of this project, maintainer
693             and individual contributor alike. Representation of the project may be further
694             defined and clarified by project maintainers.
695              
696             Incidents reported in bad faith, or maliciously, and/or in an attempt to use
697             this project and its Code of Conduct to address activities unrelated to the
698             project and/or outside of its official project spaces, mediums, and accounts
699             owned by and representative of the project will not be considered and may face
700             temporary or permanent repercussions where applicable as determined by members
701             of the project's leadership.
702              
703             ### Policy Enforcement
704              
705             Instances of violations may be reported by contacting the project maintainers
706             at al@iamalnewkirk.com. All complaints will be reviewed and investigated and
707             will result in a response that is deemed necessary and appropriate to the
708             circumstances. The project team is obligated to maintain confidentiality with
709             regard to the reporter of an incident. Further details of specific enforcement
710             policies may be posted separately.
711              
712             @=contributing
713              
714             ## Contributing
715              
716             Thanks for your interest in this project. We welcome all community
717             contributions! To install locally, follow the instructions in the
718             [README.md](./README.mkdn) file.
719              
720             ## Releasing
721              
722             This project uses [Dist::Zilla](https://github.com/rjbs/Dist-Zilla) to manage
723             its build and release processes. For ease and consistency there is also a
724             _"build"_ and _"release"_ script in the project .github folder which executes
725             the most common steps in releasing this software.
726              
727             ```
728             $ bash ./.github/release 0.01
729             ```
730              
731             ## Directory Structure
732              
733             ```
734             lib
735             ├── Class.pm
736             ├── Class
737             │   └── Widget.pm
738             t
739             ├── Class.t
740             └── Class_Widget.t
741             ```
742              
743             Important! Before you checkout the code and start making contributions you need
744             to understand the project structure and reasoning. This will help ensure you
745             put code changes in the right place so they won't get overwritten.
746              
747             The `lib` directory is where the packages (modules, classes, etc) are. Feel
748             free to create, delete and/or update as you see fit. All POD (documentation)
749             changes are made in their respective test files under the `t` directory. This
750             is necessary because the documentation is auto-generated during release.
751              
752             Thank you so much!
753              
754             ## Questions, Suggestions, Issues/Bugs
755              
756             Please post any questions, suggestions, issues or bugs to the [issue
757             tracker](../../issues) on GitHub.
758              
759             @=manifest-skip
760              
761             ^(?!CHANGES|INSTALL|LICENSE|Makefile.PL|META*|README*|cpanfile|lib\/.*|t\/.*).*$
762              
763             @=stability
764              
765             ## Stability
766              
767             Our top priority is to provide a reliable development framework that important
768             work is based upon. As such, we promise to put stability and backward
769             compatibility first in the development of this project.
770              
771             Version 1.00 of this distribution is considered stable. Any changes to the API
772             that result in changes to the test suite will be preceded by a three (3) month
773             notice period, with the following exceptions:
774              
775             * Changes necessary to maintain compatibility with:
776              
777             - Perl +5.14
778             - Other major dependencies
779              
780             * Contradictions between the implementation and documentation
781              
782             * Features explicitly documented as "experimental" or "unstable"
783              
784             * Changes to the documentation
785              
786             ## Versioning
787              
788             This distribution uses the standard Perl two component number versioning scheme
789             but increments it based on [semver](https://semver.org) semantics. For example,
790             a version number of `1.23` is treated as the semver-based version number
791             `1.2.3`.
792              
793             ## Releasing
794              
795             This distribution and its source code is maintained and released on GitHub,
796             with the CPAN serving as the canonical repository. This means that hotfixes,
797             changes in documentation, and experimental features will be released on GitHub,
798             only shipping stable releases to the CPAN.
799              
800             ## Questions, Suggestions, Issues/Bugs
801              
802             Please post any questions, suggestions, issues or bugs to the [issue
803             tracker](../../issues) on GitHub.
804              
805             @=template
806              
807             +=encoding utf8
808              
809             {content}
810              
811             +=head1 AUTHOR
812              
813             Al Newkirk, C<awncorp@cpan.org>
814              
815             +=head1 LICENSE
816              
817             Copyright (C) 2011-2019, Al Newkirk, et al.
818              
819             This is free software; you can redistribute it and/or modify it under the terms
820             of the The Apache License, Version 2.0, as elucidated in the L<"license
821             file"|https://github.com/iamalnewkirk/[% self.dist(data.name).lower %]/blob/master/LICENSE>.
822              
823             +=head1 PROJECT
824              
825             L<Wiki|https://github.com/iamalnewkirk/[% self.dist(data.name).lower %]/wiki>
826              
827             L<Project|https://github.com/iamalnewkirk/[% self.dist(data.name).lower %]>
828              
829             L<Initiatives|https://github.com/iamalnewkirk/[% self.dist(data.name).lower %]/projects>
830              
831             L<Milestones|https://github.com/iamalnewkirk/[% self.dist(data.name).lower %]/milestones>
832              
833             L<Contributing|https://github.com/iamalnewkirk/[% self.dist(data.name).lower %]/blob/master/CONTRIBUTE.md>
834              
835             L<Issues|https://github.com/iamalnewkirk/[% self.dist(data.name).lower %]/issues>
836              
837             +=cut
838              
839             @=version
840              
841             0.01
842              
843             @=dist
844              
845             name = [% self.dist(data.name) %]
846             abstract = [% data.abstract %]
847             main_module = [% data.main_module %]
848             author = Al Newkirk <awncorp@cpan.org>
849             license = Apache_2_0
850             copyright_holder = Al Newkirk
851             copyright_year = 2019
852              
853             [Authority]
854             authority = cpan:AWNCORP
855             do_munging = 0
856              
857             [MetaJSON]
858             [MetaYAML]
859             [OurPkgVersion]
860             [GatherDir]
861             [ManifestSkip]
862             [FakeRelease]
863             [ReadmeAnyFromPod]
864             [ReadmeAnyFromPod / ReadmeMarkdownInBuild]
865             filename = README.md
866              
867             [Run::BeforeBuild]
868             run = rm -f cpanfile
869             run = rm -f INSTALL
870             run = rm -f CHANGES
871             run = rm -f LICENSE
872             run = rm -f README
873             run = rm -f README.md
874             run = rm -f Makefile.PL
875              
876             [CopyFilesFromBuild]
877             copy = cpanfile
878             copy = INSTALL
879             copy = CHANGES
880             copy = LICENSE
881             copy = README
882             copy = README.md
883             copy = Makefile.PL
884              
885             [Git::CommitBuild]
886             branch = builds
887             message = Build %h (on %b)
888             multiple_inheritance = 0
889              
890             [ChangelogFromGit::CPAN::Changes]
891             show_author = 0
892             tag_regexp = ^(v?\d+\.\d+(\.\d+)?)$
893             file_name = CHANGES
894             wrap_column = 80
895             debug = 0
896              
897             [@Git]
898             tag_format = %v
899             tag_message = Release: %v
900             changelog = CHANGES
901             allow_dirty = CHANGES
902             allow_dirty = INSTALL
903             allow_dirty = LICENSE
904             allow_dirty = Makefile.PL
905             allow_dirty = README
906             allow_dirty = README.md
907             allow_dirty = cpanfile
908             allow_dirty = dist.ini
909              
910             [Git::NextVersion]
911             first_version = 0.01
912             version_regexp = ^(.+)$
913              
914             [GitHub::Meta]
915             [GitHub::Update]
916             metacpan = 1
917              
918             [Run::BeforeRelease]
919             run = git add .
920             run = git commit -m "Built release version %v"
921              
922             [Prereqs]
923             perl = 5.014
924             [%- IF data.prerequisites %]
925             [% FOR item IN data.prerequisites %]
926             [%- item %]
927             [% END -%]
928             [% END -%]
929              
930             [Prereqs / TestRequires]
931             perl = 5.014
932             [%- IF data.prerequisites %]
933             [% FOR item IN data.prerequisites %]
934             [%- item %]
935             [% END -%]
936             [% END -%]
937              
938             [CPANFile]
939             [CoalescePod]
940             [ContributorsFromGit]
941             [MakeMaker]
942             [InstallGuide]
943             [License]