Boxer
=====

Created:      2013-02-12
Home page:    <https://wiki.debian.org/Boxer>
Home page:    <https://metacpan.org/release/Boxer>
Bug tracker:  <http://rt.cpan.org/Dist/Display.html?Queue=Boxer>
Maintainer:   Jonas Smedegaard (JONASS) <jonass@cpan.org>

v1.4.2	2020-04-24

 [ Bug Fixes ]
 - fix process empty class list or non-empty parameters in node data
 - have Boxer::Task::Classify: explicitly set datadir default as unset
   (this partly reverts git commit a4bea17)

 [ Test Suite ]
 - fix tighten World::Reclass test to not tolerate duplicates (this also
   reverts git commit f3e3009)
 - tighten World::Reclass test to cover node with custom parameters and no
   class

 [ Packaging ]
 - update perltidy config: consistently use long-options; use --converse
 - use List::MoreUtils

 [ Other ]
 - rephrase World::Reclass slightly to make peace between perltidy and
   Test::Tabs)
 - tighten World::Reclass to process only matching types, and skip
   duplicates is arrays

v1.4.1	2020-04-23

 [ Bug Fixes ]
 - Boxer::Task::Classify: reword trace messages
 - Boxer::World::Reclass: avoid constructor for attributes classdir nodedir

 [ Documentation ]
 - add Boxer synopsis

 [ Test Suite ]
 - add coverage of Boxer::World::Reclass; use Test::Deep
 - improve coverage of Boxer::Task::Classify
 - stop enumerate tests in 01_app_help.t
 - use subtest to isolate repetitions
 - use tempdir to ensure empty or non-existing dir

 [ Packaging ]
 - require perl 5.020

 [ Other ]
 - Boxer::Part::Reclass: tighten type for attribute suite
 - Boxer::Task::Classify: simplify attribute datadir to not be required nor
   have default explicitly unset
 - Boxer::World: add attribute data
 - Boxer::World::Reclass: add method list_parts
 - Boxer::World::Reclass: log (not croak) on error resolving parts from
   node
 - Boxer::World::Reclass: rename attribute flatten -> map
 - Boxer::World::Reclass: rename method get_node_by_id -> get_part, and
   distinguish empty world from missing part
 - handle Boxer::World::* as plugins, using Module::Find and
   Module::Load::Conditional
 - process YAML data internally, using Hash::Merge (not with reclass)
 - relax constraints and tests to be less specific to Reclass world
 - use feature signatures

v1.4.0	2019-04-01

 [ Bug Fixes ]
 - Fix avoid option --verbose overriding stronger verbosity set as
   environment variables.

 [ Documentation ]
 - Improve pod of Boxer::Task.
 - Mention Elbe commands and isar in SEE ALSO pod.
 - Mention Perl module Footprintless in Boxer pod section SEE ALSO.
 - Update TODOs.

 [ Other ]
 - Added: Fix implement boxer-compose/boxer-bootstrap option --verbose.
 - Added: Implement boxer-bootstrap option --mode.
 - Emit shell command notice via Log::Any to stderr (not explicitly to
   stdout).
 - Execute reclass in Boxer::World::Reclass (not Boxer::Task::Classify).
 - Improve logging.
 - Load Moo-related modules (base classes and roles) before other modules.
 - Stop use version: Unneeded.
 - Tidy coercion hints.
 - Tidy to consistently use qw() in module use.
 - Tighten author-test pod-spell to rely on english aspell disctionary
   being installed.

v1.3.0	2019-03-01

 [ Documentation ]
 - Add TODO about unit testing code coverage.
 - Reference inspirational projects and competing tools.
 - Rephrase Boxer::Reclass pod DESCRIPTION.
 - Update/fix references to upstream git.

 [ Test Suite ]
 - Avoid declaring test count where tests are optionally skipped.
 - Check path prefix handling in serialize.t.
 - Process node parl-greens (not lxp5) in serialize.t, to expose different
   features.
 - Update spelling test, adding a few more words.
 - Use Test::CleanNamespaces in testsuite.
 - Use Test::Fatal (replacing Test::Exception).

 [ Other ]
 - Added: Add subcommand bootstrap.
 - Added: Fix implement boxer-compose option --format.
 - Handle serialization details in Boxer::World::Flat (not
   Boxer::Task::Serialize).
 - Limit Type::Utils import: Apparently unneeded.
 - Pass variables when file template is processed (not when instantiated).
 - Treat namespace::autoclean as a pragma (one of its benefits over
   namespace::clean).
 - Use MooX::StrictConstructor.

v1.2.0	2019-02-27

 [ BACK COMPAT ]
 - Update skeleton files: Drop workaround unneeded since Jessie (see
   bug#751367).

 [ Bug Fixes ]
 - Fix compose option --help output to list current dir as default for
   --nodedir, to match boxer pod and actual logic since v1.1.4.

 [ Documentation ]
 - Update TODOs.

 [ Test Suite ]
 - Update spelling test, adding a few more words.

 [ Other ]
 - Added: Provide additional variables to skeleton templates, containing
   comma-separated lists: pkgs pkgs_avoid pkgs_auto.
 - Added: Provide additional variables to skeleton templates, containing
   plain and perl-escaped shell code: tweaks tweaks_perl.
 - Update skeleton files: Use apt (not apt-get) in shell script.
 - Updated: Use buster as default suite.

v1.1.11	2018-10-04

 [ Bug Fixes ]
 - Fix propagate nonfree flag to skeleton files.

v1.1.10	2018-09-27

 [ Documentation ]
 - Tidy changes to mark test-related entries as such.

 [ Test Suite ]
 - Add author-test pod-spell.
 - Fix author-test SYNOPSIS without needing MANIFEST.
 - Fix test miminum version without needing META.yml.

 [ Packaging ]
 - Fix explicitly depend on Class::XSAccessor: Optionally used by Moo, but
   without it accessors with hyphens are not supported.

v1.1.9	2018-09-27

 [ Bug Fixes ]
 - Fix resolve nonfree, auto-resolved, and to-be-avoided packages.

 [ Documentation ]
 - Update INSTALL file: Update git URL.

 [ Test Suite ]
 - Extend testsuite: Cover auto-resolved and to-be-avoided packages.

 [ Other ]
 - Tidy HEREDOC commands.

v1.1.8	2018-07-13

 [ Bug Fixes ]
 - Fix subcommand about choking on authority implemented but undefined.
 - Fix subcommand about listing authority: Use namespace::autoclean (not
   namespace::clean, and use recent version to avoid Moo inflation to
   Moose).
 - Fix subcommand aliases help text to use valid example, and tone down
   usage (only some not most subcommands have aliases).
 - Fix syntax error resolving nonfree packages in Boxer::World::Reclass.

 [ Documentation ]
 - Fix changelog entry part of release v1.1.5.
 - Fix typo in POD of module Boxer::World::Flat.

v1.1.7	2017-11-06

 [ Bug Fixes ]
 - Fix make option --skeldir optional.

v1.1.6	2017-11-05

 [ Test Suite ]
 - Fix testsuite to gracefully handle executable reclass unavailable.

 [ Packaging ]
 - Fix require Test::Exception and Test::File::Contents for testsuite.

v1.1.5	2017-01-24

 [ Bug Fixes ]
 - Fix chomp tweak lines.

 [ Documentation ]
 - Add some TODOs.
 - Fix usage description for compose subcommand.

 [ Test Suite ]
 - Run perlcritic with tidyall, and test both (not only perlcritic) in
   TEST_AUTHOR mode.

 [ Packaging ]
 - Use version with modern assignment. Extend copyright to current year.

 [ Other ]
 - Add Boxer::File::WithSkeleton class.
 - Add World and Part classes, with unit test.
 - Consistently use namespace::clean in modules. Order use by
   pragma/non-Moo/Moo/cleanup and (roughly) by specificity.
 - Drop unused code in Boxer::CLI.
 - Modernize to use perl v5.14, utf8, and strictures 2.
 - Removed: Stop handle __PKGAUTOLIST__ in data (deprecated since 0.004).
 - Stop skip undefined args in Task::Serialize (needed only for
   Task::Classify).
 - Stop use MooX::Types::MooseLike::Base.

v1.1.4	2016-05-02

 [ Bug Fixes ]
 - Fix have current dir be default nodedir (as originally intended and
   documented in boxer pod): Do XDG data_dirs lookup only on datadir,
   leaving datadir undefined by default).

v1.1.3	2016-05-02

 [ Bug Fixes ]
 - Fix use File::ShareDir.

v1.1.2	2016-04-30

 - Use File::ShareDir (not File::ShareDir::ProjectDistDir, strongly
   discouraged by author). Thanks to Karen Etheridge (RT#114079).

v1.1.1	2016-04-12

 - Use Log::Any::Adapter::Screen (not obsolete predecessor
   Log::Any::Adapter::ScreenColoredLevel).

v1.1.0	2015-11-29

 [ Bug Fixes ]
 - Fix unescape \n and ${ for shellscript.
 - Fix use apt-get (automated) or apt (interactive, on recent releases) in
   skeleton scripts and notes (aptitude is not always available).

 [ Documentation ]
 - Add TODO on resolving named suites from relative ones.
 - Extend copyright to cover current year.

 [ Other ]
 - Added: Pass node to skeleton files (and use in boilerplate, replacing
   bogus DebianParl boilerplate.
 - Added: Pass suite to skeleton files, and set as variable in shellscript
   and preseed file late_script.
 - Fix drop all hardcoded data from default skeleton files.
 - Tidy Boxer::Types.
 - Updated: Support empty packagelist.

v1.0.0	2015-11-21

 [ Bug Fixes ]
 - Fix avoid Boxer::Task::Serialize spewing garbage when warning about
   empty lists.
 - Fix suppress failure to mark package auto-installed.

 [ Documentation ]
 - Rewrite INSTALL to use Debian boxer package.

 [ Packaging ]
 - Release as stable, using semantic versioning.

 [ Other ]
 - Added: Implement --nonfree option for subcommand compose.
 - Croak (not die) on broken input.
 - Fixate suite in preseed file (resolved package list is suite-specific).
 - Improve coercion and error messages for input paths.
 - Sync example data with boxer-data.
 - Tidy whitespace.
 - Use MooX::Role::Logger (not MooX::Log::Any) and
   Log::Any::Adapter::ScreenColoredLevel.

0.004	2014-11-24

 [ Bug Fixes ]
 - Fix only warn (not die) on unresolved auto-markings, avoidance or
   tweaks.

 [ Documentation ]
 - Add some TODOs.
 - Adjust help output of Compose command to describe correct default
   locations.

 [ Other ]
 - Move initial shell code for tweaklist out to skeleton file.
 - Removed: Deprecate expansion of __PKGAUTOLIST__ in tweaklist.
 - Sort doc sections by explicit list (and alphabetically only as
   fallback).
 - Updated: Adjust example class set: Use reclass 1.4 ABI, and drop broken
   Printing class.
 - Use Template::Tiny.

0.003	2014-10-19

 [ Documentation ]
 - Update INSTALL file and pod synopsis slightly.

 [ Packaging ]
 - Fix copyright coverage to include current year.
 - Fix require MooX::Log::Any.
 - Require IPC::System::Simple.
 - Tighten Moo requirement to at least 1.001000 (older are untested with
   Type::Tiny).

 [ Other ]
 - Added: Add --suite option (and drop it as 2nd argument) in compose
   command, allowing multiple nodes instead.
 - Added: Handle nodes, classes and skeleton files with separate options in
   compose command.
 - Added: Include builting skeleton files, and ship with example classes
   and nodes.
 - Explicitly use IPC::System::Simple (already implicitly used via autodie
   + system() call).
 - Refactor to strip undefined args handed over internally - a.k.a. coerce
   Undef to default, to permit callers to sloppily pass App::Cmd options
   as-is.

0.002	2014-10-19

 [ Packaging ]
 - Fix all references to distribution name.
   Toby Inkster++
 - Fix time of initial release.

0.001	2014-10-18	Initial release.
