COPYRIGHT000644001750001750 2367613450370144 14002 0ustar00jonasjonas000000000000Boxer-v1.4.0Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Boxer Upstream-Contact: Jonas Smedegaard (JONASS) Source: https://metacpan.org/release/Boxer Files: INSTALL LICENSE TODO doc/boxer.svg examples/classes/Admin/apt/auto/all.yml examples/classes/Admin/apt/auto/core.yml examples/classes/Admin/apt/auto/functions.yml examples/classes/Admin/apt/init.yml examples/classes/Admin/apt/popcon.yml examples/classes/Admin/apt/tools/changes.yml examples/classes/Admin/apt/tools/init.yml examples/classes/Admin/auto.yml examples/classes/Admin/backup/init.yml examples/classes/Admin/backup/remote.yml examples/classes/Admin/base.yml examples/classes/Admin/disk/lvm.yml examples/classes/Admin/etc/functions.yml examples/classes/Admin/etc/track.yml examples/classes/Admin/harden/account/init.yml examples/classes/Admin/harden/account/strong.yml examples/classes/Admin/harden/init.yml examples/classes/Admin/harden/trustweb.yml examples/classes/Admin/init.yml examples/classes/Console/compression.yml examples/classes/Console/editor/init.yml examples/classes/Console/editor/vim.yml examples/classes/Console/filemanager.yml examples/classes/Console/init.yml examples/classes/Console/mail/init.yml examples/classes/Console/mail/list/init.yml examples/classes/Console/mail/list/tools.yml examples/classes/Console/mail/mutt.yml examples/classes/Console/mail/tools.yml examples/classes/Console/media/audio/alsa.yml examples/classes/Console/media/init.yml examples/classes/Console/mobile/init.yml examples/classes/Console/mobile/sync.yml examples/classes/Console/mouse.yml examples/classes/Console/multiplexer/init.yml examples/classes/Console/tools.yml examples/classes/Desktop/base.yml examples/classes/Desktop/chat/init.yml examples/classes/Desktop/chat/pidgin/crypto.yml examples/classes/Desktop/chat/pidgin/init.yml examples/classes/Desktop/email/base.yml examples/classes/Desktop/email/bidi.yml examples/classes/Desktop/email/harden.yml examples/classes/Desktop/email/icedove/base.yml examples/classes/Desktop/email/icedove/harden.yml examples/classes/Desktop/email/init.yml examples/classes/Desktop/email/locale/ALL.yml examples/classes/Desktop/email/locale/AMERICAS.yml examples/classes/Desktop/email/locale/ASIA.yml examples/classes/Desktop/email/locale/EU.yml examples/classes/Desktop/email/locale/EUROPE.yml examples/classes/Desktop/email/locale/INDIA.yml examples/classes/Desktop/harden.yml examples/classes/Desktop/init.yml examples/classes/Desktop/locale/EU.yml examples/classes/Desktop/media/audio/alsa.yml examples/classes/Desktop/media/audio/pulseaudio.yml examples/classes/Desktop/media/init.yml examples/classes/Desktop/mobile/init.yml examples/classes/Desktop/mobile/sync.yml examples/classes/Desktop/office/init.yml examples/classes/Desktop/office/locale/AFRICA.yml examples/classes/Desktop/office/locale/ALL.yml examples/classes/Desktop/office/locale/AMERICAS.yml examples/classes/Desktop/office/locale/ASIA.yml examples/classes/Desktop/office/locale/EU.yml examples/classes/Desktop/office/locale/EUROPE.yml examples/classes/Desktop/office/locale/INDIA.yml examples/classes/Desktop/office/locale/ZA.yml examples/classes/Desktop/office/presentation.yml examples/classes/Desktop/office/spreadsheet.yml examples/classes/Desktop/office/word-processor.yml examples/classes/Desktop/scheduling/init.yml examples/classes/Desktop/screensaver/unicode.yml examples/classes/Desktop/tools/harden.yml examples/classes/Desktop/tools/pgp/gtk.yml examples/classes/Desktop/tools/pgp/init.yml examples/classes/Desktop/web/base.yml examples/classes/Desktop/web/harden.yml examples/classes/Desktop/web/iceweasel/base.yml examples/classes/Desktop/web/iceweasel/harden.yml examples/classes/Desktop/web/init.yml examples/classes/Desktop/web/java.yml examples/classes/Desktop/web/locale/AFRICA.yml examples/classes/Desktop/web/locale/ALL.yml examples/classes/Desktop/web/locale/AMERICAS.yml examples/classes/Desktop/web/locale/ASIA.yml examples/classes/Desktop/web/locale/EU.yml examples/classes/Desktop/web/locale/EUROPE.yml examples/classes/Desktop/web/locale/INDIA.yml examples/classes/Framework/base.yml examples/classes/Framework/crypto/base.yml examples/classes/Framework/crypto/gnupg/pinentry/gtk/init.yml examples/classes/Framework/media/base.yml examples/classes/Framework/media/wildmidi/limit.yml examples/classes/Framework/pkg/apt/cli/aptitude.yml examples/classes/Framework/pkg/base.yml examples/classes/Framework/web/webkit/webkit1/gtk/avoid.yml examples/classes/Hardware/base.yml examples/classes/Hardware/gl/hardware/init.yml examples/classes/Hardware/gl/init.yml examples/classes/Hardware/gl/software/avoid.yml examples/classes/Hardware/harden.yml examples/classes/Hardware/laptop/acer/aao725.yml examples/classes/Hardware/laptop/apple/macbook2-1.yml examples/classes/Hardware/laptop/apple/macbook5-1.yml examples/classes/Hardware/laptop/init.yml examples/classes/Hardware/laptop/lenovo/edge145.yml examples/classes/Hardware/motherboard/amd/athlon/64.yml examples/classes/Hardware/motherboard/amd/athlon/init.yml examples/classes/Hardware/motherboard/amd/c60.yml examples/classes/Hardware/motherboard/amd/e1-2500.yml examples/classes/Hardware/motherboard/asus/a7n8x.yml examples/classes/Hardware/motherboard/intel/atom/32bit.yml examples/classes/Hardware/motherboard/intel/baytrail-m.yml examples/classes/Hardware/motherboard/intel/core2duo.yml examples/classes/Hardware/motherboard/intel/pentium3.yml examples/classes/Hardware/motherboard/via/nehemiah.yml examples/classes/Hardware/motherboard/via/samuel2.yml examples/classes/Hardware/net/bluetooth.yml examples/classes/Hardware/net/pac/avoid.yml examples/classes/Hardware/nic/broadcom/sta.yml examples/classes/Hardware/nic/realtek/init.yml examples/classes/Hardware/power.yml examples/classes/Hardware/tools/harden.yml examples/classes/Language/java/base.yml examples/classes/Language/java/init.yml examples/classes/Language/java/openjdk6/avoid.yml examples/classes/Language/java/openjdk6/init.yml examples/classes/Language/java/openjdk7/avoid.yml examples/classes/Language/java/openjdk7/init.yml examples/classes/Service/antivirus.yml examples/classes/Service/base.yml examples/classes/Service/dhcp/client.yml examples/classes/Service/dhcp/init.yml examples/classes/Service/dns/authoritative.yml examples/classes/Service/dns/init.yml examples/classes/Service/git.yml examples/classes/Service/ids.yml examples/classes/Service/init.yml examples/classes/Service/log/init.yml examples/classes/Service/log/remote.yml examples/classes/Service/mail/antispam.yml examples/classes/Service/mail/base.yml examples/classes/Service/mail/imap.yml examples/classes/Service/mail/init.yml examples/classes/Service/mail/list.yml examples/classes/Service/mail/mda.yml examples/classes/Service/mail/mta/init.yml examples/classes/Service/mail/mta/postfix.yml examples/classes/Service/mail/sasl.yml examples/classes/Service/mail/sieve.yml examples/classes/Service/ssh.yml examples/classes/Service/web/apache/gnutls.yml examples/classes/Service/web/apache/init.yml examples/classes/Service/web/apache/uwsgi.yml examples/classes/Service/web/init.yml examples/classes/Service/web/mail/cider.yml examples/classes/Service/web/uwsgi/init.yml examples/classes/Service/web/uwsgi/psgi.yml examples/classes/Service/web/uwsgi/python.yml examples/classes/Service/web/wiki/moinmoin.yml examples/classes/Task/harden/desktop.yml examples/classes/cli/compression/init.yml examples/classes/cli/compression/uncommon.yml examples/classes/cli/gpm.yml examples/classes/cli/less.yml examples/classes/cli/mc.yml examples/classes/cli/ssh-server.yml examples/classes/cli/web.yml examples/classes/hw/acpi/full.yml examples/classes/hw/acpi/init.yml examples/classes/hw/bluetooth.yml examples/classes/hw/crypto.yml examples/classes/hw/firmware.yml examples/classes/hw/mac/init.yml examples/classes/hw/mac/laptop.yml examples/classes/hw/power.yml examples/classes/hw/x86/amd64.yml examples/classes/hw/x86/i486.yml examples/classes/hw/x86/i686.yml examples/classes/x11/init.yml examples/classes/x11/lightdm/gtk.yml examples/classes/x11/lightdm/init.yml examples/nodes/lxp5.yml examples/nodes/parl-greens.yml share/skel/preseed.cfg.in share/skel/script.sh.in Copyright: Unknown License: Unknown Files: README lib/Boxer.pm lib/Boxer/CLI.pm lib/Boxer/CLI/Command.pm lib/Boxer/CLI/Command/About.pm lib/Boxer/CLI/Command/Aliases.pm lib/Boxer/CLI/Command/Commands.pm lib/Boxer/CLI/Command/Compose.pm lib/Boxer/File/WithSkeleton.pm lib/Boxer/Part.pm lib/Boxer/Role/Interact.pm lib/Boxer/Task.pm lib/Boxer/Task/Classify.pm lib/Boxer/Task/Serialize.pm lib/Boxer/Types.pm lib/Boxer/World.pm lib/Boxer/World/Flat.pm lib/Boxer/World/Reclass.pm Copyright: Copyright © 2013-2016 Jonas Smedegaard. License: GPL-1.0+ or Artistic-1.0 Files: Changes META.json META.yml bin/boxer dist.ini doap.ttl t/bootstrap.t t/classify.t t/compose.t t/namespaces_clean.t t/serialize.t Copyright: Copyright 2019 Jonas Smedegaard. License: GPL-1.0+ or Artistic-1.0 Files: t/00_compile.t t/00_compile_scripts.t t/01_app_help.t t/fixme.t t/minimumversion.t t/pod.t Copyright: Copyright 2018 Jonas Smedegaard. License: GPL-1.0+ or Artistic-1.0 Files: COPYRIGHT CREDITS SIGNATURE Copyright: None License: public-domain Files: lib/Boxer/CLI/Command/Bootstrap.pm lib/Boxer/Task/Bootstrap.pm Copyright: Copyright © 2019 Jonas Smedegaard. License: GPL-1.0+ or Artistic-1.0 Files: lib/Boxer/Part/Reclass.pm Copyright: Copyright © 2016 Jonas Smedegaard. License: GPL-1.0+ or Artistic-1.0 Files: Makefile.PL Copyright: Copyright 2013 Toby Inkster. License: GPL-1.0+ or Artistic-1.0 License: Artistic-1.0 This software is Copyright (c) 2019 by the copyright holder(s). This is free software, licensed under: The Artistic License 1.0 License: GPL-1.0 This software is Copyright (c) 2019 by the copyright holder(s). This is free software, licensed under: The GNU General Public License, Version 1, February 1989 CREDITS000644001750001750 16013450370143 13445 0ustar00jonasjonas000000000000Boxer-v1.4.0Maintainer: - Jonas Smedegaard (JONASS) Thanks: - Toby Inkster (TOBYINK) Changes000644001750001750 2136713450370143 13774 0ustar00jonasjonas000000000000Boxer-v1.4.0Boxer ===== Created: 2013-02-12 Home page: Home page: Bug tracker: Maintainer: Jonas Smedegaard (JONASS) 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. INSTALL000644001750001750 237213450370142 13504 0ustar00jonasjonas000000000000Boxer-v1.4.0Boxer installation ================== Preparations ------------ On Debian 8+ (Jessie or newer), or Debian unstable (Sid), boxer is available as a regular package: apt install boxer Alternatively install from CPAN, and only helper tools from Debian: cpanm Boxer apt install reclass apt install mmdebstrap || apt install debootstrap Usage ----- cp /usr/share/doc/boxer/examples/nodes/parl-greens.yml . boxer compose parl-greens cp /usr/share/doc/boxer/examples/nodes/lxp5.yml . boxer bootstrap lxp5 -- lxp5_rootfs sudo -- boxer bootstrap --helper debootstrap lxp5 -- lxp5_rootfs NB! If code was pulled from CPAN or git, you may need to adapt location of example file and environment variables PATH PYTHONPATH PERL5LIB. Development ----------- git clone https://salsa.debian.org/boxer-team/boxer cd boxer PERL5LIB=lib bin/boxer compose --skeldir share/skel --datadir examples parl-greens PERL5LIB=lib bin/boxer bootstrap --skeldir share/skel --datadir examples lxp5 You may want to explore the larger dataset in active use: git clone https://salsa.debian.org/boxer-team/boxer-data.git System compositions are expressed using reclass. See the README in the sample data dir for more info on its structure. LICENSE000644001750001750 4367113450370143 13510 0ustar00jonasjonas000000000000Boxer-v1.4.0This software is copyright (c) 2019 by Jonas Smedegaard. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2019 by Jonas Smedegaard. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2019 by Jonas Smedegaard. This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End MANIFEST000644001750001750 2112313450370144 13621 0ustar00jonasjonas000000000000Boxer-v1.4.0COPYRIGHT CREDITS Changes INSTALL LICENSE MANIFEST META.json META.yml Makefile.PL README SIGNATURE TODO bin/boxer dist.ini doap.ttl doc/boxer.svg examples/classes/Admin/apt/auto/all.yml examples/classes/Admin/apt/auto/core.yml examples/classes/Admin/apt/auto/functions.yml examples/classes/Admin/apt/init.yml examples/classes/Admin/apt/popcon.yml examples/classes/Admin/apt/tools/changes.yml examples/classes/Admin/apt/tools/init.yml examples/classes/Admin/auto.yml examples/classes/Admin/backup/init.yml examples/classes/Admin/backup/remote.yml examples/classes/Admin/base.yml examples/classes/Admin/disk/lvm.yml examples/classes/Admin/etc/functions.yml examples/classes/Admin/etc/track.yml examples/classes/Admin/harden/account/init.yml examples/classes/Admin/harden/account/strong.yml examples/classes/Admin/harden/init.yml examples/classes/Admin/harden/trustweb.yml examples/classes/Admin/init.yml examples/classes/Console/compression.yml examples/classes/Console/editor/init.yml examples/classes/Console/editor/vim.yml examples/classes/Console/filemanager.yml examples/classes/Console/init.yml examples/classes/Console/mail/init.yml examples/classes/Console/mail/list/init.yml examples/classes/Console/mail/list/tools.yml examples/classes/Console/mail/mutt.yml examples/classes/Console/mail/tools.yml examples/classes/Console/media/audio/alsa.yml examples/classes/Console/media/init.yml examples/classes/Console/mobile/init.yml examples/classes/Console/mobile/sync.yml examples/classes/Console/mouse.yml examples/classes/Console/multiplexer/init.yml examples/classes/Console/tools.yml examples/classes/Desktop/base.yml examples/classes/Desktop/chat/init.yml examples/classes/Desktop/chat/pidgin/crypto.yml examples/classes/Desktop/chat/pidgin/init.yml examples/classes/Desktop/email/base.yml examples/classes/Desktop/email/bidi.yml examples/classes/Desktop/email/harden.yml examples/classes/Desktop/email/icedove/base.yml examples/classes/Desktop/email/icedove/harden.yml examples/classes/Desktop/email/init.yml examples/classes/Desktop/email/locale/ALL.yml examples/classes/Desktop/email/locale/AMERICAS.yml examples/classes/Desktop/email/locale/ASIA.yml examples/classes/Desktop/email/locale/EU.yml examples/classes/Desktop/email/locale/EUROPE.yml examples/classes/Desktop/email/locale/INDIA.yml examples/classes/Desktop/harden.yml examples/classes/Desktop/init.yml examples/classes/Desktop/locale/EU.yml examples/classes/Desktop/media/audio/alsa.yml examples/classes/Desktop/media/audio/pulseaudio.yml examples/classes/Desktop/media/init.yml examples/classes/Desktop/mobile/init.yml examples/classes/Desktop/mobile/sync.yml examples/classes/Desktop/office/init.yml examples/classes/Desktop/office/locale/AFRICA.yml examples/classes/Desktop/office/locale/ALL.yml examples/classes/Desktop/office/locale/AMERICAS.yml examples/classes/Desktop/office/locale/ASIA.yml examples/classes/Desktop/office/locale/EU.yml examples/classes/Desktop/office/locale/EUROPE.yml examples/classes/Desktop/office/locale/INDIA.yml examples/classes/Desktop/office/locale/ZA.yml examples/classes/Desktop/office/presentation.yml examples/classes/Desktop/office/spreadsheet.yml examples/classes/Desktop/office/word-processor.yml examples/classes/Desktop/scheduling/init.yml examples/classes/Desktop/screensaver/unicode.yml examples/classes/Desktop/tools/harden.yml examples/classes/Desktop/tools/pgp/gtk.yml examples/classes/Desktop/tools/pgp/init.yml examples/classes/Desktop/web/base.yml examples/classes/Desktop/web/harden.yml examples/classes/Desktop/web/iceweasel/base.yml examples/classes/Desktop/web/iceweasel/harden.yml examples/classes/Desktop/web/init.yml examples/classes/Desktop/web/java.yml examples/classes/Desktop/web/locale/AFRICA.yml examples/classes/Desktop/web/locale/ALL.yml examples/classes/Desktop/web/locale/AMERICAS.yml examples/classes/Desktop/web/locale/ASIA.yml examples/classes/Desktop/web/locale/EU.yml examples/classes/Desktop/web/locale/EUROPE.yml examples/classes/Desktop/web/locale/INDIA.yml examples/classes/Framework/base.yml examples/classes/Framework/crypto/base.yml examples/classes/Framework/crypto/gnupg/pinentry/gtk/init.yml examples/classes/Framework/media/base.yml examples/classes/Framework/media/wildmidi/limit.yml examples/classes/Framework/pkg/apt/cli/aptitude.yml examples/classes/Framework/pkg/base.yml examples/classes/Framework/web/webkit/webkit1/gtk/avoid.yml examples/classes/Hardware/base.yml examples/classes/Hardware/gl/hardware/init.yml examples/classes/Hardware/gl/init.yml examples/classes/Hardware/gl/software/avoid.yml examples/classes/Hardware/harden.yml examples/classes/Hardware/laptop/acer/aao725.yml examples/classes/Hardware/laptop/apple/macbook2-1.yml examples/classes/Hardware/laptop/apple/macbook5-1.yml examples/classes/Hardware/laptop/init.yml examples/classes/Hardware/laptop/lenovo/edge145.yml examples/classes/Hardware/motherboard/amd/athlon/64.yml examples/classes/Hardware/motherboard/amd/athlon/init.yml examples/classes/Hardware/motherboard/amd/c60.yml examples/classes/Hardware/motherboard/amd/e1-2500.yml examples/classes/Hardware/motherboard/asus/a7n8x.yml examples/classes/Hardware/motherboard/intel/atom/32bit.yml examples/classes/Hardware/motherboard/intel/baytrail-m.yml examples/classes/Hardware/motherboard/intel/core2duo.yml examples/classes/Hardware/motherboard/intel/pentium3.yml examples/classes/Hardware/motherboard/via/nehemiah.yml examples/classes/Hardware/motherboard/via/samuel2.yml examples/classes/Hardware/net/bluetooth.yml examples/classes/Hardware/net/pac/avoid.yml examples/classes/Hardware/nic/broadcom/sta.yml examples/classes/Hardware/nic/realtek/init.yml examples/classes/Hardware/power.yml examples/classes/Hardware/tools/harden.yml examples/classes/Language/java/base.yml examples/classes/Language/java/init.yml examples/classes/Language/java/openjdk6/avoid.yml examples/classes/Language/java/openjdk6/init.yml examples/classes/Language/java/openjdk7/avoid.yml examples/classes/Language/java/openjdk7/init.yml examples/classes/Service/antivirus.yml examples/classes/Service/base.yml examples/classes/Service/dhcp/client.yml examples/classes/Service/dhcp/init.yml examples/classes/Service/dns/authoritative.yml examples/classes/Service/dns/init.yml examples/classes/Service/git.yml examples/classes/Service/ids.yml examples/classes/Service/init.yml examples/classes/Service/log/init.yml examples/classes/Service/log/remote.yml examples/classes/Service/mail/antispam.yml examples/classes/Service/mail/base.yml examples/classes/Service/mail/imap.yml examples/classes/Service/mail/init.yml examples/classes/Service/mail/list.yml examples/classes/Service/mail/mda.yml examples/classes/Service/mail/mta/init.yml examples/classes/Service/mail/mta/postfix.yml examples/classes/Service/mail/sasl.yml examples/classes/Service/mail/sieve.yml examples/classes/Service/ssh.yml examples/classes/Service/web/apache/gnutls.yml examples/classes/Service/web/apache/init.yml examples/classes/Service/web/apache/uwsgi.yml examples/classes/Service/web/init.yml examples/classes/Service/web/mail/cider.yml examples/classes/Service/web/uwsgi/init.yml examples/classes/Service/web/uwsgi/psgi.yml examples/classes/Service/web/uwsgi/python.yml examples/classes/Service/web/wiki/moinmoin.yml examples/classes/Task/harden/desktop.yml examples/classes/cli/compression/init.yml examples/classes/cli/compression/uncommon.yml examples/classes/cli/gpm.yml examples/classes/cli/less.yml examples/classes/cli/mc.yml examples/classes/cli/ssh-server.yml examples/classes/cli/web.yml examples/classes/hw/acpi/full.yml examples/classes/hw/acpi/init.yml examples/classes/hw/bluetooth.yml examples/classes/hw/crypto.yml examples/classes/hw/firmware.yml examples/classes/hw/mac/init.yml examples/classes/hw/mac/laptop.yml examples/classes/hw/power.yml examples/classes/hw/x86/amd64.yml examples/classes/hw/x86/i486.yml examples/classes/hw/x86/i686.yml examples/classes/x11/init.yml examples/classes/x11/lightdm/gtk.yml examples/classes/x11/lightdm/init.yml examples/nodes/lxp5.yml examples/nodes/parl-greens.yml lib/Boxer.pm lib/Boxer/CLI.pm lib/Boxer/CLI/Command.pm lib/Boxer/CLI/Command/About.pm lib/Boxer/CLI/Command/Aliases.pm lib/Boxer/CLI/Command/Bootstrap.pm lib/Boxer/CLI/Command/Commands.pm lib/Boxer/CLI/Command/Compose.pm lib/Boxer/File/WithSkeleton.pm lib/Boxer/Part.pm lib/Boxer/Part/Reclass.pm lib/Boxer/Role/Interact.pm lib/Boxer/Task.pm lib/Boxer/Task/Bootstrap.pm lib/Boxer/Task/Classify.pm lib/Boxer/Task/Serialize.pm lib/Boxer/Types.pm lib/Boxer/World.pm lib/Boxer/World/Flat.pm lib/Boxer/World/Reclass.pm share/skel/preseed.cfg.in share/skel/script.sh.in t/00_compile.t t/00_compile_scripts.t t/01_app_help.t t/bootstrap.t t/classify.t t/compose.t t/fixme.t t/minimumversion.t t/namespaces_clean.t t/pod.t t/serialize.t META.json000644001750001750 1230013450370144 14106 0ustar00jonasjonas000000000000Boxer-v1.4.0{ "abstract" : "boxer command line utils", "author" : [ "Jonas Smedegaard (JONASS) " ], "dynamic_config" : 0, "generated_by" : "Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010", "keywords" : [ "Debian", "Distribution" ], "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Boxer", "no_index" : { "directory" : [ "eg", "examples", "inc", "t", "xt" ] }, "optional_features" : {}, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "6.17", "File::ShareDir::Install" : "0.02" } }, "runtime" : { "requires" : { "App::Cmd" : "0", "Capture::Tiny" : "0", "Class::XSAccessor" : "0", "File::BaseDir" : "0", "File::ShareDir" : "0", "IPC::System::Simple" : "0", "Log::Any::Adapter::Screen" : "0", "Module::Runtime" : "0", "Moo" : "1.001000", "MooX::Role::Logger" : "0", "MooX::StrictConstructor" : "0", "Path::Tiny" : "0.054", "Role::Commons" : "0", "Template::Tiny" : "0.11", "Try::Tiny" : "0", "Types::Path::Tiny" : "0", "Types::Standard" : "0", "YAML::XS" : "0", "autodie" : "0", "match::simple" : "0", "namespace::autoclean" : "0.16", "perl" : "5.014000", "strictures" : "2" } }, "test" : { "requires" : { "English" : "0", "File::Spec" : "0", "File::Which" : "0", "Test::CleanNamespaces" : "0", "Test::Compile" : "0", "Test::Fatal" : "0", "Test::File::Contents" : "0", "Test::Fixme" : "0", "Test::MinimumVersion" : "0", "Test::More" : "0.61", "Test::Pod" : "1.00", "Test::Synopsis" : "0" } } }, "provides" : { "Boxer" : { "file" : "lib/Boxer.pm", "version" : "v1.4.0" }, "Boxer::CLI" : { "file" : "lib/Boxer/CLI.pm", "version" : "v1.4.0" }, "Boxer::CLI::Command" : { "file" : "lib/Boxer/CLI/Command.pm", "version" : "v1.4.0" }, "Boxer::CLI::Command::About" : { "file" : "lib/Boxer/CLI/Command/About.pm", "version" : "v1.4.0" }, "Boxer::CLI::Command::Aliases" : { "file" : "lib/Boxer/CLI/Command/Aliases.pm", "version" : "v1.4.0" }, "Boxer::CLI::Command::Bootstrap" : { "file" : "lib/Boxer/CLI/Command/Bootstrap.pm", "version" : "v1.4.0" }, "Boxer::CLI::Command::Commands" : { "file" : "lib/Boxer/CLI/Command/Commands.pm", "version" : "v1.4.0" }, "Boxer::CLI::Command::Compose" : { "file" : "lib/Boxer/CLI/Command/Compose.pm", "version" : "v1.4.0" }, "Boxer::File::WithSkeleton" : { "file" : "lib/Boxer/File/WithSkeleton.pm", "version" : "v1.4.0" }, "Boxer::Part" : { "file" : "lib/Boxer/Part.pm", "version" : "v1.4.0" }, "Boxer::Part::Reclass" : { "file" : "lib/Boxer/Part/Reclass.pm", "version" : "v1.4.0" }, "Boxer::Role::Interact" : { "file" : "lib/Boxer/Role/Interact.pm", "version" : "v1.4.0" }, "Boxer::Task" : { "file" : "lib/Boxer/Task.pm", "version" : "v1.4.0" }, "Boxer::Task::Bootstrap" : { "file" : "lib/Boxer/Task/Bootstrap.pm", "version" : "v1.4.0" }, "Boxer::Task::Classify" : { "file" : "lib/Boxer/Task/Classify.pm", "version" : "v1.4.0" }, "Boxer::Task::Serialize" : { "file" : "lib/Boxer/Task/Serialize.pm", "version" : "v1.4.0" }, "Boxer::Types" : { "file" : "lib/Boxer/Types.pm", "version" : "v1.4.0" }, "Boxer::World" : { "file" : "lib/Boxer/World.pm", "version" : "v1.4.0" }, "Boxer::World::Flat" : { "file" : "lib/Boxer/World/Flat.pm", "version" : "v1.4.0" }, "Boxer::World::Reclass" : { "file" : "lib/Boxer/World/Reclass.pm", "version" : "v1.4.0" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "http://rt.cpan.org/Dist/Display.html?Queue=Boxer" }, "homepage" : "https://metacpan.org/release/Boxer", "license" : [ "http://dev.perl.org/licenses/" ], "repository" : { "type" : "git", "web" : "https://salsa.debian.org/boxer-team/boxer" }, "x_identifier" : "http://purl.org/NET/cpan-uri/dist/Boxer/project" }, "version" : "v1.4.0", "x_help_wanted" : [ "tester", "documenter" ], "x_provides_scripts" : { "boxer" : { "file" : "bin/boxer" } }, "x_serialization_backend" : "JSON::PP version 2.97001" } META.yml000644001750001750 647613450370144 13737 0ustar00jonasjonas000000000000Boxer-v1.4.0--- abstract: 'boxer command line utils' author: - 'Jonas Smedegaard (JONASS) ' build_requires: English: '0' File::Spec: '0' File::Which: '0' Test::CleanNamespaces: '0' Test::Compile: '0' Test::Fatal: '0' Test::File::Contents: '0' Test::Fixme: '0' Test::MinimumVersion: '0' Test::More: '0.61' Test::Pod: '1.00' Test::Synopsis: '0' configure_requires: ExtUtils::MakeMaker: '6.17' File::ShareDir::Install: '0.02' dynamic_config: 0 generated_by: 'Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010' keywords: - Debian - Distribution license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Boxer no_index: directory: - eg - examples - inc - t - xt optional_features: {} provides: Boxer: file: lib/Boxer.pm version: v1.4.0 Boxer::CLI: file: lib/Boxer/CLI.pm version: v1.4.0 Boxer::CLI::Command: file: lib/Boxer/CLI/Command.pm version: v1.4.0 Boxer::CLI::Command::About: file: lib/Boxer/CLI/Command/About.pm version: v1.4.0 Boxer::CLI::Command::Aliases: file: lib/Boxer/CLI/Command/Aliases.pm version: v1.4.0 Boxer::CLI::Command::Bootstrap: file: lib/Boxer/CLI/Command/Bootstrap.pm version: v1.4.0 Boxer::CLI::Command::Commands: file: lib/Boxer/CLI/Command/Commands.pm version: v1.4.0 Boxer::CLI::Command::Compose: file: lib/Boxer/CLI/Command/Compose.pm version: v1.4.0 Boxer::File::WithSkeleton: file: lib/Boxer/File/WithSkeleton.pm version: v1.4.0 Boxer::Part: file: lib/Boxer/Part.pm version: v1.4.0 Boxer::Part::Reclass: file: lib/Boxer/Part/Reclass.pm version: v1.4.0 Boxer::Role::Interact: file: lib/Boxer/Role/Interact.pm version: v1.4.0 Boxer::Task: file: lib/Boxer/Task.pm version: v1.4.0 Boxer::Task::Bootstrap: file: lib/Boxer/Task/Bootstrap.pm version: v1.4.0 Boxer::Task::Classify: file: lib/Boxer/Task/Classify.pm version: v1.4.0 Boxer::Task::Serialize: file: lib/Boxer/Task/Serialize.pm version: v1.4.0 Boxer::Types: file: lib/Boxer/Types.pm version: v1.4.0 Boxer::World: file: lib/Boxer/World.pm version: v1.4.0 Boxer::World::Flat: file: lib/Boxer/World/Flat.pm version: v1.4.0 Boxer::World::Reclass: file: lib/Boxer/World/Reclass.pm version: v1.4.0 requires: App::Cmd: '0' Capture::Tiny: '0' Class::XSAccessor: '0' File::BaseDir: '0' File::ShareDir: '0' IPC::System::Simple: '0' Log::Any::Adapter::Screen: '0' Module::Runtime: '0' Moo: '1.001000' MooX::Role::Logger: '0' MooX::StrictConstructor: '0' Path::Tiny: '0.054' Role::Commons: '0' Template::Tiny: '0.11' Try::Tiny: '0' Types::Path::Tiny: '0' Types::Standard: '0' YAML::XS: '0' autodie: '0' match::simple: '0' namespace::autoclean: '0.16' perl: '5.014000' strictures: '2' resources: Identifier: http://purl.org/NET/cpan-uri/dist/Boxer/project bugtracker: http://rt.cpan.org/Dist/Display.html?Queue=Boxer homepage: https://metacpan.org/release/Boxer license: http://dev.perl.org/licenses/ repository: https://salsa.debian.org/boxer-team/boxer version: v1.4.0 x_help_wanted: - tester - documenter x_provides_scripts: boxer: file: bin/boxer x_serialization_backend: 'CPAN::Meta::YAML version 0.018' Makefile.PL000644001750001750 2277113450370144 14454 0ustar00jonasjonas000000000000Boxer-v1.4.0use strict; use ExtUtils::MakeMaker 6.17; my $EUMM = eval( $ExtUtils::MakeMaker::VERSION ); my $meta = { "abstract" => "boxer command line utils", "author" => ["Jonas Smedegaard (JONASS) "], "dynamic_config" => 0, "generated_by" => "Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010", "keywords" => ["Debian", "Distribution"], "license" => ["perl_5"], "meta-spec" => { url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec", version => 2, }, "name" => "Boxer", "no_index" => { directory => ["eg", "examples", "inc", "t", "xt"] }, "prereqs" => { configure => { requires => { "ExtUtils::MakeMaker" => 6.17, "File::ShareDir::Install" => 0.02 }, }, runtime => { requires => { "App::Cmd" => 0, "autodie" => 0, "Capture::Tiny" => 0, "Class::XSAccessor" => 0, "File::BaseDir" => 0, "File::ShareDir" => 0, "IPC::System::Simple" => 0, "Log::Any::Adapter::Screen" => 0, "match::simple" => 0, "Module::Runtime" => 0, "Moo" => "1.001000", "MooX::Role::Logger" => 0, "MooX::StrictConstructor" => 0, "namespace::autoclean" => 0.16, "Path::Tiny" => 0.054, "perl" => "5.014000", "Role::Commons" => 0, "strictures" => 2, "Template::Tiny" => 0.11, "Try::Tiny" => 0, "Types::Path::Tiny" => 0, "Types::Standard" => 0, "YAML::XS" => 0, }, }, test => { requires => { "English" => 0, "File::Spec" => 0, "File::Which" => 0, "Test::CleanNamespaces" => 0, "Test::Compile" => 0, "Test::Fatal" => 0, "Test::File::Contents" => 0, "Test::Fixme" => 0, "Test::MinimumVersion" => 0, "Test::More" => 0.61, "Test::Pod" => "1.00", "Test::Synopsis" => 0, }, }, }, "provides" => { "Boxer" => { file => "lib/Boxer.pm", version => "v1.4.0" }, "Boxer::CLI" => { file => "lib/Boxer/CLI.pm", version => "v1.4.0" }, "Boxer::CLI::Command" => { file => "lib/Boxer/CLI/Command.pm", version => "v1.4.0" }, "Boxer::CLI::Command::About" => { file => "lib/Boxer/CLI/Command/About.pm", version => "v1.4.0" }, "Boxer::CLI::Command::Aliases" => { file => "lib/Boxer/CLI/Command/Aliases.pm", version => "v1.4.0" }, "Boxer::CLI::Command::Bootstrap" => { file => "lib/Boxer/CLI/Command/Bootstrap.pm", version => "v1.4.0" }, "Boxer::CLI::Command::Commands" => { file => "lib/Boxer/CLI/Command/Commands.pm", version => "v1.4.0" }, "Boxer::CLI::Command::Compose" => { file => "lib/Boxer/CLI/Command/Compose.pm", version => "v1.4.0" }, "Boxer::File::WithSkeleton" => { file => "lib/Boxer/File/WithSkeleton.pm", version => "v1.4.0" }, "Boxer::Part" => { file => "lib/Boxer/Part.pm", version => "v1.4.0" }, "Boxer::Part::Reclass" => { file => "lib/Boxer/Part/Reclass.pm", version => "v1.4.0" }, "Boxer::Role::Interact" => { file => "lib/Boxer/Role/Interact.pm", version => "v1.4.0" }, "Boxer::Task" => { file => "lib/Boxer/Task.pm", version => "v1.4.0" }, "Boxer::Task::Bootstrap" => { file => "lib/Boxer/Task/Bootstrap.pm", version => "v1.4.0" }, "Boxer::Task::Classify" => { file => "lib/Boxer/Task/Classify.pm", version => "v1.4.0" }, "Boxer::Task::Serialize" => { file => "lib/Boxer/Task/Serialize.pm", version => "v1.4.0" }, "Boxer::Types" => { file => "lib/Boxer/Types.pm", version => "v1.4.0" }, "Boxer::World" => { file => "lib/Boxer/World.pm", version => "v1.4.0" }, "Boxer::World::Flat" => { file => "lib/Boxer/World/Flat.pm", version => "v1.4.0" }, "Boxer::World::Reclass" => { file => "lib/Boxer/World/Reclass.pm", version => "v1.4.0" }, }, "release_status" => "stable", "resources" => { bugtracker => { web => "http://rt.cpan.org/Dist/Display.html?Queue=Boxer" }, homepage => "https://metacpan.org/release/Boxer", license => ["http://dev.perl.org/licenses/"], repository => { type => "git", web => "https://salsa.debian.org/boxer-team/boxer" }, x_identifier => "http://purl.org/NET/cpan-uri/dist/Boxer/project", }, "version" => "v1.4.0", "x_help_wanted" => ["tester", "documenter"], "x_provides_scripts" => { boxer => { file => "bin/boxer" } }, }; my %dynamic_config; my %WriteMakefileArgs = ( ABSTRACT => $meta->{abstract}, AUTHOR => ($EUMM >= 6.5702 ? $meta->{author} : $meta->{author}[0]), DISTNAME => $meta->{name}, VERSION => $meta->{version}, EXE_FILES => [ map $_->{file}, values %{ $meta->{x_provides_scripts} || {} } ], NAME => do { my $n = $meta->{name}; $n =~ s/-/::/g; $n }, test => { TESTS => "t/*.t" }, %dynamic_config, ); $WriteMakefileArgs{LICENSE} = $meta->{license}[0] if $EUMM >= 6.3001; sub deps { my %r; for my $stage (@_) { for my $dep (keys %{$meta->{prereqs}{$stage}{requires}}) { next if $dep eq 'perl'; my $ver = $meta->{prereqs}{$stage}{requires}{$dep}; $r{$dep} = $ver if !exists($r{$dep}) || $ver >= $r{$dep}; } } \%r; } my ($build_requires, $configure_requires, $runtime_requires, $test_requires); if ($EUMM >= 6.6303) { $WriteMakefileArgs{BUILD_REQUIRES} ||= deps('build'); $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{TEST_REQUIRES} ||= deps('test'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime'); } elsif ($EUMM >= 6.5503) { $WriteMakefileArgs{BUILD_REQUIRES} ||= deps('build', 'test'); $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime'); } elsif ($EUMM >= 6.52) { $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime', 'build', 'test'); } else { $WriteMakefileArgs{PREREQ_PM} ||= deps('configure', 'build', 'test', 'runtime'); } { my ($minperl) = reverse sort( grep defined && /^[0-9]+(\.[0-9]+)?$/, map $meta->{prereqs}{$_}{requires}{perl}, qw( configure build runtime ) ); if (defined($minperl)) { die "Installing $meta->{name} requires Perl >= $minperl" unless $] >= $minperl; $WriteMakefileArgs{MIN_PERL_VERSION} ||= $minperl if $EUMM >= 6.48; } } sub FixMakefile { return unless -d 'inc'; my $file = shift; local *MAKEFILE; open MAKEFILE, "< $file" or die "FixMakefile: Couldn't open $file: $!; bailing out"; my $makefile = do { local $/; }; close MAKEFILE or die $!; $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /; $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g; $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g; $makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m; $makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m; open MAKEFILE, "> $file" or die "FixMakefile: Couldn't open $file: $!; bailing out"; print MAKEFILE $makefile or die $!; close MAKEFILE or die $!; } use File::ShareDir::Install; install_share 'share'; { package MY; use File::ShareDir::Install qw(postamble) }; my $mm = WriteMakefile(%WriteMakefileArgs); FixMakefile($mm->{FIRST_MAKEFILE} || 'Makefile'); exit(0); README000644001750001750 310613450370143 13330 0ustar00jonasjonas000000000000Boxer-v1.4.0NAME Boxer - system deployment ninja tricks VERSION Version v1.4.0 DESCRIPTION Framework for system deployment ninja tricks. See boxer for further information. BUGS Please report any bugs to . SEE ALSO Debian Installer , tasksel , debconf preseeding , Hands-off Debian Pure Blends Footprintless FAI class system Elbe commands isar Debathena config-package-dev germinate , , , , AUTHOR Jonas Smedegaard ``. COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. SIGNATURE000644001750001750 6456213450370144 13772 0ustar00jonasjonas000000000000Boxer-v1.4.0This file contains message digests of all files listed in MANIFEST, signed via the Module::Signature module, version 0.83. To verify the content in this distribution, first make sure you have Module::Signature installed, then type: % cpansign -v It will check each file's integrity, as well as the signature's validity. If "==> Signature verified OK! <==" is not displayed, the distribution may already have been compromised, and you should not run its Makefile.PL or Build.PL. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 SHA256 a8fa5dfeeba0fab0a40f2225cf7daf56ceb6871324c50108f69df86b7f18c0bb COPYRIGHT SHA256 abced6cccb580b9dccab6c8c7a3233b03851b8afe046300327547a07357d7313 CREDITS SHA256 fd84c0739a2edcbbd176edaf1facc47990ad3736d385e39bf8200ea698448e9d Changes SHA256 a6015472a8cd75673999dba595dcdd0c975884ba914973508635ce4231b47bbe INSTALL SHA256 f93408df5e85882cfa5289d55f7beeece0c4c331584e0213437b99406defa96f LICENSE SHA256 33587802c62b0c702174ac291fabd7912671d052e7606cd6e0e2ae329d2f83a5 MANIFEST SHA256 e43a9953e25dc987303bb7bb07370f2ce2d1d7d122878a5a4de21aae08ab824f META.json SHA256 f435403783f077e238130a2dfed10edd35039b327c47aca72e6a8a63a513804b META.yml SHA256 7a7800b6b113e4591b8cbc5cdc118adf866e2ae7f1eb6b1cdb15593f17ee7be0 Makefile.PL SHA256 67b53315693e49ef211910562fc7bc37e35a67b6f3d3f700cc0fa9cdcbf5122c README SHA256 f904b3f57b0f5173b463a3a4b4fa16184da2be311f1f6345f80c18965ff088e2 TODO SHA256 b9174e2c838a1db261f346e94d591cd4eee81a94463a349e0113be43b931d45e bin/boxer SHA256 54c6cffb04c15cff664b2d6acced0efab3278700012a6c9cf616fceec0dc6b7b dist.ini SHA256 000071010dc4616b92b5c63d1f4ebd9c1c1cb059a9502239fbce3b0fa44a04ff doap.ttl SHA256 e241bc74e6beb8a668e45ca498a089024460eb402f44435f73e8e250e420e10b doc/boxer.svg SHA256 b66b4dac817ea3a0e2566bf0e597d810135799657411a77f84b4ef40f47619ab examples/classes/Admin/apt/auto/all.yml SHA256 6cb4808aff6d542bf09470fa76c6c2561e97fe1f76e0328bf18aa4988cbda623 examples/classes/Admin/apt/auto/core.yml SHA256 0b063b5b2cdbf8be7e64732ad361ebf38154d821befadb5041cb58e77dd215a0 examples/classes/Admin/apt/auto/functions.yml SHA256 f28be8e39763cc48b75e36cf7bbe6607b4f2235ef2999d328a7fbca12fe1201b examples/classes/Admin/apt/init.yml SHA256 daf98604e3df4ddb7d8153ae6a2cbbe58fe6b21441bda277593701a294c859af examples/classes/Admin/apt/popcon.yml SHA256 137388ef073c7fc577d329e28d880749d8f1449fccfa1e4461154ab889b793e3 examples/classes/Admin/apt/tools/changes.yml SHA256 d0c45103d760ccb74a9ff9224fe3c800c8262c192b7ab1dcf83928459650f504 examples/classes/Admin/apt/tools/init.yml SHA256 67cde8ce79c05a2ad83d97f0c686edad8d868311f6dd77c1a9d7c1a4e9a4bac6 examples/classes/Admin/auto.yml SHA256 0fd9cff45faa9b48e142fefd620d7d9e07fccbc4d8877d06b155a86a9ef15a09 examples/classes/Admin/backup/init.yml SHA256 2d695ec370293d9bfa5f330e9c0cb1b65a20530854ff83ad3dee663f00350358 examples/classes/Admin/backup/remote.yml SHA256 a65a0fbbcda485840eff0d99782790e7f0a3443186a5d20e564ab2a9006e4dcd examples/classes/Admin/base.yml SHA256 706ed8af3e1d3389695095d234c99ba4f59950dc71a291ceb52598746a2e9baa examples/classes/Admin/disk/lvm.yml SHA256 f0dc2ec970c1b5b97cd84a40ff023d7f825cae9ef8a6b1d29bb0504941db3c26 examples/classes/Admin/etc/functions.yml SHA256 2dd906d87dc5fec29b597f95d685f1907dcb130e528c27c3948e9153e0f7bc56 examples/classes/Admin/etc/track.yml SHA256 bc462230c1ac08ba9fddd9a7b1a1acfe84d227e9bc590f81894ef9864fc3b0ed examples/classes/Admin/harden/account/init.yml SHA256 caec0ce43b852c2513745d2e828dceccd238b1c57ba7727166de70164e17daaa examples/classes/Admin/harden/account/strong.yml SHA256 06fe601afadc1c8c1b48e82733acbe57c58b7980cda43fc3774262778b27133f examples/classes/Admin/harden/init.yml SHA256 c8d4de0babbc82069e4590486bad86d7bcd7ce4e2abb51da67cfef2d35be1eff examples/classes/Admin/harden/trustweb.yml SHA256 a65a0fbbcda485840eff0d99782790e7f0a3443186a5d20e564ab2a9006e4dcd examples/classes/Admin/init.yml SHA256 78cea1e2988fa88ec850291156e55d2cab56b9dbc9cebf74bd7e7cd28287395d examples/classes/Console/compression.yml SHA256 a371d419b9dc34e4624cf3fd89f15f63c695ac2ba3045ad941e6ebdbfad568d4 examples/classes/Console/editor/init.yml SHA256 ae8d0a96370496f100d552626345641468f03caadadf6b098fb710bdd9c22f36 examples/classes/Console/editor/vim.yml SHA256 caa7fb5bcc8041877affe1065d51879f0f4e214b0fb605cd284e3dc5986c67ab examples/classes/Console/filemanager.yml SHA256 02e03337ef962cdf47b4ebb7451d302a1b13d93c04a275f931bf2a8b4e8192b5 examples/classes/Console/init.yml SHA256 101af9cc23790f09df5ef74ce92328b0f2769af2380adc36a3b04bdfe1980a1b examples/classes/Console/mail/init.yml SHA256 425d6329fc4111299c5301d1750865f0aa0d0bd84ec81ad05173df43518829e5 examples/classes/Console/mail/list/init.yml SHA256 9e91908635fd150fe5978690f79d9709925e5fa502f351172a5a9d780a754747 examples/classes/Console/mail/list/tools.yml SHA256 bea9116fd6bb471a3699bb29b1517aa66eeab9fce65d840e4e0a1ce225e125b6 examples/classes/Console/mail/mutt.yml SHA256 80cde7f2f01b79435598df53843480c2799f465b52541094055fdb28969477a0 examples/classes/Console/mail/tools.yml SHA256 5c172636af8f531478a70b610439012d18598779347382f9f7eae2bafc877d85 examples/classes/Console/media/audio/alsa.yml SHA256 223fa71a91f040ce1200eba8f52dfe953eebfcdeea04abed5e44fc5090526287 examples/classes/Console/media/init.yml SHA256 d8eb525d79ca0f8a3b2314f4c54fe812b2ee45fa6899e07478fbdd702365578e examples/classes/Console/mobile/init.yml SHA256 dd15d0768862101a198bb4c384844893a2d7e8417d877c8af92eac437669ad9a examples/classes/Console/mobile/sync.yml SHA256 cb3038a3e316fcbfb1864f313ca44764beba7182d43783c27e6de16aaaa09e8d examples/classes/Console/mouse.yml SHA256 70be8a60fa9101f0a88d4e2383dd31bc4e7aa443b537bcbfa702decb830a9c55 examples/classes/Console/multiplexer/init.yml SHA256 f07f888e0f8c9d0fe1c57821f8f38c36fa97ca10c48167b19b0691cd45063189 examples/classes/Console/tools.yml SHA256 dc081ece5f7f79439b32d299ccbf752044820b60434a438c6246c4e4ce7054e0 examples/classes/Desktop/base.yml SHA256 559bf739c2901c9e7baeaf187257a03f7bf774f003a8f0993a1efe9f690b298a examples/classes/Desktop/chat/init.yml SHA256 a4204b6f5b8c281134f8c139554c933a76d5782bafb6b98e63f957a062f56ff3 examples/classes/Desktop/chat/pidgin/crypto.yml SHA256 935387d134d2f8d8e153be6411ebacd701a229c881ee8b255989fb99b96626b7 examples/classes/Desktop/chat/pidgin/init.yml SHA256 67c262aedf445d7110511ed54237f0b55bd21a0f52e649379232b16697dda3f9 examples/classes/Desktop/email/base.yml SHA256 0145d0fa7ea1f775e13d786e0e4fdfdadad1a2e0b7780ca795491c2f8ad22969 examples/classes/Desktop/email/bidi.yml SHA256 a1d46b1bf0f69776dd3ed92de1e828aedff217092bd887172bd525faee20abaf examples/classes/Desktop/email/harden.yml SHA256 795fa7c9dd2e4b4af17767b3db698411ae24f9445aa1a7481d4b74170a07aa65 examples/classes/Desktop/email/icedove/base.yml SHA256 ca373a062328dc81ed446150501f69fc144df2ccd583dbe8dedd1f13cb4c9516 examples/classes/Desktop/email/icedove/harden.yml SHA256 f4aba351ab24ddd6f66188ed034a9b3155caa729934f5ad5c5a666909401180f examples/classes/Desktop/email/init.yml SHA256 b9ab46572c589218aa614cfbc8f6b1cef70321b75d5bba26d9bb02ed8a257804 examples/classes/Desktop/email/locale/ALL.yml SHA256 c3ccf86c87de1c4391d79aa65940ca25e977595ffc800bc5f43af63678c1bc07 examples/classes/Desktop/email/locale/AMERICAS.yml SHA256 57ad79310cd8535d6b6e9550873d8114b31a676a43cd1f767c7e0910775858d5 examples/classes/Desktop/email/locale/ASIA.yml SHA256 e4b5e550c5bae5a7480d6c4721f83b848c85d15bace9ed9c623719c0b65480bd examples/classes/Desktop/email/locale/EU.yml SHA256 bce321154ab6e9a3c8720be24d2a9ee9d21f4d303c2d53951b893303b6c5fb95 examples/classes/Desktop/email/locale/EUROPE.yml SHA256 8f5e50a0a490b11dafabfcedee23ec0104f904d828a68f721d91805f6d5b6779 examples/classes/Desktop/email/locale/INDIA.yml SHA256 a04b2363be4f1517ff09b5d67f566261f5571e13e3e8e1de656198883a756e39 examples/classes/Desktop/harden.yml SHA256 dc081ece5f7f79439b32d299ccbf752044820b60434a438c6246c4e4ce7054e0 examples/classes/Desktop/init.yml SHA256 4adfbb85deeacb2e89a3cd969f5ed21244a709c598fd5e1585cb5a319dd488b8 examples/classes/Desktop/locale/EU.yml SHA256 d523021a1e3a49265ac6967c3ca5e195ddf7e82c6faa6cdc9b7b30dc44355149 examples/classes/Desktop/media/audio/alsa.yml SHA256 bb07eba1699a0d5a98b45a11c1c1aa8fc6a819b2ff00e810b6529fc2ac6964f6 examples/classes/Desktop/media/audio/pulseaudio.yml SHA256 e7b91bfc5d5542af0e7cfe7215854bdc62f044cb130758cdd76a6b7a609e31ff examples/classes/Desktop/media/init.yml SHA256 fb24a528f71f647585164d0b9602374cce3d53156253d78faf57542e04b6b5c0 examples/classes/Desktop/mobile/init.yml SHA256 3e032e95519e3fe461c43fa612c06f79b977e0dd7518d532cf09d8ff4aee4c38 examples/classes/Desktop/mobile/sync.yml SHA256 a1d70004f4c89035c57d47c5edbd847f7473a4319a5e68351c155b1d19184bb6 examples/classes/Desktop/office/init.yml SHA256 a3add0f15b5b380f7c211d1f0d5ff2190a74f86eef7fd3432306d5dcb615a651 examples/classes/Desktop/office/locale/AFRICA.yml SHA256 29eac9d24a1df51bcf8bff4fde65266325e4e642c0d060279038f5911552779c examples/classes/Desktop/office/locale/ALL.yml SHA256 bc4887f58355ca77b48dc8dcbcf673b101b4dd4fb8c74600a521bf3cb18dce78 examples/classes/Desktop/office/locale/AMERICAS.yml SHA256 62ce522299ac060775b2732a009b0843ad794ecd85e44c7f2092449a3e07f5e2 examples/classes/Desktop/office/locale/ASIA.yml SHA256 609914b6ae44cfb496bb8c855f0355a16ff4a15d0233d5f920f5c8f22dba5b86 examples/classes/Desktop/office/locale/EU.yml SHA256 6f31b316931999af25ab540a6aae87d742e0860ce91ec58139c66a68fe0bb3fa examples/classes/Desktop/office/locale/EUROPE.yml SHA256 9ff009f4766e6d4b866883b6be22f3526cb449f589630cd59bd1a81deaa37088 examples/classes/Desktop/office/locale/INDIA.yml SHA256 84c411b63bce51dd27afe2b4cb8e37d42529513b5f98a3a506bd9da77b97fd89 examples/classes/Desktop/office/locale/ZA.yml SHA256 3876f407cd40831fa7007434a26ee9a2d1f87a118855dac3e1e85a863b1aae5d examples/classes/Desktop/office/presentation.yml SHA256 ad774207a0a862c247d2bf1a8cffb2fd123ee81764c6157f0d38b8bce08e0ca2 examples/classes/Desktop/office/spreadsheet.yml SHA256 c71c15cf8d6d25f4e4e5a9063ba23106a1d9c07946244ce9e671e3729aca77e2 examples/classes/Desktop/office/word-processor.yml SHA256 ea75e1763bbeba23a2cb1ae7dda049bd25ae258cd4d68188c5ed3d71cc55ca33 examples/classes/Desktop/scheduling/init.yml SHA256 197f63d1b6103e21b3fd3f7509f5531071837f4e7d94d742b60335aa0246b47c examples/classes/Desktop/screensaver/unicode.yml SHA256 8562b1ea62b4089e42f0885cc7c4fe1a827aabb9bce04afe883de04d960e162e examples/classes/Desktop/tools/harden.yml SHA256 1eabb66f2289e97a12a41f56e8290506ff21b41e1e29ba79f07add6fe8b3fe87 examples/classes/Desktop/tools/pgp/gtk.yml SHA256 39d8711ff5815a6adc67088b556df0880b55168a3bf4a6f015486fc48e04cea8 examples/classes/Desktop/tools/pgp/init.yml SHA256 3b5f31e3ffe142cff9ae275535aa125bd818a9a009974302b96396f5e4506494 examples/classes/Desktop/web/base.yml SHA256 41b13d14ac743f8f955021aaa01ed15ad47da35d3c1f4ee5915fd0c21f90141a examples/classes/Desktop/web/harden.yml SHA256 5053a2eb0a040a5e2fb76cf86f2b9d8ec64854351d64de236c41a819d9279282 examples/classes/Desktop/web/iceweasel/base.yml SHA256 160eff6511f9c8109c7285b295c543d7aa2d8b0f58a8e31403b4776832af2af1 examples/classes/Desktop/web/iceweasel/harden.yml SHA256 ed1144e7eba92989b1b5f3b86c4123525ac558c50313bd091f96a9c24d0ed1f7 examples/classes/Desktop/web/init.yml SHA256 100002361d6c128749812149510e54723354b5467dd0bed63c813dfdf66c3992 examples/classes/Desktop/web/java.yml SHA256 6d3c48ebb8c95ac22bd61bc5aad3661b0871d606db7d592b1c5f279832306dd0 examples/classes/Desktop/web/locale/AFRICA.yml SHA256 c699b88efa340e79b72a1d4717115a479adc8c8396155df2310e47cdcf1afacb examples/classes/Desktop/web/locale/ALL.yml SHA256 b2704459d564d531f9176f518f5e7aa3aec516fc22f6fb0f637f8da4300bb933 examples/classes/Desktop/web/locale/AMERICAS.yml SHA256 fdff70b9a10b525557d0d7c125ec1ef1494ad421b2372bf8ccde47f17f9c89e3 examples/classes/Desktop/web/locale/ASIA.yml SHA256 d06bc7724bc47a65026010157186757f0e84ce622ada8dce56a1737f30a1691b examples/classes/Desktop/web/locale/EU.yml SHA256 e8fa9a20835bbf3a2f8a2e2b5a5c3d3ce3e029bb220b072578aa877dc9ba1657 examples/classes/Desktop/web/locale/EUROPE.yml SHA256 dc7b85a03448dd80e2afda0d67ca2184b9273ed87ed61b3980622989501cacbc examples/classes/Desktop/web/locale/INDIA.yml SHA256 530703cf7017e09d492aacb0d1f79d09ece13506548d4e2ceef619e0cfec479b examples/classes/Framework/base.yml SHA256 acaefc4c71b50ce95db1fbdb0f17939aabccf407ac661537b3216dc55bfc27bc examples/classes/Framework/crypto/base.yml SHA256 0546106644d76526654ac30672fbd82104452d48c3754b597e3443902c581464 examples/classes/Framework/crypto/gnupg/pinentry/gtk/init.yml SHA256 a1d094d6945486d4e634f83a02d62849607955fd00d2632dab2b9cc605878a1e examples/classes/Framework/media/base.yml SHA256 40dfaf15f3f2b0771e531f8f26cda1d97e66be2ac6fc4065fdbd610452310658 examples/classes/Framework/media/wildmidi/limit.yml SHA256 a5aa5b3dc71cc2f79d212ca42e0c2aacdb8fc27a31975ed4aead802071c944d7 examples/classes/Framework/pkg/apt/cli/aptitude.yml SHA256 e699f1ecbf0bd14246cd6b600e24d649b2f7e0ed959a7c74b8d219e3df75180a examples/classes/Framework/pkg/base.yml SHA256 c4bd0d08d64debb3d0e9cd34d095fd3062fbe00f5863efbb6b58976fb38df536 examples/classes/Framework/web/webkit/webkit1/gtk/avoid.yml SHA256 43031a77f32fdc07ee15603d56286929788fcfd40e0a409400d30efa70bd5869 examples/classes/Hardware/base.yml SHA256 21aa0eace5dd70b64a8a4bd9261c1b000f88508a9ecb62ab97c1e07f1e08ecb4 examples/classes/Hardware/gl/hardware/init.yml SHA256 0a8c83327991224faae3f4f33d2d9b5cd3105e20d02dd603dba7257312fe0c90 examples/classes/Hardware/gl/init.yml SHA256 faf3691215e0c4d07d5ad2f8ff85aabb07ef6b4c6a93d173caf5e8f46275826f examples/classes/Hardware/gl/software/avoid.yml SHA256 0689c7198ee469ca9115ff246ab3a1067a8c9847d668ac74b1cdc15d0a968fbc examples/classes/Hardware/harden.yml SHA256 3a14efe1cfd0fff6c969ff85280370dc2eacebcdcd3fc907bef373bad8faa48e examples/classes/Hardware/laptop/acer/aao725.yml SHA256 38f0648c9b5e0345b9eecfde50bcf2304f14eea0a7ac677098dfeef2188d3a6e examples/classes/Hardware/laptop/apple/macbook2-1.yml SHA256 5612a8f6969b9bfaab778099024d4a6ea6732e3c4e5af3ccb4b64b86dea2a451 examples/classes/Hardware/laptop/apple/macbook5-1.yml SHA256 44a01af88e027b84001e4e006985d170e88e464f40eaa5b1860edf59c80a37b7 examples/classes/Hardware/laptop/init.yml SHA256 e9868864b81f818c3c02c2898b7e2bada86af843dfc2c15b932b55403045f66b examples/classes/Hardware/laptop/lenovo/edge145.yml SHA256 e443561ccf42140a0ad6ae2bd0bb68945b39fda0fb38d42bd7b791cad6adcf34 examples/classes/Hardware/motherboard/amd/athlon/64.yml SHA256 53cc7331fa85a2a22368bd560d9d675eeafdd25ac93ca595c85f9696c053f0a1 examples/classes/Hardware/motherboard/amd/athlon/init.yml SHA256 7d20db3e9a03f9abe35f441e1900844a4d3b4e3064ec3bf1b98f0ab9c0de4f12 examples/classes/Hardware/motherboard/amd/c60.yml SHA256 4e14debeb02a3fe05c76aec3391e1663d2a12f549a9563f31c382535b072b572 examples/classes/Hardware/motherboard/amd/e1-2500.yml SHA256 9a8b75cacaaec0208980e1f16b14acc09b006de4f1924b3911502d8ec8955d9b examples/classes/Hardware/motherboard/asus/a7n8x.yml SHA256 dc2c587ed8c0ae26df4c1f10762570857e2565f230f3753994405057ace8d0aa examples/classes/Hardware/motherboard/intel/atom/32bit.yml SHA256 4d7f35c3146b391ad85cc99c230d1bb877ed4e4c559b17c7db05a2449f748409 examples/classes/Hardware/motherboard/intel/baytrail-m.yml SHA256 d73ed351603670da2ce9593d8db337511209fafb914ca437b1619be9ac3b8023 examples/classes/Hardware/motherboard/intel/core2duo.yml SHA256 92dd12934fe1f402ee23cea53a2cc9f80103db6812e18c5cd5bd41de824f6fc6 examples/classes/Hardware/motherboard/intel/pentium3.yml SHA256 ebc1fa3312c353ee12658b90b4adff62cc0b8f0cfb91a51907467e8efd7d806f examples/classes/Hardware/motherboard/via/nehemiah.yml SHA256 86dd70cd9b3b4bb08ed90d11aa57145852e9021fe42e089cc04e9b42949d9e47 examples/classes/Hardware/motherboard/via/samuel2.yml SHA256 1f4b6b73ee684eb53cc76de895966f4209a5454dab3f8aa10521b79351383ba9 examples/classes/Hardware/net/bluetooth.yml SHA256 bd1660b40300d81e5da6966777f3b67b43df1ac12d276492781ebfb44fa9af0c examples/classes/Hardware/net/pac/avoid.yml SHA256 53399ae33f856c6545dc519600e865a2166616408fe3a95b12cb5035a7d3c8a0 examples/classes/Hardware/nic/broadcom/sta.yml SHA256 f2afdb1e3741d1162069dedf276062842404ce4c5e91cf8dbd74daea3339f104 examples/classes/Hardware/nic/realtek/init.yml SHA256 ded8318d9dd9f9f7ed50d1a733bb6403ac9307a14c0abbe54c507f6dfcdfa26c examples/classes/Hardware/power.yml SHA256 621e74175e3a1fe9c042675dacc933543538d8ed4f59db071535eba6a5ffdeb4 examples/classes/Hardware/tools/harden.yml SHA256 93db4759a8c00ed6a604b588ec01250466bbe61c4e7fa9802883f026b3855b52 examples/classes/Language/java/base.yml SHA256 9246d832ac6933ddeb02ea0d54830948a9ca76320f5d5b01f1738b1997306fd2 examples/classes/Language/java/init.yml SHA256 4193715f269e4b7262eaa229198b24bb88ffe1b9d1d52034c08fe41dc6164cca examples/classes/Language/java/openjdk6/avoid.yml SHA256 3ff99248726dbadc25b46960323b9f57e9efadce5c1ca9aee17bafade53c4d80 examples/classes/Language/java/openjdk6/init.yml SHA256 6f535f845c6e3e4f1510a38a9488b0f3241ef272437ca5c6ae238b03e023c35c examples/classes/Language/java/openjdk7/avoid.yml SHA256 0921b7cff064f8cbb5a87d785a0c046d2e88f9dab849cad348a7c2483941fe3d examples/classes/Language/java/openjdk7/init.yml SHA256 b3c8a602c3192597bcd3b6394ff2edf0b8fa9856c994599b32149e1fb9caedc4 examples/classes/Service/antivirus.yml SHA256 e31399a5d37230b6c8cda7239e90788c48fec49b4d4abf371eeebb353ccbcd0c examples/classes/Service/base.yml SHA256 12fff0e1e0ac7e16d09911f003589c11d98656ea85514e8c3b60413abf540a25 examples/classes/Service/dhcp/client.yml SHA256 c598682947cee0b7148fff667ee799dc82fd35e944daae4d6173e0c72bf2e081 examples/classes/Service/dhcp/init.yml SHA256 4ccb9bd7c8d05f15f798a288b37810bf37b5b3b7c208785fae62fa21f7cd464b examples/classes/Service/dns/authoritative.yml SHA256 35f73ed483704704f6129fe48fdd69ec0095a1469cd379c211389f77f464b10c examples/classes/Service/dns/init.yml SHA256 f000599400d7420612635b9332e657797c8646079abb86ce1494d5c0daab7f69 examples/classes/Service/git.yml SHA256 067f3d2ff467712e6108a0ffca0747de8b8154d6c3f3516c2f0baf9d3239abea examples/classes/Service/ids.yml SHA256 e31399a5d37230b6c8cda7239e90788c48fec49b4d4abf371eeebb353ccbcd0c examples/classes/Service/init.yml SHA256 d91d602583135602f1f3390d1ac7180ce1b8a3363fe775905ba12b7c08c6ce75 examples/classes/Service/log/init.yml SHA256 9fb91ee5135f2ae3421c7867ca82643ebc4fa472ff524fb0d620b528410b2cc1 examples/classes/Service/log/remote.yml SHA256 b2c9552f6aaae917edee32664d62fe1d446643d992b874c95aac273f54afd97d examples/classes/Service/mail/antispam.yml SHA256 3fc8c36170870c9d3e45d8e592ba330078f2b7405aae9a20aa8ae42b6d28fb3c examples/classes/Service/mail/base.yml SHA256 4e9215d89d98654e5401666a6aa82d177d7d3b4b9b2e18b9eafc453912f27512 examples/classes/Service/mail/imap.yml SHA256 9c5290a4e6adadbee18762d005427012a1746f06862d887e9decce5224481be3 examples/classes/Service/mail/init.yml SHA256 27ba0ce43070d89d0c5be3645b1b55da07876d2794333ecffbd4fd746aea1cb2 examples/classes/Service/mail/list.yml SHA256 8cc390cdbe7efcb587aae9719fc82981aee854ec8148e64cdcc77602433f62d5 examples/classes/Service/mail/mda.yml SHA256 2c4766bb6a3b4783ee90cc564ce167bae3bdfb027df276739597d4e0eb813645 examples/classes/Service/mail/mta/init.yml SHA256 47837480bf75ba57978ad19b0f2fcfb4dd950689a3cb04cbff660a3fda805fbf examples/classes/Service/mail/mta/postfix.yml SHA256 c99d944786ae4bbc24c570a47759f9b256893aaffca4a0bb88ea95ada182adfd examples/classes/Service/mail/sasl.yml SHA256 135aabbb0d31748c4feb7b31cd1d6592121e1ee9004b5819840d2a45a78d1e92 examples/classes/Service/mail/sieve.yml SHA256 0d6f287921714a7fda0c8d2ff835e52100821340d0eb95849a6d30229e11682f examples/classes/Service/ssh.yml SHA256 c8bd14a7dda37880813685d42979d6a50c5613010a508bd47cdc31092313afbd examples/classes/Service/web/apache/gnutls.yml SHA256 89f2909c5aeb4d4b5218e1ded35cb231ca02cd3848447970bc8f1981458bf517 examples/classes/Service/web/apache/init.yml SHA256 a53a7036d2a7659bd822340bd2d060f34273ce31b4d77674a546bdc8ac688b10 examples/classes/Service/web/apache/uwsgi.yml SHA256 3ee09a7d67e7010893293e6e1ed18169061a2a921bb7ee0cf69922037d518c65 examples/classes/Service/web/init.yml SHA256 302b2d11159bfde849f07be072a9c8f0d061194c500f2989c89e420855f2f49b examples/classes/Service/web/mail/cider.yml SHA256 99ab28e71928f7eb0c45842cf47c24100abe26461fafd598d9cf8a995d0de507 examples/classes/Service/web/uwsgi/init.yml SHA256 dcd0cd99e67e80ef04351716079195317164fa07d26630394df84383d7ed70f0 examples/classes/Service/web/uwsgi/psgi.yml SHA256 82724985079a5977765483f2fb6059472f59a4e0986531c430071e1ced5d1721 examples/classes/Service/web/uwsgi/python.yml SHA256 179fd11f64767ce7979bdea504dfe8ffa72c517624766c89a98ee5a1e386f9ca examples/classes/Service/web/wiki/moinmoin.yml SHA256 4aa791d721f0dee36a51b758ff2baa07d10f1eb0f1389d3e8bd1729848a04b8a examples/classes/Task/harden/desktop.yml SHA256 2c18eacc25ec77b5569e88e523575df4f364da242de79ea531220f1a241adc36 examples/classes/cli/compression/init.yml SHA256 cd721f68a2cb1aa59131fc898afc9a45698d4d9fbd27b1a5a7812c6d4a47326a examples/classes/cli/compression/uncommon.yml SHA256 3bbe7a6edb30e147929ddd055d8acc27532c8a319cded758704e1f1987c1f8fa examples/classes/cli/gpm.yml SHA256 4435ed2ff24705c24a22c5e23fe871b98aba28db52a62ee4a19369981b2cc877 examples/classes/cli/less.yml SHA256 6643969cf614f4f5d657e5856d02eef3cdfb3f69afdb2f30449c56a3a6c3ed9e examples/classes/cli/mc.yml SHA256 60c0738a844f2c1d59d1199e454896bceadc4d98a5bde1cac83c940bd768d10b examples/classes/cli/ssh-server.yml SHA256 69424b1051d9155e1ea919df556f123d21975a5d655fb4f3b910898ebdede632 examples/classes/cli/web.yml SHA256 b8842b6680ac52e053af28aff395dd42b735989cd33e97fe2bd1de4874f5c1bb examples/classes/hw/acpi/full.yml SHA256 7dcb1a3194b5d7baf4ec3c66d06e744042a89891e36bc1e6015cff0909e974d7 examples/classes/hw/acpi/init.yml SHA256 dc9750c5e26c3112a172933d1e85397e00289965e92cb7c94c847a275f0436f3 examples/classes/hw/bluetooth.yml SHA256 90fa4c42b69116d17a9800a9f67f693c75448ca7bfa7ae4d732eb85481caa974 examples/classes/hw/crypto.yml SHA256 65be975fb2fc80dee52a1bfef6dd62e3d77b9278daa2a1421da11ad60726e633 examples/classes/hw/firmware.yml SHA256 ffb1a13d2ea629e83db2ff2f10faa064af577cf8e8a68feec375dae911c185c3 examples/classes/hw/mac/init.yml SHA256 64e4b67f6c272497b66b42d1eaa0ea599a6ad5a9390e727b545a04a3d21619b8 examples/classes/hw/mac/laptop.yml SHA256 6cbf8d37c2feded04f3cce70f5ce5767feb96a16f4da2790936f9cd2df12a76d examples/classes/hw/power.yml SHA256 a38c568f0cd63222ae9357cd96bdbcbe8f62b188835a735f1460dbf8832410ea examples/classes/hw/x86/amd64.yml SHA256 deb2c31babaa3ab83760aa29eaa0328673cc534e337562bcee9a352660678491 examples/classes/hw/x86/i486.yml SHA256 8076be41087607e4667078d2320cddbf962601061e25d3699e6f7ab45aff3a47 examples/classes/hw/x86/i686.yml SHA256 2f4f61655573df624911ee507de92ccdd1828ba62db650e19e4f39378c757a7a examples/classes/x11/init.yml SHA256 1d408a054b6c1dad886651618d9cba356a2a4410ebbcd3159d8f3f4c8f5e905d examples/classes/x11/lightdm/gtk.yml SHA256 9d0018717b737ddb35560bbe31be2528703d1784da466ca034127cafe10b14f6 examples/classes/x11/lightdm/init.yml SHA256 33be02c8012cd32f519c0741a2e9ed6ccb29cada267c34efd66115c235c3c2b6 examples/nodes/lxp5.yml SHA256 9c2153557a48b27d8230bdb10efaf696bd19db2c2133bfc6099e24d3314215fd examples/nodes/parl-greens.yml SHA256 184d46ea5f48ad173ecc7589b2fe939a0d2708a2a866cf203ab1836d55c793a5 lib/Boxer.pm SHA256 10a5546372cc9edc20a8bc7ea2bd66eafba10ea2fd4575fee2bbc5297856edc3 lib/Boxer/CLI.pm SHA256 feaafa289613ed801b380463ddb078ad8a37ca06565148165819588076508b6f lib/Boxer/CLI/Command.pm SHA256 f4dca367a74b9bf6008e91a53e7a9bd5a5e5e17176fc71c551f6df0eb2ea6629 lib/Boxer/CLI/Command/About.pm SHA256 096ea8997c95408542c396d3a78a8fa197a34f6cafed2d2bddaa4a7fc5b1bc6c lib/Boxer/CLI/Command/Aliases.pm SHA256 4980997901a6ce58b140cb050dcbf7d3d74cfdc7c42f56d7a09eb00fd2107e24 lib/Boxer/CLI/Command/Bootstrap.pm SHA256 695a4af740ff1b5d39bbd8771e2ede8b3252b31ef5edc4f2762e7bc62b41ac50 lib/Boxer/CLI/Command/Commands.pm SHA256 6365a9b4872a0288e0ae2c8c109ca23b0cb3b5d6ce11eb1425d8b0cf901faf09 lib/Boxer/CLI/Command/Compose.pm SHA256 615c27b34752fffcbc393cfd9e82f5e5c61b98a199488a394a9b2ff696e4227d lib/Boxer/File/WithSkeleton.pm SHA256 faf1c7a28b55243322861ea57ae5afed165e496fbc2d16f3fac2d856f255db2b lib/Boxer/Part.pm SHA256 b949b730ee26a1c2dad42816179d93ac350d8b8cf94630a58659911c2d6f6d6d lib/Boxer/Part/Reclass.pm SHA256 a366b14ad5b112e91061520e7824d9499b51a87b032430fb455b6c0047cc627d lib/Boxer/Role/Interact.pm SHA256 2bed64763ce08b80d23fc12924d784091e51e460aead069abc52008f3aa4ee01 lib/Boxer/Task.pm SHA256 11f7569d80c7b770b71ecbdbfd51785276d9e43f62469a484e17ebe55e39701b lib/Boxer/Task/Bootstrap.pm SHA256 d4141fbf91327e87e337a65463a03aab15e5965e792104ecbe10ae7b7b1da663 lib/Boxer/Task/Classify.pm SHA256 21529bfda9e13d87df9e1eda9c3d59e16420e25b6a90192b3fe8d4fb9671da46 lib/Boxer/Task/Serialize.pm SHA256 f012a4c727e2439fccb01adc9d70779361979d5c31e2edd6f6de3187cc444676 lib/Boxer/Types.pm SHA256 f5d0bc043062bc0b4eb1867505721c638c80ab6b9ff9113c0e62f5233e63ce20 lib/Boxer/World.pm SHA256 2114188071720c3dca0d61a9afd1d891af71a00e9a34db24594de1b8077ea348 lib/Boxer/World/Flat.pm SHA256 9797994c970101861e1b701f0a8e34a4e8eb9ed33d4e27e9d65a00533b658050 lib/Boxer/World/Reclass.pm SHA256 a6158458b98556e91fca2860fcf10904d6947783ab0a5a82fd12945bf18a8258 share/skel/preseed.cfg.in SHA256 8f5527cc2a4c26700a16413aa63ac96aeaf7e68148767c97fa01f53a166867aa share/skel/script.sh.in SHA256 812f4ddb00ccbf56fc1219aab0742bfddd3e37bc5ef3bd7980b99287e1e1201d t/00_compile.t SHA256 90cd63e0ec3ac61aa294cb3c064e15d6a94864c87be62752fdfbc3cecf858f4b t/00_compile_scripts.t SHA256 8eb3d320017b23f3343c6eba4d403f30b6855d9d2a2c95cca6ac5bd43d4619ff t/01_app_help.t SHA256 95e5fe109857b84225aa83806e19fac0907a0af97ebcdad06997b76fe05b7b5f t/bootstrap.t SHA256 0c96d9398d949e1f12f2e9cf3708e2140f7f8c466771697d597ef06a8fa04541 t/classify.t SHA256 0a942688d111db929123fa7123c32dc4fd61024c753fa64a1e4e04041fca192b t/compose.t SHA256 2721012f0d9eeaed1adaccdc59e6167e6959f0f29bfd7962cb513b0e4ecb873d t/fixme.t SHA256 81be911e52796f409eb5fabec1502ae56679c7be2139ff00972fc5ac996d2467 t/minimumversion.t SHA256 922c44ae44d6274fc8fbddc715581742d883d3892713fc95b0c46729a28afc54 t/namespaces_clean.t SHA256 affb760c1087b7bf0f9b5c735d49d40aecd37fb5f29234c063cce96e4e991a78 t/pod.t SHA256 837d79f0e1b04d3780aaa375e09bf67749f0472790dec8a67b801e7f714520d9 t/serialize.t -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAlyh8GQACgkQLHwxRsGg ASGZew/+JfQZxfhC5GgFti9klwiOgSs0cJlxBd7p7xNEFRW16t3PQY8du05xUw+h 2GTEGGPYGFZG1tQDLqklUwu6AieNebOht+9gu9WDwYLXNxtejVOqvRDqcQfCbEhv 0xH9YzhVIoOQj18tzyrxeRDBpwvXCr2nnlHn+il+cIso6Qll0/Vep1mBbaqkAPvX CjCXoVe6/E3rC+GdudRrpU++IBHoPxIrjXCBNZVgWW+xSCAwKkaD9kLaCyUc7xhX XktnyU/55MOCR/0zDjegctPTPA/KuVqhaUH5DQK+eV4U6V2f/sO27tC6oeXGialy hf0gPVwq5Zxc1452YLhnO4kJVxkR+4yqG7BGwZ7huqEmELnTiweaWqTIy/G44gZT mnNAr0nrgoVUTrNI12ZKHJjLvbR7247vWLVQt7QdJHzWz5tNmQW0D961B3ueMOtZ EkRYHd5ILWaPShz5PX2PwwQUXciw8gsdyUJn52F4uphtSv7xNsX9yBpdfzOVZrDi NbELowsNIY5o9vkQJNQnY3f99vE8vxpr32zLXDuV3Bk4oC0JsyBzAGzqcVZEo7vv oZBpA3XWjPX/AukbDxf0+wKDFA235dj2QvHmam1XxICvppU89AEBptWBIE0AjJpF Om+zjdW9VCxN4Uxh83XhP3c6PdmkqhVBDCmdULiQZlJEN8SPgrg= =d/Vx -----END PGP SIGNATURE----- TODO000644001750001750 1017613450370142 13164 0ustar00jonasjonas000000000000Boxer-v1.4.0 * Only optionally (not by default) include tweaks. * Include README on whether it is a Debian Blend or Debian Pure Blend. * Isolate package auto-install flagging only relevant for upgrades. * Fail (or optionally warn) if both installing and avoiding a package. * Handle bugs as parameters, and extend data documentation. * Resolve default suite from system, favored over hardcoded string. * Resolve named suites (e.g. stretch) from relative (e.g. testing). * Resolve fallback to stabler suite when known less stable is missing + oldoldstable < oldstable < stable < testing < unstable < experimental + foo < foo-security < foo-updates < foo-backports * Resolve suite from addon, and extend apt sources to include addon + foo-security + foo-updates + foo-backports * Resolve suite from snapshot, and tweak apt sources to only use snapshot * Support passing suite as URL, and then extract apt protocol too * Use Throwable with Moo, and else Exception::Class or failures (not Carp) * Use IPC::PrettyPipe * Introduce compose option --nodepath (and maybe deprecate --nodedir) + nodepath is colon-separated lookup list for node + dirs without *.yml files are silently skipped + dirs with subdirs are skipped with warning that it is unsupported - Avoids confusing error if reclass is fed non-node YAML data. + default nodepath is environment variable BOXER_NODE_PATH + BOXER_NODE_PATH internal default is .:${XDG datadir + suite/nodes} * Resolve skeleton template variables in Boxer::File::WithSkeleton (not in Boxer::Task::Serialize). * Introduce compose option --style with default "preseed,script", and warn if omitted that the option will become mandatory + Deprecate compose formats preseed script. + Deprecate skeleton template variable tweaklist. * Introduce compose style bootstrap + Include skeleton files for debootstrap, multistrap, and mmdebstrap. Initial release: * Reimplement commands and classes from current make-based boxer: + install + Bootstrap::Multistrap + Install::Device Later releases... * Use Object::Remote + Add subclass to use Rex::Inline + Add subclass to use debootstrap/cdebootstrap/multistrap * Limit coercion and type checks * Implement additional commands and classes to create a system: + bless + Bootstrap::Debootstrap + Bootstrap::Live-build + Bless::Extlinux * Implement commands and classes to interact with an existing system: + refresh + detect + distill * Implement commands and classes to interact with config classes: + list + enable + disable * Implement commands and classes to echange config classes: + push + pull + publish * Implement trojan" functionality for install and bless classes, to embed as trigger unfolding at first boot in target environment. * Implement alternate CLI shim tools which mimic conventional tools, to bring boxer flexibility to existing unmodified scripts. * Implement web export and/or service usable with debian-installer for static/live boxer-driven "Hands-off" . * Implement commands and classes to interact with bug trackers: + triage * Implement PXE target - i.e. DHCP+TFTP services serving preseed file. + . + * Improve testsuite + Test implicit --skeldir (by setting ENV variable instead) misc. * Borrow boilerplate patterns from https://metacpan.org/pod/Sympatic * Maybe implement warning field. Examples: + Reference when including package unattended-upgrades. + Tweaking conffiles (known to fail later upgrade: See bug#311188). * Track unit testing code coverage: * Ask for node(s) interactively if not provided * But fail if not on an interactive terminal dist.ini000644001750001750 13513450370142 14072 0ustar00jonasjonas000000000000Boxer-v1.4.0; Configuration file for Boxer ; ;; class = 'Dist::Inkt::Profile::TOBYINK' ;; name = 'Boxer' doap.ttl000644001750001750 6542113450370144 14151 0ustar00jonasjonas000000000000Boxer-v1.4.0@prefix cpan-uri: . @prefix dc: . @prefix doap: . @prefix doap-changeset: . @prefix doap-deps: . @prefix foaf: . @prefix rdfs: . @prefix xsd: . dc:title "the same terms as the perl 5 programming language system itself". a doap:Project; cpan-uri:x_help_wanted , ; dc:contributor ; doap-deps:runtime-requirement [ doap-deps:on "App::Cmd 0"^^doap-deps:CpanId ], [ doap-deps:on "autodie 0"^^doap-deps:CpanId ], [ doap-deps:on "Moo 1.001000"^^doap-deps:CpanId ], [ doap-deps:on "MooX::Role::Logger 0"^^doap-deps:CpanId; ], [ doap-deps:on "MooX::StrictConstructor 0"^^doap-deps:CpanId; ], [ doap-deps:on "Log::Any::Adapter::Screen 0"^^doap-deps:CpanId; ], [ doap-deps:on "namespace::autoclean 0.16"^^doap-deps:CpanId; ], [ doap-deps:on "Path::Tiny 0.054"^^doap-deps:CpanId ], [ doap-deps:on "Role::Commons 0"^^doap-deps:CpanId ], [ doap-deps:on "Template::Tiny 0.11"^^doap-deps:CpanId; ], [ doap-deps:on "Try::Tiny 0"^^doap-deps:CpanId ], [ doap-deps:on "Types::Path::Tiny 0"^^doap-deps:CpanId; ], [ doap-deps:on "IPC::System::Simple 0"^^doap-deps:CpanId; ], [ doap-deps:on "Types::Standard 0"^^doap-deps:CpanId ], [ doap-deps:on "YAML::XS 0"^^doap-deps:CpanId ], [ doap-deps:on "perl 5.014000"^^doap-deps:CpanId ], [ doap-deps:on "strictures 2"^^doap-deps:CpanId ], [ doap-deps:on "Capture::Tiny 0"^^doap-deps:CpanId ], [ doap-deps:on "Class::XSAccessor 0"^^doap-deps:CpanId; ], [ doap-deps:on "File::BaseDir 0"^^doap-deps:CpanId ], [ doap-deps:on "File::ShareDir 0"^^doap-deps:CpanId ], [ doap-deps:on "match::simple 0"^^doap-deps:CpanId ], [ doap-deps:on "Module::Runtime"^^doap-deps:CpanId ]; doap-deps:test-requirement [ doap-deps:on "Test::More 0.61"^^doap-deps:CpanId ], [ doap-deps:on "English 0"^^doap-deps:CpanId ], [ doap-deps:on "File::Spec 0"^^doap-deps:CpanId ], [ doap-deps:on "File::Which 0"^^doap-deps:CpanId ], [ doap-deps:on "Test::CleanNamespaces 0"^^doap-deps:CpanId; ], [ doap-deps:on "Test::Compile 0"^^doap-deps:CpanId ], [ doap-deps:on "Test::Fatal 0"^^doap-deps:CpanId ], [ doap-deps:on "Test::File::Contents 0"^^doap-deps:CpanId; ], [ doap-deps:on "Test::Fixme 0"^^doap-deps:CpanId ], [ doap-deps:on "Test::MinimumVersion 0"^^doap-deps:CpanId; ], [ doap-deps:on "Test::Pod 1.00"^^doap-deps:CpanId ], [ doap-deps:on "Test::Synopsis 0"^^doap-deps:CpanId ]; doap:bug-database ; doap:category [ rdfs:label "Debian" ], [ rdfs:label "Distribution" ]; doap:created "2013-02-12"^^xsd:date; doap:developer ; doap:download-page ; doap:homepage , ; doap:license ; doap:maintainer ; doap:name "Boxer"; doap:programming-language "Perl"; doap:release , , , , , , , , , , , , , , , , , , , ; doap:repository [ a doap:GitRepository; doap:browse ; ]; doap:shortdesc "boxer command line utils". a doap:Version; rdfs:label "Initial release."; dc:identifier "Boxer-0.001"^^xsd:string; dc:issued "2014-10-18"^^xsd:date; doap-changeset:released-by ; doap:file-release ; doap:revision "0.001"^^xsd:string. a doap:Version; dc:identifier "Boxer-0.002"^^xsd:string; dc:issued "2014-10-19"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Fix time of initial release."; ], [ a doap-changeset:Packaging; rdfs:label "Fix all references to distribution name."; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "0.002"^^xsd:string. a doap:Version; dc:identifier "Boxer-0.003"^^xsd:string; dc:issued "2014-10-19"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Fix copyright coverage to include current year."; ], [ a doap-changeset:Documentation; rdfs:label "Update INSTALL file and pod synopsis slightly."; ], [ a doap-changeset:Change; rdfs:label "Explicitly use IPC::System::Simple (already implicitly used via autodie + system() call)."; ], [ a doap-changeset:Packaging; rdfs:label "Fix require MooX::Log::Any."; ], [ a doap-changeset:Packaging; rdfs:label "Require IPC::System::Simple."; ], [ a doap-changeset:Addition; rdfs:label "Include builting skeleton files, and ship with example classes and nodes."; ], [ a doap-changeset:Packaging; rdfs:label "Tighten Moo requirement to at least 1.001000 (older are untested with Type::Tiny)."; ], [ a doap-changeset:Change; rdfs:label "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."; ], [ a doap-changeset:Addition; rdfs:label "Add --suite option (and drop it as 2nd argument) in compose command, allowing multiple nodes instead."; ], [ a doap-changeset:Addition; rdfs:label "Handle nodes, classes and skeleton files with separate options in compose command."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "0.003"^^xsd:string. a doap:Version; dc:identifier "Boxer-0.004"^^xsd:string; dc:issued "2014-11-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Update; rdfs:label "Adjust example class set: Use reclass 1.4 ABI, and drop broken Printing class."; ], [ a doap-changeset:Documentation; rdfs:label "Adjust help output of Compose command to describe correct default locations."; ], [ a doap-changeset:Change; rdfs:label "Use Template::Tiny."; ], [ a doap-changeset:Change; rdfs:label "Sort doc sections by explicit list (and alphabetically only as fallback)."; ], [ a doap-changeset:Change; rdfs:label "Move initial shell code for tweaklist out to skeleton file."; ], [ a doap-changeset:Removal; rdfs:label "Deprecate expansion of __PKGAUTOLIST__ in tweaklist."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix only warn (not die) on unresolved auto-markings, avoidance or tweaks."; ], [ a doap-changeset:Documentation; rdfs:label "Add some TODOs."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "0.004"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.0.0"^^xsd:string; dc:issued "2015-11-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Tidy whitespace."; ], [ a doap-changeset:Documentation; rdfs:label "Rewrite INSTALL to use Debian boxer package."; ], [ a doap-changeset:Change; rdfs:label "Use MooX::Role::Logger (not MooX::Log::Any) and Log::Any::Adapter::ScreenColoredLevel."; ], [ a doap-changeset:Change; rdfs:label "Croak (not die) on broken input."; ], [ a doap-changeset:Addition; rdfs:label "Implement --nonfree option for subcommand compose."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix suppress failure to mark package auto-installed."; ], [ a doap-changeset:Change; rdfs:label "Fixate suite in preseed file (resolved package list is suite-specific)."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix avoid Boxer::Task::Serialize spewing garbage when warning about empty lists."; ], [ a doap-changeset:Change; rdfs:label "Sync example data with boxer-data."; ], [ a doap-changeset:Change; rdfs:label "Improve coercion and error messages for input paths."; ], [ a doap-changeset:Packaging; rdfs:label "Release as stable, using semantic versioning."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.0.0"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.0"^^xsd:string; dc:issued "2015-11-29"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Tidy Boxer::Types."; ], [ a doap-changeset:Addition; rdfs:label "Pass suite to skeleton files, and set as variable in shellscript and preseed file late_script."; ], [ a doap-changeset:Documentation; rdfs:label "Add TODO on resolving named suites from relative ones."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix unescape \\n and ${ for shellscript."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix use apt-get (automated) or apt (interactive, on recent releases) in skeleton scripts and notes (aptitude is not always available)."; ], [ a doap-changeset:Documentation; rdfs:label "Extend copyright to cover current year."; ], [ a doap-changeset:Addition; rdfs:label "Pass node to skeleton files (and use in boilerplate, replacing bogus DebianParl boilerplate."; ], [ a doap-changeset:Change; rdfs:label "Fix drop all hardcoded data from default skeleton files."; ], [ a doap-changeset:Update; rdfs:label "Support empty packagelist."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.0"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.10"^^xsd:string; dc:issued "2018-09-27"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Tidy changes to mark test-related entries as such."; ], [ a doap-changeset:Tests; rdfs:label "Fix author-test SYNOPSIS without needing MANIFEST."; ], [ a doap-changeset:Tests; rdfs:label "Add author-test pod-spell."; ], [ a doap-changeset:Tests; rdfs:label "Fix test miminum version without needing META.yml."; ], [ a doap-changeset:Packaging; rdfs:label "Fix explicitly depend on Class::XSAccessor: Optionally used by Moo, but without it accessors with hyphens are not supported."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.10"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.11"^^xsd:string; dc:issued "2018-10-04"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix propagate nonfree flag to skeleton files."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.11"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.1"^^xsd:string; dc:issued "2016-04-12"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Use Log::Any::Adapter::Screen (not obsolete predecessor Log::Any::Adapter::ScreenColoredLevel)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.1"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.2"^^xsd:string; dc:issued "2016-04-30"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Use File::ShareDir (not File::ShareDir::ProjectDistDir, strongly discouraged by author). Thanks to Karen Etheridge (RT#114079)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.2"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.3"^^xsd:string; dc:issued "2016-05-02"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix use File::ShareDir."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.3"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.4"^^xsd:string; dc:issued "2016-05-02"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "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)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.4"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.5"^^xsd:string; dc:issued "2017-01-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Fix usage description for compose subcommand."; ], [ a doap-changeset:Change; rdfs:label "Modernize to use perl v5.14, utf8, and strictures 2."; ], [ a doap-changeset:Packaging; rdfs:label "Use version with modern assignment. Extend copyright to current year."; ], [ a doap-changeset:Change; rdfs:label "Consistently use namespace::clean in modules. Order use by pragma/non-Moo/Moo/cleanup and (roughly) by specificity."; ], [ a doap-changeset:Change; rdfs:label "Drop unused code in Boxer::CLI."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix chomp tweak lines."; ], [ a doap-changeset:Tests; rdfs:label "Run perlcritic with tidyall, and test both (not only perlcritic) in TEST_AUTHOR mode."; ], [ a doap-changeset:Removal; rdfs:label "Stop handle __PKGAUTOLIST__ in data (deprecated since 0.004)."; ], [ a doap-changeset:Change; rdfs:label "Add World and Part classes, with unit test."; ], [ a doap-changeset:Change; rdfs:label "Stop skip undefined args in Task::Serialize (needed only for Task::Classify)."; ], [ a doap-changeset:Change; rdfs:label "Add Boxer::File::WithSkeleton class."; ], [ a doap-changeset:Documentation; rdfs:label "Add some TODOs."; ], [ a doap-changeset:Change; rdfs:label "Stop use MooX::Types::MooseLike::Base."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.5"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.6"^^xsd:string; dc:issued "2017-11-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Fix require Test::Exception and Test::File::Contents for testsuite."; ], [ a doap-changeset:Tests; rdfs:label "Fix testsuite to gracefully handle executable reclass unavailable."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.6"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.7"^^xsd:string; dc:issued "2017-11-06"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix make option --skeldir optional."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.7"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.8"^^xsd:string; dc:issued "2018-07-13"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix subcommand about listing authority: Use namespace::autoclean (not namespace::clean, and use recent version to avoid Moo inflation to Moose)."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix subcommand about choking on authority implemented but undefined."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix subcommand aliases help text to use valid example, and tone down usage (only some not most subcommands have aliases)."; ], [ a doap-changeset:Documentation; rdfs:label "Fix typo in POD of module Boxer::World::Flat."; ], [ a doap-changeset:Documentation; rdfs:label "Fix changelog entry part of release v1.1.5."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix syntax error resolving nonfree packages in Boxer::World::Reclass."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.8"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.1.9"^^xsd:string; dc:issued "2018-09-27"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Update INSTALL file: Update git URL."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix resolve nonfree, auto-resolved, and to-be-avoided packages."; ], [ a doap-changeset:Tests; rdfs:label "Extend testsuite: Cover auto-resolved and to-be-avoided packages."; ], [ a doap-changeset:Change; rdfs:label "Tidy HEREDOC commands."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.1.9"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.2.0"^^xsd:string; dc:issued "2019-02-27"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix compose option --help output to list current dir as default for --nodedir, to match boxer pod and actual logic since v1.1.4."; ], [ a doap-changeset:Update; rdfs:label "Use buster as default suite."; ], [ a doap-changeset:BackCompat; rdfs:label "Update skeleton files: Drop workaround unneeded since Jessie (see bug#751367)."; ], [ a doap-changeset:Change; rdfs:label "Update skeleton files: Use apt (not apt-get) in shell script."; ], [ a doap-changeset:Addition; rdfs:label "Provide additional variables to skeleton templates, containing plain and perl-escaped shell code: tweaks tweaks_perl."; ], [ a doap-changeset:Addition; rdfs:label "Provide additional variables to skeleton templates, containing comma-separated lists: pkgs pkgs_avoid pkgs_auto."; ], [ a doap-changeset:Documentation; rdfs:label "Update TODOs."; ], [ a doap-changeset:Tests; rdfs:label "Update spelling test, adding a few more words."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.2.0"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.3.0"^^xsd:string; dc:issued "2019-03-01"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Reference inspirational projects and competing tools."; ], [ a doap-changeset:Tests; rdfs:label "Use Test::Fatal (replacing Test::Exception)."; ], [ a doap-changeset:Addition; rdfs:label "Fix implement boxer-compose option --format."; ], [ a doap-changeset:Change; rdfs:label "Use MooX::StrictConstructor."; ], [ a doap-changeset:Change; rdfs:label "Treat namespace::autoclean as a pragma (one of its benefits over namespace::clean)."; ], [ a doap-changeset:Tests; rdfs:label "Use Test::CleanNamespaces in testsuite."; ], [ a doap-changeset:Documentation; rdfs:label "Add TODO about unit testing code coverage."; ], [ a doap-changeset:Change; rdfs:label "Limit Type::Utils import: Apparently unneeded."; ], [ a doap-changeset:Documentation; rdfs:label "Rephrase Boxer::Reclass pod DESCRIPTION."; ], [ a doap-changeset:Change; rdfs:label "Pass variables when file template is processed (not when instantiated)."; ], [ a doap-changeset:Tests; rdfs:label "Process node parl-greens (not lxp5) in serialize.t, to expose different features."; ], [ a doap-changeset:Tests; rdfs:label "Check path prefix handling in serialize.t."; ], [ a doap-changeset:Change; rdfs:label "Handle serialization details in Boxer::World::Flat (not Boxer::Task::Serialize)."; ], [ a doap-changeset:Addition; rdfs:label "Add subcommand bootstrap."; ], [ a doap-changeset:Tests; rdfs:label "Avoid declaring test count where tests are optionally skipped."; ], [ a doap-changeset:Documentation; rdfs:label "Update/fix references to upstream git."; ], [ a doap-changeset:Tests; rdfs:label "Update spelling test, adding a few more words."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.3.0"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.4.0"^^xsd:string; dc:issued "2019-04-01"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Mention Elbe commands and isar in SEE ALSO pod."; ], [ a doap-changeset:Change; rdfs:label "Stop use version: Unneeded."; ], [ a doap-changeset:Change; rdfs:label "Load Moo-related modules (base classes and roles) before other modules."; ], [ a doap-changeset:Change; rdfs:label "Execute reclass in Boxer::World::Reclass (not Boxer::Task::Classify)."; ], [ a doap-changeset:Documentation; rdfs:label "Improve pod of Boxer::Task."; ], [ a doap-changeset:Change; rdfs:label "Tidy coercion hints."; ], [ a doap-changeset:Change; rdfs:label "Tidy to consistently use qw() in module use."; ], [ a doap-changeset:Change; rdfs:label "Improve logging."; ], [ a doap-changeset:Documentation; rdfs:label "Mention Perl module Footprintless in Boxer pod section SEE ALSO."; ], [ a doap-changeset:Change; rdfs:label "Emit shell command notice via Log::Any to stderr (not explicitly to stdout)."; ], [ a doap-changeset:Addition; rdfs:label "Implement boxer-bootstrap option --mode."; ], [ a doap-changeset:Addition; rdfs:label "Fix implement boxer-compose/boxer-bootstrap option --verbose."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix avoid option --verbose overriding stronger verbosity set as environment variables."; ], [ a doap-changeset:Documentation; rdfs:label "Update TODOs."; ], [ a doap-changeset:Change; rdfs:label "Tighten author-test pod-spell to rely on english aspell disctionary being installed."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.4.0"^^xsd:string. a foaf:Person; foaf:mbox , ; foaf:name "Jonas Smedegaard"; foaf:nick "JONASS"; foaf:page . a foaf:Person; foaf:mbox ; foaf:name "Toby Inkster"; foaf:nick "TOBYINK"; foaf:page . boxer000644001750001750 725113450370142 14266 0ustar00jonasjonas000000000000Boxer-v1.4.0/bin#!/usr/bin/env perl =encoding UTF-8 =head1 NAME boxer - boxer command line utils =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use Boxer::CLI; Boxer::CLI->run; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 SYNOPSIS $ boxer compose parl-greens Done: composed preseed.cfg and script.sh for a DebianParl system $ boxer bootstrap lxp5 Done: created rootfs for lxp5 node # TODO: below command are not yet implemented $ boxer install [...] Done: Installed "Debian GNU/Linux 10 (buster)" to /media/boxer $ boxer install --arch armhf --classes swedish kde webdesign [...] Done: Installed "Debian GNU/Linux 10 (buster)" to /media/boxer $ boxer detect Analyzing current system... Report and custom class saved below directory /tmp/boxer.wcJxHnql6f $ boxer refresh --script ~/refresh.sh Shell script (to be executed by root) saved as ~/refresh.sh =head1 DESCRIPTION boxer is a single front-end to various "boxing" tasks - i.e. structured system-wide tasks commonly applied in batch to larger deployments. Unlike tools like Puppet, CFEngine and Chef which operates on top of an installed system, boxer preferrably interacts with the packaging system of the system. Boxer is inspired by Fully Automated Installer (FAI) and the classes are modelled after that tool, but goal of boxer is to become obsolete: boxer can include custom tweaks but encourages avoiding them and instead pass upstream to distro designers the needed customizations. The core distribution includes commands to analyze, initialize and refresh a Debian(-based) operating system. However, boxer is pluggable and it is anticipated that plugins on CPAN will cover other related tasks. =head1 COMMANDS This section describes the commands included with the core Boxer::CLI distribution. Others are available as plugins. Run C<< boxer commands >> to see a list of locally installed commands. =head2 Meta Commands =head3 C<< boxer about >> Shows the version numbers of all installed boxer commands, plus the CPAN ID of each command's author. =head3 C<< boxer aliases >> Many commands have aliases or shortcuts. For example, the following two are equivalent: $ boxer install --arch armhf --classes swedish $ boxer deploy --arch armhf --classes swedish C<< boxer aliases >> shows a list of available aliases. =head3 C<< boxer commands >> Shows a list of installed boxer commands, along with a brief extract. =head3 C<< boxer help >> Running the C<< boxer help >> command on its own shows a list of commands with their abstracts. Detailed help for a particular command can be shown by providing that as an argument. For example, for help on the C<< boxer detect >> command, run: $ boxer help detect =head2 System creation/manipulation =head3 C<< boxer install >> =head3 C<< boxer update >> =head2 Class handling =head3 C<< boxer enable >> =head3 C<< boxer disable >> =head3 C<< boxer analyze >> =head2 Class exchange =head3 C<< boxer pull >> =head3 C<< boxer push >> =head3 C<< boxer publish >> =head1 SEE ALSO Find Boxer::CLI plugins on MetaCPAN: L. =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; boxer.svg000644001750001750 1527013450370142 15101 0ustar00jonasjonas000000000000Boxer-v1.4.0/doc image/svg+xml boxer profiles distilldetect edit share tweaksdebootstraptweaksinstalltweaks deploy analyse publishclonepushpull adapt (from OS)addenabledisable New System Self The World Existing System Boxer.pm000644001750001750 341213450370142 14632 0ustar00jonasjonas000000000000Boxer-v1.4.0/libpackage Boxer; =encoding UTF-8 =head1 NAME Boxer - system deployment ninja tricks =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 DESCRIPTION Framework for system deployment ninja tricks. See L for further information. =head1 BUGS Please report any bugs to L. =head1 SEE ALSO L, L, L, L L L L L L L L L, L, L, L, L =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; 00_compile.t000644001750001750 32213450370142 15003 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More; eval "use Test::Compile"; Test::More->builder->BAIL_OUT( "Test::Compile required for testing compilation") if $@; all_pm_files_ok(); 00_compile_scripts.t000644001750001750 32213450370142 16552 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More; eval "use Test::Compile"; Test::More->builder->BAIL_OUT( "Test::Compile required for testing compilation") if $@; all_pl_files_ok(); 01_app_help.t000644001750001750 55213450370142 15151 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More tests => 3; use App::Cmd::Tester; use Boxer::CLI; my $result = test_app( 'Boxer::CLI' => [qw(help)] ); like( $result->stdout, qr/Available commands:/, 'printed what we expected' ); is( $result->stderr, '', 'nothing sent to sderr' ); is( $result->error, undef, 'threw no exceptions' ); bootstrap.t000644001750001750 622013450370142 15114 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More; use File::Which; use App::Cmd::Tester::CaptureExternal; use Log::Any::Test; use Log::Any qw($log); use Boxer::CLI; plan skip_all => 'reclass executable required' unless which('reclass'); plan skip_all => 'reclass executable required' unless which('mmdebstrap'); my $result; my @base_cmd = qw{bootstrap --datadir examples --skeldir share/skel --dryrun}; $result = test_app( 'Boxer::CLI' => [ @base_cmd, qw(lxp5) ] ); is $result->stdout, '', 'nothing sent to stdout'; is $result->stderr, '', 'nothing sent to stderr'; is $result->error, undef, 'threw no exceptions'; $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Classifying /, 'classification logged' ); $log->contains_ok( qr/^No tweaks /, 'lack of tweaks logged' ); $log->category_contains_ok( 'Boxer::Task::Bootstrap', qr/^Enabling apt mode needed by bootstrap helper mmdebstrap$/, 'apt mode enabling logged' ); $log->category_contains_ok( 'Boxer::Task::Bootstrap', qr/^Bootstrap with mmdebstrap .*--include(?!.*--exclude).*buster[^,]+$/, 'command logged' ); $log->category_contains_ok( 'Boxer::Task::Bootstrap', qr/^Skip execute command in dry-run mode$/, 'skip command logged' ); $log->empty_ok("no more logs"); $result = test_app( 'Boxer::CLI' => [ @base_cmd, qw(--helper debootstrap lxp5) ] ); is $result->stdout, '', 'nothing sent to stdout'; is $result->stderr, '', 'nothing sent to stderr'; is $result->error, undef, 'threw no exceptions'; $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Classifying /, 'classification logged' ); $log->contains_ok( qr/^No tweaks /, 'lack of tweaks logged' ); $log->category_contains_ok( 'Boxer::Task::Bootstrap', qr/^Bootstrap with debootstrap .*--exclude.*buster[^,]+$/, 'command logged' ); $log->category_contains_ok( 'Boxer::Task::Bootstrap', qr/^Skip execute command in dry-run mode$/, 'skip command logged' ); $log->empty_ok("no more logs"); $result = test_app( 'Boxer::CLI' => [ @base_cmd, qw(lxp5 -- foo bar) ] ); is $result->stdout, '', 'nothing sent to stdout'; is $result->stderr, '', 'nothing sent to stderr'; is $result->error, undef, 'threw no exceptions'; $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Classifying /, 'classification logged' ); $log->contains_ok( qr/^No tweaks /, 'lack of tweaks logged' ); $log->category_contains_ok( 'Boxer::Task::Bootstrap', qr/^Enabling apt mode needed by bootstrap helper mmdebstrap$/, 'apt mode enabling logged' ); $log->category_contains_ok( 'Boxer::Task::Bootstrap', qr/^Bootstrap with mmdebstrap .*--include(?!.*--exclude).*bar[^,]+$/, 'command logged' ); $log->category_contains_ok( 'Boxer::Task::Bootstrap', qr/^Skip execute command in dry-run mode$/, 'skip command logged' ); $log->empty_ok("no more logs"); done_testing(); classify.t000644001750001750 200513450370142 14711 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More; use Test::Fatal; use File::Which; use Path::Tiny; use Log::Any::Test; use Log::Any qw($log); plan skip_all => 'reclass executable required' unless which('reclass'); use_ok('Boxer::Task::Classify'); my $from_reclass = new_ok( 'Boxer::Task::Classify' => [ datadir => path('examples'), ] ); $log->empty_ok("no more logs"); my $from_root = new_ok( 'Boxer::Task::Classify' => [ datadir => path('.') ] ); $log->empty_ok("no more logs"); like exception { $from_root->run; }, qr/Must be an existing directory containing boxer classes/, 'Died as expected on existing but wrong datadir'; $log->category_contains_ok( 'Boxer::Task::Classify', qr/^Resolving nodedir from datadir/, 'datadir resolving logged' ); $log->empty_ok("no more logs"); like exception { Boxer::Task::Classify->new( datadir => path('nowhere') ); }, qr/Directory 'nowhere' does not exist/, 'Died as expected on non-exising datadir'; $log->empty_ok("no more logs"); done_testing(); compose.t000644001750001750 455013450370142 14550 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More; use File::Which; use Path::Tiny; use App::Cmd::Tester::CaptureExternal; use Log::Any::Test; use Log::Any qw($log); use Boxer::CLI; plan skip_all => 'reclass executable required' unless which('reclass'); my @base_cmd = qw(compose --datadir examples --skeldir share/skel); my $result = test_app( 'Boxer::CLI' => [ @base_cmd, qw( lxp5) ] ); is $result->stdout, '', 'nothing sent to stdout'; is $result->stderr, '', 'nothing sent to stderr'; is $result->error, undef, 'threw no exceptions'; ok path('./preseed.cfg')->exists, 'preseed.cfg generated'; ok path('./script.sh')->exists, 'script.sh generated'; ok path('preseed.cfg')->remove, 'remove file preseed.cfg'; ok path('script.sh')->remove, 'remove file script.sh'; $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Classifying with reclass /, 'classification logged' ); $log->contains_ok( qr/^No tweaks resolved$/, 'lack of tweaks logged' ); $log->contains_ok( qr/^Serializing to preseed /, 'preseed logged' ); $log->contains_ok( qr/^Serializing to script /, 'script logged' ); $log->empty_ok("no more logs"); my $preseed = test_app( 'Boxer::CLI' => [ @base_cmd, qw(--format preseed lxp5) ] ); is $result->stdout, '', 'nothing sent to stdout'; is $result->stderr, '', 'nothing sent to stderr'; is $preseed->error, undef, 'threw no exceptions'; ok path('preseed.cfg')->exists, 'preseed.cfg generated'; ok !path('script.sh')->exists, 'script.sh not generated'; ok path('preseed.cfg')->remove, 'remove file preseed.cfg'; $log->contains_ok( qr/^Serializing to preseed /, 'preseed logged' ); $log->does_not_contain_ok( qr/^Serializing to /, 'no more logged' ); my $script = test_app( 'Boxer::CLI' => [ @base_cmd, qw(--format script lxp5) ] ); is $result->stdout, '', 'nothing sent to stdout'; is $result->stderr, '', 'nothing sent to stderr'; is $script->error, undef, 'threw no exceptions'; ok !path('preseed.cfg')->exists, 'preseed.cfg not generated'; ok path('script.sh')->exists, 'script.sh generated'; ok path('script.sh')->remove, 'remove file script.sh'; $log->contains_ok( qr/^Serializing to script /, 'script logged' ); $log->does_not_contain_ok( qr/^Serializing to /, 'no more logged' ); done_testing(); fixme.t000644001750001750 15013450370142 14163 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::Fixme; run_tests( where => 'lib' ); minimumversion.t000644001750001750 21013450370142 16131 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl -w use v5.14; use utf8; use strictures 2; use Test::More; use Test::MinimumVersion; all_minimum_version_ok('5.014'); namespaces_clean.t000644001750001750 54713450370142 16346 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More; use Test::CleanNamespaces; my @modules = Test::CleanNamespaces->find_modules; #all_namespaces_clean; namespaces_clean grep { $_ ne 'Boxer::Types' } @modules; TODO: { local $TODO = 'uncertain how to clean or if a false positive'; namespaces_clean 'Boxer::Types'; } done_testing() pod.t000644001750001750 27413450370142 13644 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More; eval "use Test::Pod 1.00"; plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; all_pod_files_ok(); serialize.t000644001750001750 1022213450370142 15103 0ustar00jonasjonas000000000000Boxer-v1.4.0/t#!/usr/bin/perl use v5.14; use utf8; use strictures 2; use Test::More; use Test::Fatal; use Test::File::Contents; use File::Which; use Path::Tiny; use Log::Any::Test; use Log::Any qw($log); plan skip_all => 'reclass executable required' unless which('reclass'); use_ok('Boxer::Part::Reclass'); use_ok('Boxer::World::Reclass'); use_ok('Boxer::Task::Classify'); use_ok('Boxer::Task::Serialize'); my $from_reclass = new_ok( 'Boxer::Task::Classify' => [ datadir => path('examples'), ] ); my $world = $from_reclass->run; my $outdir = Path::Tiny->tempdir; note("Temporary directory is $outdir"); my $to_compositions = new_ok( 'Boxer::Task::Serialize' => [ world => $world, skeldir => path('share')->child('skel'), outdir => $outdir, node => 'parl-greens', format => [qw{preseed script}], ], ); ok $to_compositions->run; file_contents_like $outdir->child('preseed.cfg'), qr/\nd-i pkgsel\/include string acpi-support /, 'preseed.cfg includes install of acpi-support'; file_contents_like $outdir->child('preseed.cfg'), qr/\nd-i pkgsel\/include string .*\n.* cups-/, 'preseed.cfg includes avoidance of cups'; file_contents_like $outdir->child('preseed.cfg'), qr/\nd-i preseed\/late_command string .*\\\n suite=\S+\\\n chroot \/target apt-mark auto \\\n acpi-support-base/, 'preseed.cfg includes auto-marking of acpi-support-base'; file_contents_like $outdir->child('preseed.cfg'), qr{\n _setvar /target/etc/default/acpi-support }, 'preseed.cfg preserves "/target" prefix in paths'; file_contents_like $outdir->child('script.sh'), qr/\napt install acpi-support /, 'script.sh includes install of acpi-support'; file_contents_like $outdir->child('script.sh'), qr/\napt install .*\n.* cups-/, 'script.sh includes avoidance of cups'; file_contents_like $outdir->child('script.sh'), qr/\nsuite=\S+\n\napt-mark auto \\\n acpi-support-base/, 'script.sh includes auto-marking of acpi-support-base'; file_contents_like $outdir->child('script.sh'), qr{\n _setvar /etc/default/acpi-support }, 'script.sh strips "/target" prefix from paths'; $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir resolving logged' ); $log->contains_ok( qr/^Classifying with reclass /, 'classification logged' ); $log->category_contains_ok( 'Boxer::Task::Serialize', qr/^Serializing to preseed /, 'preseed logged' ); $log->category_contains_ok( 'Boxer::Task::Serialize', qr/^Serializing to script /, 'script logged' ); $log->empty_ok("no more logs"); my $preseeddir = Path::Tiny->tempdir; note("Temporary directory for preseed format is $preseeddir"); my $to_preseed = new_ok( 'Boxer::Task::Serialize' => [ world => $world, skeldir => path('share')->child('skel'), outdir => $preseeddir, node => 'lxp5', format => ['preseed'], ], ); ok $to_preseed->run; ok -e $preseeddir->child('preseed.cfg'), 'preseed.cfg generated'; ok !-e $preseeddir->child('script.sh'), 'script.sh not generated'; $log->contains_ok( qr/^Serializing to preseed /, 'preseed logged' ); $log->does_not_contain_ok( qr/^Serializing to /, 'no more logged' ); my $scriptdir = Path::Tiny->tempdir; note("Temporary directory for script format is $scriptdir"); my $to_script = new_ok( 'Boxer::Task::Serialize' => [ world => $world, skeldir => path('share')->child('skel'), outdir => $scriptdir, node => 'lxp5', format => ['script'], ], ); ok $to_script->run; ok !-e $scriptdir->child('preseed.cfg'), 'preseed.cfg not generated'; ok -e $scriptdir->child('script.sh'), 'script.sh generated'; $log->contains_ok( qr/^Serializing to script /, 'script logged' ); $log->does_not_contain_ok( qr/^Serializing to /, 'no more logged' ); like exception { Boxer::Task::Serialize->new( world => $world, skeldir => path('share')->child('skel'), outdir => Path::Tiny->tempdir, node => 'lxp5', format => ['wrong'], ); }, qr/Must be one or more of these words:/, 'Died as expected on wrong format'; is exception { Boxer::Task::Serialize->new( world => $world, skeldir => path('share')->child('skel'), outdir => Path::Tiny->tempdir, node => 'lxp5', format => [], ); }, undef, 'Died as expected on empty format'; done_testing(); lxp5.yml000644001750001750 134113450370142 17007 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/nodesclasses: - Admin - Admin.backup.remote - Admin.harden.account - Admin.harden.trustweb - Admin.disk.lvm - Console - Console.editor.vim - Console.mail - Console.mail.list - Console.multiplexer - Hardware.harden - Hardware.motherboard.intel.atom.32bit - Hardware.nic.realtek - Service.antivirus - Service.dhcp.client - Service.dns.authoritative - Service.git - Service.ids - Service.log - Service.web - Service.web.apache.gnutls - Service.web.uwsgi.python - Service.web.mail.cider # - Service.web.slippymap - Service.web.wiki.moinmoin - Service.mail.antispam - Service.mail.imap - Service.mail.list - Service.mail.sasl - Service.mail.sieve # - Service.mail.search - Service.ssh parl-greens.yml000644001750001750 13213450370142 20313 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/nodesclasses: - Task.harden.desktop - Desktop.locale.EU - Hardware.laptop.lenovo.edge145 CLI.pm000644001750001750 172513450370142 15246 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxerpackage Boxer::CLI; =encoding UTF-8 =head1 NAME Boxer::CLI - boxer command line utils =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use App::Cmd::Setup -app; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 SYNOPSIS use Boxer::CLI; BOXER::CLI->run; =head1 DESCRIPTION Support library for the L command-line tool. =head1 SEE ALSO L, L. =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Part.pm000644001750001750 175313450370142 15546 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxerpackage Boxer::Part; =encoding UTF-8 =head1 NAME Boxer::Part - software component =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Moo; use MooX::StrictConstructor; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 DESCRIPTION Outside the box is a World of software, consisting of parts. B represents a part of a . =head1 SEE ALSO L. =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Task.pm000644001750001750 327513450370142 15543 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxerpackage Boxer::Task; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Moo; use MooX::StrictConstructor; with qw( MooX::Role::Logger Boxer::Role::Interact ); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 DESCRIPTION This is the base class for L tasks. Tasks coerce, validate, and process application commands. Currently implemented tasks: =over 4 =item * L =item * L =item * L =back =head1 IDEAS Tasks are separated from commands to allow for different front-end interfaces, even if currently only a single command-line tool is provided. =head2 wrappers Might be useful to provide wrappers for existing command-line tools, preserving full behavior of the underlying tool only extending it with relevant boxer options. Examples: =over 4 =item * C =back =head2 web Would be cool to offer a web service where you could request a customized system image to be generated for you on demand. =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Types.pm000644001750001750 407213450370142 15741 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxerpackage Boxer::Types; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean; use Path::Tiny; use Type::Library -base, -declare => qw( DataDir ClassDir NodeDir SkelDir Basename Suite SerializationList ); use Type::Utils; use Types::Standard qw( ArrayRef Split Str Tuple StrMatch slurpy ); use Types::Common::String qw( NonEmptySimpleStr LowerCaseSimpleStr ); use Types::Path::Tiny qw(Dir); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; declare DataDir, as Dir, coercion => 1, message { 'Must be an existing directory containing directories for boxer classes and/or boxer nodes'; }; declare ClassDir, as Dir, coercion => 1, message {'Must be an existing directory containing boxer classes'}; declare NodeDir, as Dir, coercion => 1, message {'Must be an existing directory containing boxer nodes'}; declare SkelDir, as Dir, coercion => 1, message {'Must be an existing directory containing boxer skeleton files'}; declare Basename, as NonEmptySimpleStr, where { $_ eq path($_)->basename }, message {'Must be a bare filename with no directory parts'}; declare Suite, as LowerCaseSimpleStr, coercion => 1, message {'Must be a single lowercase word'}; my $SerializationList = "Type::Tiny"->new( name => 'SerializationList', parent => Tuple [ slurpy ArrayRef [ StrMatch [qr{^(?:preseed|script)$}] ] ], ); declare SerializationList, as $SerializationList->plus_coercions( Split [qr/[^a-z]+/] ), coercion => 1, message {'Must be one or more of these words: preseed script'}; =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; World.pm000644001750001750 235613450370142 15727 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxerpackage Boxer::World; =encoding UTF-8 =head1 NAME Boxer::World - set of software available to install =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Moo; use MooX::StrictConstructor; use Types::Standard qw( ArrayRef InstanceOf ); with qw(MooX::Role::Logger); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 DESCRIPTION Outside the box is a world of software. B is a class describing a collection of software available for installation into (or as) an operating system. =head1 SEE ALSO L. =cut has parts => ( is => 'ro', isa => ArrayRef [ InstanceOf ['Boxer::Part'] ], required => 1, ); =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; preseed.cfg.in000644001750001750 66413450370142 17212 0ustar00jonasjonas000000000000Boxer-v1.4.0/share/skel# This is a debian-installer preseed file. # It was generated by Boxer with node "[% node %]" d-i mirror/suite string [% suite %] [% IF pkglist %] [% pkgdesc %] d-i pkgsel/include string [% pkglist %][% END %] [% tweakdesc %] d-i preseed/late_command string set -e;\ suite=[% suite %][% IF nonfree %];\ nonfree=1[% END %][% IF pkgautolist %];\ chroot /target apt-mark auto \ [% pkgautolist %] || true[% END %];\ [% tweaklist %] script.sh.in000644001750001750 52013450370142 16731 0ustar00jonasjonas000000000000Boxer-v1.4.0/share/skel#!/bin/sh # This is an install/update script. # It was generated by Boxer with node "[% node %]" set -e [% IF pkglist %] [% pkgdesc %] apt install [% pkglist %][% END %] [% tweakdesc %] suite=[% suite %] [% IF nonfree %] nonfree=1[% END %] [% IF pkgautolist %] apt-mark auto \ [% pkgautolist %] || true [% END %] [% tweaklist %] auto.yml000644001750001750 45713450370142 20433 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Adminclasses: - Admin.etc.functions - Admin parameters: doc: admin: pkg: - include automated maintenance routines tweak: - auto-repair inconsistent filesystems during boot pkg: - unattended-upgrades - ntp tweak: - _setvar /target/etc/default/rcS FSCKFIX yes base.yml000644001750001750 10713450370142 20365 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Adminparameters: doc: admin: headline: - Administration init.yml000644001750001750 10713450370142 20416 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Adminparameters: doc: admin: headline: - Administration compression.yml000644001750001750 16413450370142 22371 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Consoleclasses: - cli.compression parameters: doc: console: pkg: - include console compression tools filemanager.yml000644001750001750 20513450370142 22276 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Consoleclasses: - cli.mc - Console parameters: doc: console: pkg: - install console file manager Midnight Commander init.yml000644001750001750 10213450370142 20763 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Consoleparameters: doc: console: headline: - Console mouse.yml000644001750001750 16313450370142 21157 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Consoleclasses: - cli.gpm - Console parameters: doc: console: pkg: - enable console mouse support tools.yml000644001750001750 31713450370142 21170 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Consoleclasses: - cli.less - Console parameters: doc: console: pkg: - include console helper tools pkg: - dfc - info - man-db - manpages - mr - mtr-tiny - ncdu base.yml000644001750001750 12313450370142 20744 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktopclasses: - x11 parameters: doc: desktop: headline: - Desktop harden.yml000644001750001750 12213450370142 21272 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktopclasses: - Desktop.email.harden - Desktop.tools.harden - Desktop.web.harden init.yml000644001750001750 12313450370142 20775 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktopclasses: - x11 parameters: doc: desktop: headline: - Desktop base.yml000644001750001750 10613450370142 21271 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Frameworkparameters: doc: framework: headline: - Framework base.yml000644001750001750 10413450370142 21067 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardwareparameters: doc: hardware: headline: - Hardware harden.yml000644001750001750 7613450370142 21406 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardwareclasses: - Hardware.net.pac.avoid - Hardware.tools.harden power.yml000644001750001750 37413450370142 21322 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardwareclasses: - hw.acpi.full - Admin.etc.functions - Hardware.base parameters: doc: hardware: tweak: - sleep when lid is closed pkg-avoid: - cpufrequtils tweak: - _setvar /target/etc/default/acpi-support LID_SLEEP true antivirus.yml000644001750001750 24313450370142 22050 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Serviceclasses: - cli.compression.uncommon - Service parameters: doc: service: pkg: - include antivirus service ClamAV pkg: - clamav-daemon base.yml000644001750001750 10213450370142 20730 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Serviceparameters: doc: service: headline: - Service git.yml000644001750001750 24313450370142 20607 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Serviceclasses: - Service.web.apache - Service parameters: doc: service: pkg: - include git service pkg: - gitweb - git-daemon-sysvinit ids.yml000644001750001750 21213450370142 20577 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Serviceclasses: - Service parameters: doc: service: pkg: - include intrusion detection system fail2ban pkg: - fail2ban init.yml000644001750001750 10213450370142 20761 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Serviceparameters: doc: service: headline: - Service ssh.yml000644001750001750 33113450370142 20617 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Serviceclasses: - cli.ssh-server - Service parameters: doc: service: pkg: - include remote access to console (ssh) pkg-auto: - ncurses-term - openssh-blacklist - openssh-blacklist-extra gpm.yml000644001750001750 3513450370142 17735 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/cliparameters: pkg: - gpm less.yml000644001750001750 3613450370142 20121 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/cliparameters: pkg: - less mc.yml000644001750001750 16513450370142 17575 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/cli#FIXME: check if antiword catdoc html2text and/or others are needed classes: - cli.web parameters: pkg: - mc ssh-server.yml000644001750001750 16113450370142 21273 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/cliparameters: pkg: - task-ssh-server - molly-guard pkg-auto: - openssh-server - openssh-client web.yml000644001750001750 14013450370142 17744 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/cli# elinks is arguably better, but not recognized by default by mc parameters: pkg: - links bluetooth.yml000644001750001750 4313450370142 21025 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hwparameters: pkg: - bluetooth crypto.yml000644001750001750 4113450370142 20336 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hwparameters: pkg: - haveged firmware.yml000644001750001750 17713450370142 20664 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hwparameters: pkg: - firmware-linux-free pkg-nonfree: - firmware-linux pkg-nonfree-auto: - firmware-linux-free power.yml000644001750001750 4613450370142 20157 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hwparameters: pkg: - cpufrequtils init.yml000644001750001750 4613450370142 17761 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/x11parameters: pkg: - xserver-xorg Command.pm000644001750001750 145313450370142 16622 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/CLIpackage Boxer::CLI::Command; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use Log::Any::Adapter qw; use App::Cmd::Setup-command; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; WithSkeleton.pm000644001750001750 522313450370142 20133 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/Filepackage Boxer::File::WithSkeleton; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use Path::Tiny; use Template::Tiny; use File::ShareDir qw(dist_dir); use Moo; use MooX::StrictConstructor; use Types::Standard qw(Maybe); use Types::TypeTiny qw(HashLike); use Types::Path::Tiny qw(Dir File Path); use Boxer::Types qw(SkelDir Basename); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; # permit callers to sloppily pass undefined values sub BUILDARGS { my ( $class, %args ) = @_; delete @args{ grep !defined( $args{$_} ), keys %args }; return {%args}; } has basename => ( is => 'ro', isa => Basename, ); has file => ( is => 'lazy', isa => Basename, default => sub { if ( $_[0]->basename ) { return $_[0]->basename; } elsif ( $_[0]->skeleton_suffix ) { return $_[0]->skeleton_path->basename( $_[0]->skeleton_suffix ); } }, ); has file_path => ( is => 'lazy', isa => Path, required => 1, default => sub { if ( $_[0]->file_dir and $_[0]->file ) { return $_[0]->file_dir->child( $_[0]->file ); } }, ); has file_dir => ( is => 'lazy', isa => Dir, default => sub { path('.') }, ); has skeleton => ( is => 'lazy', isa => Basename, default => sub { if ( $_[0]->basename and $_[0]->skeleton_dir and $_[0]->skeleton_suffix ) { return $_[0]->skeleton_dir->child( $_[0]->basename . $_[0]->skeleton_suffix )->basename; } }, ); has skeleton_path => ( is => 'lazy', isa => File, required => 1, default => sub { if ( $_[0]->skeleton_dir and $_[0]->skeleton ) { return $_[0]->skeleton_dir->child( $_[0]->skeleton ); } }, ); has skeleton_dir => ( is => 'lazy', isa => SkelDir, default => sub { path( dist_dir('Boxer'), 'skel' ) }, ); has skeleton_suffix => ( is => 'ro', isa => Basename, default => '.in', ); sub create { my ( $self, $vars ) = @_; my $template = Template::Tiny->new( TRIM => 1, ); my $content = ''; $template->process( \$self->skeleton_path->slurp, $vars, \$content ); $self->file_path->spew( $content . "\n" ); } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Reclass.pm000644001750001750 350613450370142 17140 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/Partpackage Boxer::Part::Reclass; =encoding UTF-8 =head1 NAME Boxer::Part::Reclass - software component as a reclass node or class =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Moo; use MooX::StrictConstructor; extends qw(Boxer::Part); use Types::Standard qw(Str Maybe ArrayRef HashRef); use Types::TypeTiny qw(StringLike); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 DESCRIPTION Outside the box is a World of software, consisting of parts. B represents a part of a L structured as a B node or class. =head1 SEE ALSO L. =cut has id => ( is => 'ro', isa => Str, ); has classes => ( is => 'ro', isa => Maybe [ ArrayRef [Str] ], ); has doc => ( is => 'ro', isa => HashRef, ); has pkg => ( is => 'ro', isa => ArrayRef [Str], ); has 'pkg-auto' => ( is => 'ro', isa => ArrayRef [Str], ); has 'pkg-avoid' => ( is => 'ro', isa => ArrayRef [Str], ); has 'pkg-nonfree' => ( is => 'ro', isa => ArrayRef [Str], ); has 'pkg-nonfree-auto' => ( is => 'ro', isa => ArrayRef [Str], ); has bug => ( is => 'ro', isa => ArrayRef [Str], ); has tweak => ( is => 'ro', isa => ArrayRef [Str], ); has epoch => ( is => 'ro', isa => Maybe [StringLike], ); =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Interact.pm000644001750001750 207613450370142 17311 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/Rolepackage Boxer::Role::Interact; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use Moo::Role; use Types::Standard qw< Bool >; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; has verbose => ( is => 'rw', isa => Bool, required => 1, default => sub {0}, ); has debug => ( is => 'rw', isa => Bool, required => 1, default => sub {0}, ); has dryrun => ( is => 'ro', isa => Bool, required => 1, default => sub {0}, ); =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Bootstrap.pm000644001750001750 522113450370142 17511 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/Taskpackage Boxer::Task::Bootstrap; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie qw(:all); use IPC::System::Simple qw(runx); use Moo; use MooX::StrictConstructor; extends qw(Boxer::Task); use Types::Standard qw( Bool Str InstanceOf ArrayRef Maybe ); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; has world => ( is => 'ro', isa => InstanceOf ['Boxer::World::Reclass'], required => 1, ); has node => ( is => 'ro', isa => Str, required => 1, ); has helper => ( is => 'ro', isa => Str, required => 1, ); has mode => ( is => 'ro', isa => Maybe [Str], ); has helper_args => ( is => 'ro', isa => ArrayRef, ); has nonfree => ( is => 'ro', isa => Bool, required => 1, default => sub {0}, ); has apt => ( is => 'lazy', isa => Bool, ); sub _build_apt { my ($self) = @_; my $flag; foreach my $helper (qw(mmdebstrap)) { if ( $self->{helper} eq $helper ) { $self->_logger->tracef( 'Enabling apt mode needed by bootstrap helper %s', $helper, ); return 1; } } return 0; } has dryrun => ( is => 'ro', isa => Bool, required => 1, default => sub {0}, ); sub run { my $self = shift; my $world = $self->world->flatten( $self->node, $self->nonfree, ); my @opts; my @pkgs = sort @{ $world->pkgs }; my @pkgs_avoid = sort @{ $world->pkgs_avoid }; if ( $self->apt ) { push @pkgs, sort map { $_ . '-' } @pkgs_avoid; @pkgs_avoid = (); } push @opts, '--include', join( ',', @pkgs ) if (@pkgs); push @opts, '--exclude', join( ',', @pkgs_avoid ) if (@pkgs_avoid); push @opts, $world->epoch, @{ $self->mode, $self->helper_args }; my @command; if ( $self->mode and $self->mode eq 'sudo' ) { @command = ( 'sudo', '--', $self->helper, @opts ); } else { @command = ( $self->helper, @opts ); } $self->_logger->info( "Bootstrap with " . $self->helper, $self->_logger->is_debug() ? { commandline => [@command] } : (), ); if ( $self->dryrun ) { $self->_logger->debug('Skip execute command in dry-run mode'); } else { runx @command; } 1; } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2019 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Classify.pm000644001750001750 476413450370142 17324 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/Taskpackage Boxer::Task::Classify; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie qw(:all); use IPC::System::Simple; use File::BaseDir qw(data_dirs); use Boxer::World::Reclass; use Moo; use MooX::StrictConstructor; extends qw(Boxer::Task); use Types::Standard qw(Maybe); use Boxer::Types qw( DataDir ClassDir NodeDir Suite ); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; # permit callers to sloppily pass undefined values sub BUILDARGS { my ( $class, %args ) = @_; delete @args{ grep !defined( $args{$_} ), keys %args }; return {%args}; } has datadir => ( is => 'lazy', isa => Maybe [DataDir], coerce => 1, required => 1, default => sub {undef}, ); has suite => ( is => 'ro', isa => Suite, required => 1, coerce => 1, default => sub {'buster'}, ); has classdir => ( is => 'lazy', isa => ClassDir, coerce => 1, required => 1, ); sub _build_classdir { my ($self) = @_; my $dir; if ( $self->datadir ) { $self->_logger->trace('Resolving nodedir from datadir'); $dir = $self->datadir->child('classes'); } else { $self->_logger->trace('Resolving nodedir from XDG_DATA_DIRS'); $dir = scalar data_dirs( 'boxer', $_[0]->suite, 'classes' ); } return $dir; } has nodedir => ( is => 'lazy', isa => NodeDir, coerce => 1, required => 1, ); sub _build_nodedir { my ($self) = @_; my $dir; if ( $self->datadir ) { $self->_logger->trace('Resolving nodedir from datadir'); $dir = $self->datadir->child('nodes'); } else { $self->_logger->trace('Setting nodedir to current directory'); $dir = '.'; } return $dir; } sub run { my $self = shift; my @args = ( suite => scalar $self->suite, classdir => scalar $self->classdir, nodedir => scalar $self->nodedir, ); $self->_logger->info( 'Classifying with reclass', $self->_logger->is_debug() ? {@args} : (), ); return Boxer::World::Reclass->new(@args); } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Serialize.pm000644001750001750 543313450370142 17470 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/Taskpackage Boxer::Task::Serialize; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Path::Tiny; use File::ShareDir qw(dist_dir); use Boxer::File::WithSkeleton; use Moo; use MooX::StrictConstructor; extends qw(Boxer::Task); use Types::Standard qw( Bool Maybe Str Undef InstanceOf ); use Types::Path::Tiny qw( Dir File Path ); use Boxer::Types qw( SkelDir SerializationList ); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; has world => ( is => 'ro', isa => InstanceOf ['Boxer::World::Reclass'], required => 1, ); has skeldir => ( is => 'ro', isa => Maybe [SkelDir], coerce => 1, ); has infile => ( is => 'ro', isa => File, coerce => 1, ); has altinfile => ( is => 'ro', isa => File, coerce => 1, ); has outdir => ( is => 'ro', isa => Dir, coerce => 1, ); has outfile => ( is => 'ro', isa => Path, coerce => 1, ); has altoutfile => ( is => 'ro', isa => Path, coerce => 1, ); has node => ( is => 'ro', isa => Str, required => 1, ); has format => ( is => 'ro', isa => SerializationList, coerce => 1, required => 1, ); has nonfree => ( is => 'ro', isa => Bool, required => 1, default => sub {0}, ); sub run { my $self = shift; my $world = $self->world->flatten( $self->node, $self->nonfree, ); if ( grep( /^preseed$/, @{ $self->format } ) ) { my @args = ( basename => 'preseed.cfg', skeleton_dir => $self->skeldir, skeleton_path => $self->infile, file_dir => $self->outdir, file_path => $self->outfile, ); $self->_logger->info( 'Serializing to preseed', $self->_logger->is_debug() ? {@args} : (), ); my $file = Boxer::File::WithSkeleton->new(@args); $world->as_file($file); } if ( grep( /^script$/, @{ $self->format } ) ) { my @args = ( basename => 'script.sh', skeleton_dir => $self->skeldir, skeleton_path => $self->altinfile, file_dir => $self->outdir, file_path => $self->altoutfile, ); $self->_logger->info( 'Serializing to script', $self->_logger->is_debug() ? {@args} : (), ); my $file = Boxer::File::WithSkeleton->new(@args); $world->as_file( $file, 1 ); } 1; } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Flat.pm000644001750001750 650113450370142 16611 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/Worldpackage Boxer::World::Flat; =encoding UTF-8 =head1 NAME Boxer::World::Flat - software for single use case =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Moo; use MooX::StrictConstructor; extends qw(Boxer::World); use Types::Standard qw( Maybe Bool Tuple ); use Types::TypeTiny qw( StringLike ArrayLike ); =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 DESCRIPTION Outside the box is a world of software. B is a class describing a collection of software available for installation into (or as) an operating system. =head1 SEE ALSO L. =cut has parts => ( is => 'ro', isa => Tuple [], default => sub { [] }, ); has node => ( is => 'ro', isa => StringLike, required => 1, ); has epoch => ( is => 'ro', isa => Maybe [StringLike], ); has pkgs => ( is => 'ro', isa => ArrayLike, required => 1, ); has pkgs_auto => ( is => 'ro', isa => ArrayLike, required => 1, ); has pkgs_avoid => ( is => 'ro', isa => ArrayLike, required => 1, ); has tweaks => ( is => 'ro', isa => ArrayLike, required => 1, ); has pkgdesc => ( is => 'ro', isa => StringLike, required => 1, ); has tweakdesc => ( is => 'ro', isa => StringLike, required => 1, ); has nonfree => ( is => 'ro', isa => Bool, required => 1, ); sub as_file { my ( $self, $file, $oldstyle ) = @_; my $pkgs = join( ',', sort @{ $self->pkgs } ); my $pkgs_avoid = join( ',', sort @{ $self->pkgs_avoid } ); my $pkgs_auto = join( ',', sort @{ $self->pkgs_auto } ); my $tweaks = join( ";\\\n ", @{ $self->tweaks } ); my $pkglist = join( ' ', sort @{ $self->pkgs } ); $pkglist .= " \\\n "; $pkglist .= join( ' ', sort map { $_ . '-' } @{ $self->pkgs_avoid } ); my $pkgautolist = join( ' ', sort @{ $self->pkgs_auto } ); my $tweaks_perl = $tweaks; $tweaks_perl =~ s,chroot\s+/target\s+,,g; $tweaks_perl =~ s,/target/,/,g; # TODO: maybe move below (or only $''{ part?) to reclass parser $tweaks_perl =~ s/\\\K''(?=n)|\$\K''(?=\{)//g; my %vars = ( node => $self->node, suite => $self->epoch, pkgs => $pkgs, pkgs_avoid => $pkgs_avoid, pkgs_auto => $pkgs_auto, pkgdesc => $self->pkgdesc, pkglist => $pkglist, tweakdesc => $self->tweakdesc, tweaks => $tweaks, tweaks_perl => $tweaks_perl, tweaklist => $tweaks, pkgautolist => $pkgautolist, nonfree => $self->nonfree, ); # TODO: Drop oldstyle templating format # (oldstyle preseed templates expect perl tweaks in regular tweaks string) if ($oldstyle) { my %altvars = %vars; $altvars{tweaklist} = $tweaks_perl; $file->create( \%altvars ); } else { $file->create( \%vars ); } 1; } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Reclass.pm000644001750001750 1135513450370142 17342 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/Worldpackage Boxer::World::Reclass; =encoding UTF-8 =head1 NAME Boxer::World::Reclass - software as serialized by reclass =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Carp qw; use Capture::Tiny qw(capture_stdout); use YAML::XS; use Try::Tiny; use Moo; use MooX::StrictConstructor; extends qw(Boxer::World); use Types::Standard qw( ArrayRef InstanceOf ); use Boxer::Types qw( ClassDir NodeDir Suite ); use Boxer::Part::Reclass; use Boxer::World::Flat; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; =head1 DESCRIPTION Outside the box is a world of software. B is a class describing a collection of software available for installation into (or as) an operating system. =head1 SEE ALSO L. =cut has suite => ( is => 'ro', isa => Suite, required => 1, ); has classdir => ( is => 'lazy', isa => ClassDir, required => 1, ); has nodedir => ( is => 'lazy', isa => NodeDir, required => 1, ); has parts => ( is => 'lazy', isa => ArrayRef [ InstanceOf ['Boxer::Part::Reclass'] ], init_arg => undef, ); sub _build_parts { my ($self) = @_; my $data = Load( scalar( capture_stdout { system( 'reclass', '-b', '', '-c', $self->classdir, '-u', $self->nodedir, '--inventory', ); } ) ); my @parts; for ( keys %{ $data->{nodes} } ) { push @parts, Boxer::Part::Reclass->new( id => $_, epoch => $self->suite, %{ $data->{nodes}{$_}{parameters} } ); } return [@parts]; } sub get_node_by_id { my ( $self, $id ) = @_; foreach ( @{ $self->parts } ) { if ( $_->id eq $id ) { return $_; } } croak "This world contains no node identified as \"" . $id . "\"."; } my $pos = 1; my @section_order = qw( Administration Service Console Desktop Language Framework Task Hardware ); my %section_order = map { $_ => $pos++ } @section_order; sub flatten { my ( $self, $node_id, $nonfree ) = @_; my $node = $self->get_node_by_id($node_id); ( $node->epoch ) or croak "Undefined epoch for node \"" . $self->node . "\"."; my %desc; my @section_keys = sort { ( $section_order{$a} // 1000 ) <=> ( $section_order{$b} // 1000 ) || $a cmp $b } keys %{ $node->{doc} }; foreach my $key (@section_keys) { my $headline = $node->{doc}{$key}{headline}[0] || $key; if (( $node->{pkg} and $node->{doc}{$key}{pkg} ) or ( $nonfree and $node->{'pkg-nonfree'} and $node->{doc}{$key}{'pkg-nonfree'} ) ) { push @{ $desc{pkg} }, "# $headline"; if ( $node->{pkg} ) { foreach ( @{ $node->{doc}{$key}{pkg} } ) { push @{ $desc{pkg} }, "# * $_"; } } if ( $nonfree and $node->{'pkg-nonfree'} ) { foreach ( @{ $node->{doc}{$key}{'pkg-nonfree'} } ) { push @{ $desc{pkg} }, "# * [non-free] $_"; } } } if ( $node->{tweak} and $node->{doc}{$key}{tweak} ) { push @{ $desc{tweak} }, "# $headline"; foreach ( @{ $node->{doc}{$key}{tweak} } ) { push @{ $desc{tweak} }, "# * $_"; } } } my $pkgdesc = defined( $desc{pkg} ) ? join( "\n", @{ $desc{pkg} } ) : ''; my $tweakdesc = defined( $desc{tweak} ) ? join( "\n", @{ $desc{tweak} } ) : ''; my @pkg = try { @{ $node->{pkg} } } catch { $self->_logger->warning('No packages resolved'); return (); }; my @pkgauto = try { @{ $node->{'pkg-auto'} } } catch { $self->_logger->warning('No package auto-markings resolved'); return (); }; my @pkgavoid = try { @{ $node->{'pkg-avoid'} } } catch { $self->_logger->warning('No package avoidance resolved'); return (); }; my @tweak = try { @{ $node->{tweak} } } catch { $self->_logger->warning('No tweaks resolved'); return (); }; if ($nonfree) { push @pkg, @{ $node->{'pkg-nonfree'} } if ( $node->{'pkg-nonfree'} ); push @pkgauto, @{ $node->{'pkg-nonfree-auto'} } if ( $node->{'pkg-nonfree-auto'} ); } chomp(@tweak); return Boxer::World::Flat->new( node => $node_id, epoch => $node->epoch, pkgs => \@pkg, pkgs_auto => \@pkgauto, pkgs_avoid => \@pkgavoid, tweaks => \@tweak, pkgdesc => $pkgdesc, tweakdesc => $tweakdesc, nonfree => $nonfree, # TODO: unset if none resolved ); } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; init.yml000644001750001750 12513450370142 21202 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/aptclasses: - Framework.pkg.apt.cli.aptitude - Admin.apt.popcon - Admin.apt.tools popcon.yml000644001750001750 23113450370142 21533 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/aptclasses: - Admin parameters: doc: admin: pkg: - include package usage reporting Popularity-Contest pkg: - popularity-contest init.yml000644001750001750 30613450370142 21664 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/backup#TODO: Add tweak to backup debconf preseed cache classes: - Admin parameters: doc: admin: pkg: - include backup system Backupninja pkg: - backupninja - debconf-utils remote.yml000644001750001750 22713450370142 22216 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/backupclasses: - Admin.backup parameters: doc: admin: pkg: - include Backupninja hook to save to remote host pkg: - rdiff-backup lvm.yml000644001750001750 22513450370142 21204 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/diskclasses: - Admin.base parameters: doc: admin: pkg: - include support and tools for Logical Volume Management pkg: - lvm2 functions.yml000644001750001750 105113450370142 22255 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/etcclasses: - Admin parameters: doc: admin: tweak: - define routines to make backup of and help edit config files tweak: - > _backup(){ set -e;\ if [ -e "$1.orig" ]; then \ :;\ elif [ -e "$1" ]; then \ cp -a "$1" "$1.orig";\ else \ touch "$1.orig";\ fi; } - > _clone(){ set -e;\ _backup "$2";\ cp -a "$1" "$2"; } - > _setvar(){ set -e;\ _backup "$1";\ sed -i -r \ -e "s,^#?($2)=.*,\\1=$3," "$1"; } track.yml000644001750001750 21713450370142 21334 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/etcclasses: - Admin parameters: doc: admin: tweak: - include config file VCS tracking tool etckeeper pkg: - etckeeper init.yml000644001750001750 45613450370142 21666 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/hardenclasses: - Admin.etc.track parameters: doc: admin: pkg: - include hardening tools pkg: - e2fsck-static - changetrack - fail2ban - harden - monkeysphere - rkhunter - samhain - sash - sudo - systraq - unhide.rb pkg-auto: - samhain - sash - unhide.rb trustweb.yml000644001750001750 21713450370142 22575 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/hardenclasses: - Admin parameters: doc: admin: pkg: - include web-of-trust hardening tool Monkeysphere pkg: - monkeysphere init.yml000644001750001750 17413450370142 22262 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/editorclasses: - Console parameters: doc: console: pkg: - install console editor GNU nano pkg: - nano vim.yml000644001750001750 16613450370142 22113 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/editorclasses: - Console parameters: doc: console: pkg: - install console editor ViM pkg: - vim init.yml000644001750001750 14113450370142 21710 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/mailclasses: - Console parameters: doc: console-mail: headline: - Console mail mutt.yml000644001750001750 20713450370142 21741 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/mailclasses: - Console.mail parameters: doc: console-mail: pkg: - Install console mail client Mutt pkg: - mutt tools.yml000644001750001750 21113450370142 22103 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/mailclasses: - Console.mail parameters: doc: console-mail: pkg: - include console mail helper tools pkg: - mb2md init.yml000644001750001750 14313450370142 22047 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/mediaclasses: - Console parameters: doc: console-media: headline: - Console media init.yml000644001750001750 14513450370142 22241 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/mobileclasses: - Console parameters: doc: console-mobile: headline: - Console mobile sync.yml000644001750001750 30013450370142 22243 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/mobileclasses: - Console.mobile parameters: doc: console-mobile: pkg: - include SyncEvolution console tool and http service pkg: - syncevolution - syncevolution-http init.yml000644001750001750 20513450370142 23341 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/multiplexerclasses: - Console parameters: doc: console: pkg: - install console multiplexer GNU screen pkg: - screen init.yml000644001750001750 14113450370142 21714 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/chatclasses: - Desktop parameters: doc: desktop-chat: headline: - Desktop chat base.yml000644001750001750 16013450370142 22034 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/emailclasses: - x11 - Desktop.base parameters: doc: desktop-email: headline: - Desktop email bidi.yml000644001750001750 24613450370142 22036 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/emailclasses: - Desktop.email parameters: doc: desktop-email: pkg: - include Icedove support for bidirectional text pkg: - icedove-l10n-bidiui harden.yml000644001750001750 5213450370142 22343 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/emailclasses: - Desktop.email.icedove.harden init.yml000644001750001750 32113450370142 22064 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/emailclasses: - Desktop - x11 parameters: doc: desktop-email: headline: - Desktop email pkg: - include Icedove email with sieve plugin pkg: - icedove - xul-ext-sieve EU.yml000644001750001750 13413450370142 21604 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/localeclasses: - Desktop.email.locale.EU - Desktop.office.locale.EU - Desktop.web.locale.EU init.yml000644001750001750 14313450370142 22056 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/mediaclasses: - Desktop parameters: doc: desktop-media: headline: - Desktop media init.yml000644001750001750 14513450370142 22250 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/mobileclasses: - Desktop parameters: doc: desktop-mobile: headline: - Desktop mobile sync.yml000644001750001750 46713450370142 22270 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/mobile#TODO: Stop listing evolution-data-server when DebianParl 1.0.5 is obsolete classes: - Console.mobile.sync - Desktop.media parameters: doc: desktop-mobile: pkg: - include SyncEvolution desktop tool pkg: - sync-ui - evolution-data-server pkg-auto: - evolution-data-server init.yml000644001750001750 15513450370142 22235 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/officeclasses: - Desktop - x11 parameters: doc: desktop-office: headline: - Desktop office presentation.yml000644001750001750 26013450370142 24002 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/officeclasses: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice Impress pkg: - libreoffice-impress - libreoffice-ogltrans spreadsheet.yml000644001750001750 21713450370142 23600 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/officeclasses: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice Calc pkg: - libreoffice-calc word-processor.yml000644001750001750 33313450370142 24260 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/officeclasses: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice Writer pkg: - libreoffice-writer pkg-avoid: - libreoffice-java-common - libreoffice-emailmerge init.yml000644001750001750 32313450370142 23124 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/schedulingclasses: - Desktop - Desktop.email parameters: doc: desktop-scheduling: headline: - Desktop scheduling pkg: - include Icedove extension Iceowl pkg: - iceowl-extension unicode.yml000644001750001750 22313450370142 24001 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/screensaverclasses: - Desktop parameters: doc: desktop: pkg: - include screensaver unicode-screensaver pkg: - unicode-screensaver harden.yml000644001750001750 32113450370142 22433 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/toolsclasses: - Hardware.harden - Desktop.tools.pgp - Desktop.base parameters: doc: desktop: pkg: - include desktop hardening helper tools pkg: - parcimonie - gnome-disk-utility base.yml000644001750001750 14413450370142 21524 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/webclasses: - Desktop.base parameters: doc: desktop-web: headline: - Desktop web harden.yml000644001750001750 5213450370142 22031 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/webclasses: - Desktop.web.iceweasel.harden init.yml000644001750001750 25113450370142 21554 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/webclasses: - Desktop parameters: doc: desktop-web: headline: - Desktop web pkg: - include Iceweasel web browser pkg: - iceweasel java.yml000644001750001750 31413450370142 21532 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/webclasses: - Language.java - Desktop.web parameters: doc: desktop-web: pkg: - include Iceweasel support for Java-applet pkg: - icedtea-6-plugin pkg-auto: - openjdk-6-jre base.yml000644001750001750 12313450370142 22610 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Framework/cryptoparameters: doc: framework-media: headline: - Crypto framework base.yml000644001750001750 12213450370143 22347 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Framework/mediaparameters: doc: framework-media: headline: - Media framework base.yml000644001750001750 12413450370143 22053 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Framework/pkgparameters: doc: framework-media: headline: - Package framework init.yml000644001750001750 10113450370143 21520 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/glclasses: - Hardware.gl.hardware - Hardware.gl.software.avoid init.yml000644001750001750 44713450370143 22432 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/laptopclasses: - Hardware.power - Hardware.net.bluetooth parameters: doc: hardware: pkg: - include low-level laptop tools parameters: pkg: - task-laptop pkg-auto: - bluetooth pkg-avoid: - bluez-cups - cups - printer-driver-all - hplip - hpijs bluetooth.yml000644001750001750 52613450370143 22761 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/netclasses: - hw.acpi.full - Admin.etc.functions - Hardware.base parameters: doc: hardware: pkg: - include support for Bluetooth hardware tweak: - modernize logic of WiFi/Bluetooth radio on/off button tweak: - _setvar /target/etc/default/acpi-support WIRELESS_BLUETOOTH_SYNC true pkg: - bluez harden.yml000644001750001750 21013450370143 22555 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/toolsclasses: - hw.crypto - Hardware.base parameters: doc: hardware: pkg: - include low-level crypto hardening tools base.yml000644001750001750 13313450370143 22001 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Language/javaclasses: - Language parameters: doc: Language.java: headline: - Java init.yml000644001750001750 10513450370143 22031 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Language/javaclasses: - Language.java.openjdk6 - Language.java.openjdk7.avoid client.yml000644001750001750 20313450370143 22215 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/dhcpclasses: - Service parameters: doc: service: pkg: - include DHCP client service pkg: - isc-dhcp-client init.yml000644001750001750 17413450370143 21711 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/dhcpclasses: - Service parameters: doc: service: pkg: - include DHCP service pkg: - isc-dhcp-server authoritative.yml000644001750001750 22113450370143 23475 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/dnsclasses: - Service.base parameters: doc: service: pkg: - include authoritative domain name service BIND pkg: - bind9 init.yml000644001750001750 14713450370143 21557 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/dnsclasses: - Service parameters: doc: service-dns: headline: - Domain name service init.yml000644001750001750 25313450370143 21552 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/logclasses: - Service parameters: doc: service-log: headline: - Syslog service pkg: - include syslog service Rsyslog pkg: - rsyslog remote.yml000644001750001750 26513450370143 22105 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/logclasses: - Service.log parameters: doc: service: pkg: - include Rsyslog plugin for secure remote logging pkg: - rsyslog-gnutls pkg-auto: - rsyslog antispam.yml000644001750001750 34013450370143 22561 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mailclasses: - Service.mail parameters: doc: service: pkg: - include antispam service AMaViS (with SpamAssassin) pkg: - amavisd-new - pyzor - razor - spamassassin pkg-avoid: - spamc base.yml000644001750001750 14613450370143 21663 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mailclasses: - Service.base parameters: doc: service-mail: headline: - Mail service imap.yml000644001750001750 30113450370143 21670 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mailclasses: - Service.mail.mda parameters: doc: service-mail: pkg: - include IMAP mail access service using Dovecot pkg: - dovecot-imapd pkg-auto: - dovecot-core init.yml000644001750001750 14113450370143 21707 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mailclasses: - Service parameters: doc: service-mail: headline: - Mail service list.yml000644001750001750 25013450370143 21720 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mailclasses: - Service.web.apache - Service.mail.mta parameters: doc: service-mail: pkg: - include mailinglist service Mailman pkg: - mailman mda.yml000644001750001750 22213450370143 21505 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mailclasses: - Service.mail parameters: doc: service-mail: pkg: - install mail delivery agent Dovecot pkg: - dovecot-core sasl.yml000644001750001750 37413450370143 21716 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mail#TODO: check if cyrus-sasl is still needed classes: - Service.mail.mta - Service.mail.mda parameters: doc: service-mail: pkg: - install SASL email authentication using Dovecot and Cyrus pkg: - dovecot-core - sasl2-bin sieve.yml000644001750001750 30213450370143 22056 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mailclasses: - Service.mail.mda parameters: doc: service-mail: pkg: - include Dovecot Sieve filter and Managesieve service pkg: - dovecot-sieve - dovecot-managesieve init.yml000644001750001750 11213450370143 21540 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/webparameters: doc: service-web: headline: - Web service desktop.yml000644001750001750 21413450370143 22237 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Task/hardenclasses: - Hardware.laptop - Hardware.gl - Admin.apt - Admin.auto - Desktop - Desktop.harden - Framework.media.wildmidi.limit init.yml000644001750001750 3713450370143 22461 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/cli/compressionparameters: pkg: - bzip2 uncommon.yml000644001750001750 22713450370143 23372 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/cli/compressionclasses: - cli.compression parameters: pkg: - arj - cabextract - lhasa - lzop - nomarch - p7zip - unrar-free - zoo full.yml000644001750001750 13713450370143 20723 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hw/acpiclasses: - hw.acpi parameters: pkg: - acpi-support pkg-auto: - acpi-support-base init.yml000644001750001750 5313450370143 20701 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hw/acpiparameters: pkg: - acpi-support-base init.yml000644001750001750 4413450370143 20525 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hw/macparameters: pkg: - macfanctld laptop.yml000644001750001750 13713450370143 21104 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hw/macclasses: - hw.mac parameters: pkg: - pommed pkg-nonfree: - isight-firmware-tools amd64.yml000644001750001750 10013450370143 20373 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hw/x86classes: - hw.acpi parameters: pkg: - linux-image-amd64 i486.yml000644001750001750 7613450370143 20146 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hw/x86classes: - hw.acpi parameters: pkg: - linux-image-486 i686.yml000644001750001750 7613450370143 20150 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/hw/x86classes: - hw.acpi parameters: pkg: - linux-image-686 gtk.yml000644001750001750 11313450370143 21247 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/x11/lightdmclasses: - x11.lightdm parameters: pkg-auto: - lightdm-gtk-greeter init.yml000644001750001750 12113450370143 21424 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/x11/lightdmclasses: - x11 parameters: pkg: - lightdm pkg-auto: - xserver-xorg About.pm000644001750001750 260513450370143 17675 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::About; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use Boxer::CLI -command; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; use constant { abstract => q[list which boxer plugins are installed], usage_desc => q[%c about], }; use constant FORMAT_STR => "%-36s%10s %s\n"; sub command_names { qw( about credits ); } sub opt_spec { return; } sub execute { my ( $self, $opt, $args ) = @_; my $auth = $self->app->can('AUTHORITY'); printf( FORMAT_STR, ref( $self->app ), $self->app->VERSION, $auth ? $self->app->$auth || '???' : '???', ); foreach my $cmd ( sort $self->app->command_plugins ) { my $auth = $cmd->can('AUTHORITY'); printf( FORMAT_STR, $cmd, $cmd->VERSION, $auth ? $cmd->$auth || '???' : '???', ); } } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Aliases.pm000644001750001750 306113450370143 20201 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::Aliases; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use match::simple qw(match); use Boxer::CLI -command; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; use constant { abstract => q[show aliases for boxer commands], usage_desc => q[%c aliases], }; sub description { <<'DESCRIPTION'; Some boxer commands can be invoked with shorter aliases. boxer version boxer --version # same thing The aliases command (which, ironically, has no shorter alias) shows existing aliases. DESCRIPTION } sub command_names { qw( aliases ); } sub opt_spec { return; } sub execute { my ( $self, $opt, $args ) = @_; my $filter = scalar(@$args) ? $args : sub { not( match( shift, [qw(aliases commands help)] ) ) }; foreach my $cmd ( sort $self->app->command_plugins ) { my ( $preferred, @aliases ) = $cmd->command_names; printf( "%-16s: %s\n", $preferred, "@aliases" ) if match( $preferred, $filter ); } } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Bootstrap.pm000644001750001750 522613450370143 20602 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::Bootstrap; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use Path::Tiny; use List::MoreUtils qw(before after); use Module::Runtime qw/use_module/; use Boxer::CLI -command; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; use constant { abstract => q[bootstrap system image from reclass node], usage_desc => q[%c bootstrap %o NODE [NODE...] [-- helper-options]], }; sub description { <<'DESCRIPTION'; Bootstrap a system image. Generate a filesystem image. Input is one or more reclass nodes to resolve using a set of reclass classes, and output is one or more images generated using a bootstrapping tool. DESCRIPTION } sub command_names { qw( bootstrap ); } sub opt_spec { return ( [ "suite=s", "suite of classes to use (buster)" ], [ "nodedir=s", "location of nodes (current dir)" ], [ "classdir=s", "location of classes (XDG datadir + suite/classes)" ], [ "datadir=s", "location containing nodes and classes" ], [ "skeldir=s", "location of skeleton files (use builtin)" ], [ "mode=s", "mode passed to helper, and use sudo in sudo mode" ], [ "helper=s", "bootstrapping tool to use (mmdebstrap)" ], [ "nonfree", "enable use of contrib and non-free code" ], [ "dryrun", "only echo command, without executing it" ], [ "verbose|v", "verbose output" ], ); } sub execute { my $self = shift; my ( $opt, $args ) = @_; Log::Any::Adapter->set( 'Screen', default_level => 'info' ) if ( $opt->{verbose} ); my @args = before { $_ eq '--' } @{$args}; my @helper_args = after { $_ eq '--' } @{$args}; my $world = use_module('Boxer::Task::Classify')->new( suite => $opt->{suite}, nodedir => $opt->{nodedir}, classdir => $opt->{classdir}, datadir => $opt->{datadir}, )->run; for my $node (@args) { use_module('Boxer::Task::Bootstrap')->new( world => $world, helper => $opt->{helper} || 'mmdebstrap', mode => $opt->{mode}, helper_args => [@helper_args], nonfree => $opt->{nonfree}, dryrun => $opt->{dryrun}, node => $node, )->run; } } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2019 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Commands.pm000644001750001750 223213450370143 20360 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::Commands; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use Boxer::CLI -command; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; require App::Cmd::Command::commands; our @ISA; unshift @ISA, 'App::Cmd::Command::commands'; use constant { abstract => q[list installed boxer commands], }; sub sort_commands { my ( $self, @commands ) = @_; my $float = qr/^(?:help|commands|aliases|about)$/; my @head = sort grep { $_ =~ $float } @commands; my @tail = sort grep { $_ !~ $float } @commands; return ( \@head, \@tail ); } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; Compose.pm000644001750001750 446013450370143 20231 0ustar00jonasjonas000000000000Boxer-v1.4.0/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::Compose; =encoding UTF-8 =cut use v5.14; use utf8; use strictures 2; use Role::Commons -all; use namespace::autoclean 0.16; use Path::Tiny; use Module::Runtime qw/use_module/; use Boxer::CLI -command; =head1 VERSION Version v1.4.0 =cut our $VERSION = "v1.4.0"; use constant { abstract => q[compose system recipe from reclass node], usage_desc => q[%c compose %o NODE [NODE...]], }; sub description { <<'DESCRIPTION'; Compose a system recipe. Resolve a recipe to build a system. Input is one or more reclass nodes to resolve using a set of reclass classes, and output is one or more recipies serialized in one or more formats. DESCRIPTION } sub command_names { qw( compose ); } sub opt_spec { return ( [ "suite=s", "suite of classes to use (buster)" ], [ "nodedir=s", "location of nodes (current dir)" ], [ "classdir=s", "location of classes (XDG datadir + suite/classes)" ], [ "datadir=s", "location containing nodes and classes" ], [ "skeldir=s", "location of skeleton files (use builtin)" ], [ "format=s", "serialize into these formats (preseed script)" ], [ "nonfree", "enable use of contrib and non-free code" ], [ "verbose|v", "verbose output" ], ); } sub execute { my $self = shift; my ( $opt, $args ) = @_; Log::Any::Adapter->set( 'Screen', default_level => 'info' ) if ( $opt->{verbose} ); my $world = use_module('Boxer::Task::Classify')->new( suite => $opt->{suite}, nodedir => $opt->{nodedir}, classdir => $opt->{classdir}, datadir => $opt->{datadir}, )->run; for my $node (@$args) { use_module('Boxer::Task::Serialize')->new( world => $world, skeldir => $opt->{skeldir}, format => $opt->{format} || 'preseed script', nonfree => $opt->{nonfree}, node => $node, )->run; } } =head1 AUTHOR Jonas Smedegaard C<< >>. =cut our $AUTHORITY = 'cpan:JONASS'; =head1 COPYRIGHT AND LICENCE Copyright © 2013-2016 Jonas Smedegaard This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =head1 DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. =cut 1; all.yml000644001750001750 26713450370143 21767 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/apt/autoclasses: - Admin.apt.auto.core parameters: doc: admin: pkg: - mark misc. packages, relevant only as dependencies, as auto-installed pkg-auto: - vim-common core.yml000644001750001750 113013450370143 22155 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/apt/auto#TODO: Stop install bash-completion or uuid-runtime when bug fixed in stable #FIXME: File bugreport about bash-completion and uuid-runtime not installed classes: - Admin.apt.auto.functions parameters: doc: admin: tweak: - fix mark auto-installed essential packages + dependencies (bug#742977) pkg: - bash-completion - uuid-runtime pkg-auto: - bash-completion - grub-common - isc-dhcp-common - tasksel-data - uuid-runtime tweak: - > chroot /target apt-mark auto \ $(_pkganddeepdeps $(_pkgessentials) apt linux-image-*) || true functions.yml000644001750001750 252213450370143 23243 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/apt/autoparameters: doc: admin: tweak: - define routines to resolve package dependencies tweak: - > _pkgdeps(){ set -e;\ chroot /target dpkg-query \ -Wf=',$''{Pre-Depends},$''{Depends},$''{Recommends}\n' $* 2>/dev/null \ | sed -r \ -e 's/[,|] *([a-z0-9.+-]+)?(:\s+)?( *[^|,]*)?/\1\n/g' \ | sed '/^$/d'|sort -u; } - > _pkg2re(){ set -e;\ echo $* \ | sed -r \ -e 's/\s+/\|/g;' \ -e 's/^\|//;' \ -e 's/([.+-])/\\\1/g;' \ -e 's/\|$//'; } - > _pkgreal(){ set -e;\ chroot /target dpkg-query \ -Wf='$''{Package},$''{Provides},\n' \ | sed -r \ -e '/,,/d;' \ -e 's/^([a-z0-9.+-]+).*[,|] *('"$(_pkg2re $*)"')[ :,]/\1/;' \ -e '/,/d'; } - > _pkganddeepdeps(){ set -e;\ rest=$*;\ all=$rest;\ for i in 1 2 3 4 5; do \ deps=$(_pkgdeps $rest);\ rest="$deps $(_pkgreal $deps)";\ all="$all $rest";\ done;\ echo $all \ | sed -r \ -e 's/\s+/\n/g' \ | sort -u; } - > _pkgessentials(){ set -e;\ chroot /target dpkg-query \ -Wf='$''{Package}%$''{Essential}\n' \ | sed -r \ -e 's/(.*)%yes/\1/;' \ -e '/%/d'; } changes.yml000644001750001750 21113450370143 23004 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/apt/toolsclasses: - Admin.base parameters: doc: admin: pkg: - include APT hook apt-listchanges pkg: - apt-listchanges init.yml000644001750001750 4513450370143 22324 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/apt/toolsclasses: - Admin.apt.tools.changes init.yml000644001750001750 30613450370143 23315 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/harden/accountclasses: - Admin.harden parameters: doc: admin: pkg: - include passive account hardening PAM plugin cracklib pkg: - libpam-cracklib - miscfiles pkg-auto: - miscfiles strong.yml000644001750001750 23613450370143 23670 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Admin/harden/accountclasses: - Admin.harden.account parameters: doc: admin: pkg: - include proactive account hardening tool John the Ripper pkg: - john init.yml000644001750001750 4513450370143 22647 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/mail/listclasses: - Console.mail.list.tools tools.yml000644001750001750 25313450370143 23065 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/mail/listclasses: - Console.mail parameters: doc: console-mail: pkg: - include console tool listadmin to moderate Mailman mailinglists pkg: - listadmin alsa.yml000644001750001750 21413450370143 23125 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Console/media/audioclasses: - Console.media parameters: doc: console-media: pkg: - include core ALSA audio tools pkg: - alsa-utils crypto.yml000644001750001750 25413450370143 23551 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/chat/pidginclasses: - Desktop.chat.pidgin parameters: doc: desktop-chat: pkg: - include Pidgin crypto plugin for Off-The-Record protocol pkg: - pidgin-otr init.yml000644001750001750 20313450370143 23166 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/chat/pidginclasses: - Desktop.chat parameters: doc: desktop-chat: pkg: - include chat client Pidgin pkg: - pidgin base.yml000644001750001750 26513450370143 23461 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/email/icedoveclasses: - Desktop.email.base parameters: doc: desktop-email: headline: - Desktop email pkg: - include Icedove email client pkg: - icedove harden.yml000644001750001750 25013450370143 24002 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/email/icedoveclasses: - Hardware.harden - Desktop.email.icedove.base parameters: doc: desktop-email: pkg: - include Icedove PGP plugin pkg: - enigmail ALL.yml000644001750001750 22013450370143 22767 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/email/localeclasses: - Desktop.email parameters: doc: desktop-email: pkg: - include all Icedove locales pkg: - icedove-l10n-all AMERICAS.yml000644001750001750 26413450370143 23553 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/email/localeclasses: - Desktop.email parameters: doc: desktop-email: pkg: - include Icedove locales for Americas pkg: - icedove-l10n-es-ar - icedove-l10n-pt-br ASIA.yml000644001750001750 72613450370143 23107 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/email/localeclasses: - Desktop.email parameters: doc: desktop-email: pkg: - include Icedove locales for Asia (UN M.49 definition) pkg: - icedove-l10n-ar - icedove-l10n-bn-bd - icedove-l10n-he - icedove-l10n-id - icedove-l10n-ja - icedove-l10n-ko - icedove-l10n-pa-in - icedove-l10n-ru - icedove-l10n-si - icedove-l10n-ta-lk - icedove-l10n-tr - icedove-l10n-vi - icedove-l10n-zh-cn - icedove-l10n-zh-tw EU.yml000644001750001750 132213450370143 22714 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/email/locale# bg cs da nl en-gb et fi fr de el hu ga-ie it lt pl pt-pt ro sk sl es-es sv-se classes: - Desktop.email parameters: doc: desktop-email: pkg: - include Icedove locales for European Union (except Maltese or Croatian) pkg: - icedove-l10n-bg - icedove-l10n-cs - icedove-l10n-da - icedove-l10n-de - icedove-l10n-el - icedove-l10n-en-gb - icedove-l10n-es-es - icedove-l10n-et - icedove-l10n-fi - icedove-l10n-fr - icedove-l10n-ga-ie - icedove-l10n-hu - icedove-l10n-it - icedove-l10n-lt - icedove-l10n-nl - icedove-l10n-pl - icedove-l10n-pt-pt - icedove-l10n-ro - icedove-l10n-sk - icedove-l10n-sl - icedove-l10n-sv-se EUROPE.yml000644001750001750 103713450370143 23405 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/email/localeclasses: - Desktop.email.locale.EU parameters: doc: desktop-email: pkg: - include Icedove locales for Europe (UN M.49 definition) pkg: - icedove-l10n-ast - icedove-l10n-be - icedove-l10n-br - icedove-l10n-ca - icedove-l10n-eu - icedove-l10n-fy-nl - icedove-l10n-gd - icedove-l10n-gl - icedove-l10n-is - icedove-l10n-nb-no - icedove-l10n-nn-no - icedove-l10n-rm - icedove-l10n-ru - icedove-l10n-sq - icedove-l10n-sr - icedove-l10n-tr - icedove-l10n-uk INDIA.yml000644001750001750 200013450370143 23221 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/email/locale#TODO: switch from bn-bd to bn-in if that emerges at some point #TODO: switch from ta-lk to ta (or ta-in) if that emerges at some point # languages (and in paranthesis: locales, and scripts when exceptional) # union: Hindi(hi,devanagari) English(en-GB) # 8th Schedule additions: Assamese(as) Bengali(bn) Bodo(brx) Dogri(doi) # Gujarati(gu) Kannada(kn) Kashmiri(ks,persian/perso-arabic) # Konkani(kok) Maithili(mai,tirhuta) Malayalam(ml) # Manipuri/Meitei/Meithei(mni) Marathi(mr) Nepali(ne) Oriya(or) # Punjabi(pa,gurmukhi/shahmukhi) Sanskrit(sa) # Santali(sat,ol chiki/ol cemet) Sindhi(sd,khudabadi,landa) Tamil(ta) # Telugu(te) Urdu(ur) # state only: Garo(grt) Khasi(kha) Kokborok(trp/ria/tpe/usi/xtr) Mizo(lus) # bn-bd en-gb pa-in ta-lk classes: - Desktop.email - Desktop.email.bidi parameters: doc: desktop-email: pkg: - include Icedove locales for official languages of India pkg: - icedove-l10n-bn-bd - icedove-l10n-en-gb - icedove-l10n-pa-in - icedove-l10n-ta-lk alsa.yml000644001750001750 25713450370143 23143 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/media/audioclasses: - Console.media.audio.alsa - Desktop.media parameters: doc: desktop-media: pkg: - include simple ALSA volume control Volti pkg: - volti pulseaudio.yml000644001750001750 27413450370143 24374 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/media/audioclasses: - Console.media.audio.pulseaudio - Desktop.media parameters: doc: desktop-media: pkg: - include PulseAudio desktop volume control pkg: - pavucontrol AFRICA.yml000644001750001750 33613450370143 23460 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/office/localeclasses: - Desktop.office.locale.ZA parameters: doc: desktop-office: pkg: - include LibreOffice locales for Africa pkg: - libreoffice-l10n-dz - libreoffice-l10n-om - libreoffice-l10n-rw ALL.yml000644001750001750 41213450370143 23136 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/office/localeclasses: - Desktop.office.locale.AFRICA - Desktop.office.locale.AMERICAS - Desktop.office.locale.ASIA - Desktop.office.locale.EUROPE parameters: doc: desktop-office: pkg: - include all LibreOffice locales pkg: - libreoffice-l10n-eo AMERICAS.yml000644001750001750 145613450370143 23743 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/office/localeclasses: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice locales for Americas pkg: - libreoffice-l10n-pt-br Asia: - libreoffice-l10n-ar - libreoffice-l10n-fa - libreoffice-l10n-he - libreoffice-l10n-id - libreoffice-l10n-ja - libreoffice-l10n-km - libreoffice-l10n-ko - libreoffice-l10n-ku - libreoffice-l10n-mn - libreoffice-l10n-ne - libreoffice-l10n-ru - libreoffice-l10n-si - libreoffice-l10n-tg - libreoffice-l10n-th - libreoffice-l10n-tr - libreoffice-l10n-ug - libreoffice-l10n-uz - libreoffice-l10n-vi - libreoffice-l10n-zh-cn - libreoffice-l10n-zh-tw Africa: - libreoffice-l10n-dz - libreoffice-l10n-om - libreoffice-l10n-rw All: - libreoffice-l10n-eo ASIA.yml000644001750001750 125413450370143 23270 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/office/localeclasses: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice locales for Asia pkg: - libreoffice-l10n-ar - libreoffice-l10n-fa - libreoffice-l10n-he - libreoffice-l10n-id - libreoffice-l10n-in - libreoffice-l10n-ja - libreoffice-l10n-km - libreoffice-l10n-ko - libreoffice-l10n-ku - libreoffice-l10n-mn - libreoffice-l10n-ne - libreoffice-l10n-ru - libreoffice-l10n-si - libreoffice-l10n-tg - libreoffice-l10n-th - libreoffice-l10n-tr - libreoffice-l10n-ug - libreoffice-l10n-uz - libreoffice-l10n-vi - libreoffice-l10n-zh-cn - libreoffice-l10n-zh-tw EU.yml000644001750001750 150213450370143 23060 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/office/locale# bg hr cs da nl en-gb et fi fr de el hu ga it lv lt pl pt ro sk sl es sv classes: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice locales for European Union (except Maltese) pkg: - libreoffice-l10n-bg - libreoffice-l10n-hr - libreoffice-l10n-cs - libreoffice-l10n-da - libreoffice-l10n-nl - libreoffice-l10n-en-gb - libreoffice-l10n-et - libreoffice-l10n-fi - libreoffice-l10n-fr - libreoffice-l10n-de - libreoffice-l10n-el - libreoffice-l10n-hu - libreoffice-l10n-ga - libreoffice-l10n-it - libreoffice-l10n-lv - libreoffice-l10n-lt - libreoffice-l10n-pl - libreoffice-l10n-pt - libreoffice-l10n-ro - libreoffice-l10n-sk - libreoffice-l10n-sl - libreoffice-l10n-es - libreoffice-l10n-sv EUROPE.yml000644001750001750 117213450370143 23551 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/office/localeclasses: - Desktop.office.locale.EU parameters: doc: desktop-office: pkg: - include LibreOffice locales for Europe (UN M.49 definition) pkg: - libreoffice-l10n-ast - libreoffice-l10n-be - libreoffice-l10n-br - libreoffice-l10n-bs - libreoffice-l10n-ca - libreoffice-l10n-cy - libreoffice-l10n-eu - libreoffice-l10n-gl - libreoffice-l10n-is - libreoffice-l10n-ka - libreoffice-l10n-mk - libreoffice-l10n-nb - libreoffice-l10n-nn - libreoffice-l10n-oc - libreoffice-l10n-ru - libreoffice-l10n-sr - libreoffice-l10n-tr - libreoffice-l10n-uk INDIA.yml000644001750001750 151113450370143 23373 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/office/locale# languages (and in paranthesis: locales, and scripts when exceptional) # union: Hindi(hi,devanagari) English(en-GB) # 8th Schedule additions: Assamese(as) Bengali(bn) Bodo(brx) Dogri(doi) # Gujarati(gu) Kannada(kn) Kashmiri(ks,persian/perso-arabic) # Konkani(kok) Maithili(mai,tirhuta) Malayalam(ml) # Manipuri/Meitei/Meithei(mni) Marathi(mr) Nepali(ne) Oriya(or) # Punjabi(pa,gurmukhi/shahmukhi) Sanskrit(sa) # Santali(sat,ol chiki/ol cemet) Sindhi(sd,khudabadi,landa) Tamil(ta) # Telugu(te) Urdu(ur) # state only: Garo(grt) Khasi(kha) Kokborok(trp/ria/tpe/usi/xtr) Mizo(lus) # as bn en-gb gu hi ml mr or pa-in ta te classes: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice locales for official languages of India pkg: - libreoffice-l10n-in - libreoffice-l10n-en-gb ZA.yml000644001750001750 27413450370143 23046 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/office/localeclasses: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice locales for official languages of South Africa pkg: - libreoffice-l10n-za gtk.yml000644001750001750 6113450370143 22527 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/tools/pgpclasses: - Framework.crypto.gnupg.pinentry.gtk init.yml000644001750001750 4313450370143 22705 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/tools/pgpclasses: - Desktop.tools.pgp.gtk base.yml000644001750001750 21413450370143 23464 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/iceweaselclasses: - Desktop.web.base parameters: doc: desktop-web: pkg: - include Iceweasel web browser pkg: - iceweasel harden.yml000644001750001750 50113450370143 24012 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/iceweaselclasses: - Hardware.harden - Desktop.web.iceweasel.base parameters: doc: desktop-web: pkg: - include Iceweasel security plugins pkg: - xul-ext-certificatepatrol - xul-ext-cookie-monster - xul-ext-flashblock - xul-ext-noscript - xul-ext-refcontrol - xul-ext-requestpolicy AFRICA.yml000644001750001750 53413450370143 23002 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/localeclasses: - Desktop.web parameters: doc: desktop-web: pkg: - include Iceweasel locales for Africa pkg: - iceweasel-l10n-ach - iceweasel-l10n-af - iceweasel-l10n-ak - iceweasel-l10n-en-za - iceweasel-l10n-ff - iceweasel-l10n-lg - iceweasel-l10n-nso - iceweasel-l10n-son - iceweasel-l10n-zu ALL.yml000644001750001750 22013450370143 22455 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/localeclasses: - Desktop.web parameters: doc: desktop-web: pkg: - include all Iceweasel locales pkg: - iceweasel-l10n-all AMERICAS.yml000644001750001750 35413450370143 23241 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/localeclasses: - Desktop.web parameters: doc: desktop-web: pkg: - include Iceweasel locales for Americas pkg: - iceweasel-l10n-es-ar - iceweasel-l10n-es-cl - iceweasel-l10n-es-mx - iceweasel-l10n-pt-br ASIA.yml000644001750001750 154513450370143 22615 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/localeclasses: - Desktop.web parameters: doc: desktop-web: pkg: - include Iceweasel locales for Asia pkg: - iceweasel-l10n-ar - iceweasel-l10n-as - iceweasel-l10n-bn-bd - iceweasel-l10n-bn-in - iceweasel-l10n-fa - iceweasel-l10n-gu-in - iceweasel-l10n-he - iceweasel-l10n-hi-in - iceweasel-l10n-id - iceweasel-l10n-ja - iceweasel-l10n-kk - iceweasel-l10n-km - iceweasel-l10n-kn - iceweasel-l10n-ko - iceweasel-l10n-ku - iceweasel-l10n-mai - iceweasel-l10n-ml - iceweasel-l10n-mr - iceweasel-l10n-or - iceweasel-l10n-pa-in - iceweasel-l10n-ru - iceweasel-l10n-si - iceweasel-l10n-ta - iceweasel-l10n-ta-lk - iceweasel-l10n-te - iceweasel-l10n-th - iceweasel-l10n-tr - iceweasel-l10n-vi - iceweasel-l10n-zh-cn - iceweasel-l10n-zh-tw EU.yml000644001750001750 141113450370143 22401 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/locale# bg hr cs da nl en-gb et fi fr de el hu ga-ie it lt pl pt-pt ro sk sl es-es sv-se classes: - Desktop.web parameters: doc: desktop-web: pkg: - include Iceweasel locales for European Union (except Maltese) pkg: - iceweasel-l10n-bg - iceweasel-l10n-hr - iceweasel-l10n-cs - iceweasel-l10n-da - iceweasel-l10n-nl - iceweasel-l10n-en-gb - iceweasel-l10n-et - iceweasel-l10n-fi - iceweasel-l10n-fr - iceweasel-l10n-de - iceweasel-l10n-el - iceweasel-l10n-hu - iceweasel-l10n-ga-ie - iceweasel-l10n-it - iceweasel-l10n-lt - iceweasel-l10n-pl - iceweasel-l10n-pt-pt - iceweasel-l10n-ro - iceweasel-l10n-sk - iceweasel-l10n-sl - iceweasel-l10n-es-es - iceweasel-l10n-sv-se EUROPE.yml000644001750001750 140413450370143 23071 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/localeclasses: - Desktop.web.locale.EU parameters: doc: desktop-web: pkg: - include Iceweasel locales for Europe (UN M.49 definition) pkg: - iceweasel-l10n-ast - iceweasel-l10n-be - iceweasel-l10n-br - iceweasel-l10n-bs - iceweasel-l10n-ca - iceweasel-l10n-csb - iceweasel-l10n-cy - iceweasel-l10n-eu - iceweasel-l10n-fy-nl - iceweasel-l10n-gd - iceweasel-l10n-gl - iceweasel-l10n-hy-am - iceweasel-l10n-is - iceweasel-l10n-kk - iceweasel-l10n-lij - iceweasel-l10n-lv - iceweasel-l10n-mk - iceweasel-l10n-nb-no - iceweasel-l10n-nn-no - iceweasel-l10n-rm - iceweasel-l10n-ru - iceweasel-l10n-sq - iceweasel-l10n-sr - iceweasel-l10n-tr - iceweasel-l10n-uk INDIA.yml000644001750001750 213413450370143 22717 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Desktop/web/locale# languages (and in paranthesis: locales, and scripts when exceptional) # union: Hindi(hi,devanagari) English(en-GB) # 8th Schedule additions: Assamese(as) Bengali(bn) Bodo(brx) Dogri(doi) # Gujarati(gu) Kannada(kn) Kashmiri(ks,persian/perso-arabic) # Konkani(kok) Maithili(mai,tirhuta) Malayalam(ml) # Manipuri/Meitei/Meithei(mni) Marathi(mr) Nepali(ne) Oriya(or) # Punjabi(pa,gurmukhi/shahmukhi) Sanskrit(sa) # Santali(sat,ol chiki/ol cemet) Sindhi(sd,khudabadi,landa) Tamil(ta) # Telugu(te) Urdu(ur) # state only: Garo(grt) Khasi(kha) Kokborok(trp/ria/tpe/usi/xtr) Mizo(lus) # as bn-in en-gb gu-in hi-in kn mai ml mr or ta te classes: - Desktop.web parameters: doc: desktop-web: pkg: - include Iceweasel locales for official languages of India pkg: - iceweasel-l10n-as - iceweasel-l10n-bn-in - iceweasel-l10n-en-gb - iceweasel-l10n-gu-in - iceweasel-l10n-hi-in - iceweasel-l10n-kn - iceweasel-l10n-mai - iceweasel-l10n-ml - iceweasel-l10n-mr - iceweasel-l10n-or - iceweasel-l10n-pa-in - iceweasel-l10n-ta - iceweasel-l10n-te limit.yml000644001750001750 23613450370143 24363 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Framework/media/wildmidiclasses: - Framework.media.base parameters: bug: - 612509 doc: framework: pkg: - exclude MIDI patches pkg-avoid: - freepats init.yml000644001750001750 22213450370143 23321 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/gl/hardwareclasses: - Hardware.base parameters: doc: hardware: pkg: - include OpenGL hardware rasterizers pkg: - libgl1-mesa-dri avoid.yml000644001750001750 23213450370143 23516 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/gl/softwareclasses: - Hardware.base parameters: doc: hardware: pkg: - exclude OpenGL software rasterizers pkg-avoid: - libgl1-mesa-swx11 aao725.yml000644001750001750 30113450370143 23364 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/laptop/acerclasses: - Hardware.motherboard.amd.c60 - Hardware.nic.broadcom.sta - Hardware.laptop parameters: doc: hardware: pkg: - include support for Acer Aspire One 725 laptop macbook2-1.yml000644001750001750 27113450370143 24416 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/laptop/appleclasses: - hw.mac.laptop - Hardware.motherboard.intel.core2duo - Hardware.laptop parameters: doc: hardware: pkg: - include support for Apple MacBook2,1 laptop macbook5-1.yml000644001750001750 40613450370143 24421 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/laptop/apple#FIXME: tweak to add kernel boot arg maxcpus=1 classes: - hw.mac.laptop - Hardware.motherboard.intel.core2duo - Hardware.nic.broadcom.sta - Hardware.laptop parameters: doc: hardware: pkg: - include support for Apple MacBook5,1 laptop edge145.yml000644001750001750 30113450370143 24114 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/laptop/lenovoclasses: - Hardware.motherboard.amd.e1-2500 - Hardware.nic.broadcom.sta - Hardware.laptop parameters: doc: hardware: pkg: - include support for Lenovo Edge 145 laptop c60.yml000644001750001750 27313450370143 23624 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/amdclasses: - hw.x86.amd64 - hw.firmware - Hardware.base parameters: doc: hardware: pkg: - include core support for board with AMD C-60 (Brazos) APU and Bobcat CPU e1-2500.yml000644001750001750 27613450370143 24130 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/amdclasses: - hw.x86.amd64 - hw.firmware - Hardware.base parameters: doc: hardware: pkg: - include core support for board with AMD E1-2500 (Kabini) APU and Jaguar CPU a7n8x.yml000644001750001750 10713450370143 24407 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/asusclasses: - hw.x86.amd64 - hw.firmware - Hardware.igp.nvidia.nv1f baytrail-m.yml000644001750001750 34013450370143 25642 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/intelclasses: - hw.x86.amd64 - hw.firmware - Hardware.igp.intel.valleyview - Hardware.base parameters: doc: hardware: pkg: - include core support for board with Intel Bay Trail-M (Pentium/Celeron) SoC core2duo.yml000644001750001750 25313450370143 25326 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/intelclasses: - hw.x86.amd64 - hw.firmware - Hardware.base parameters: doc: hardware: pkg: - include core support for board with Intel Core 2 Duo CPU pentium3.yml000644001750001750 26413450370143 25352 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/intelclasses: - hw.x86.i486 - hw.firmware - Hardware.base parameters: doc: hardware: pkg: - include core support for board with Intel Pentium III (Katmai) CPU nehemiah.yml000644001750001750 25513450370143 25030 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/viaclasses: - hw.x86.i686 - hw.firmware - Hardware.base parameters: doc: hardware: pkg: - include core support for board with VIA C5XL (Nehemiah) CPU samuel2.yml000644001750001750 25413450370143 24621 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/viaclasses: - hw.x86.i486 - hw.firmware - Hardware.base parameters: doc: hardware: pkg: - include core support for board with VIA C5B (Samuel 2) CPU avoid.yml000644001750001750 6413450370143 22576 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/net/pacclasses: - Framework.web.webkit.webkit1.gtk.avoid sta.yml000644001750001750 26213450370143 23311 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/nic/broadcomclasses: - Hardware.base parameters: doc: hardware: pkg-nonfree: - include Broadcom 43xx "STA" WiFi/Bluetooth driver pkg-nonfree: - broadcom-sta-dkms init.yml000644001750001750 25013450370143 23323 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/nic/realtekclasses: - Hardware.base parameters: doc: hardware: pkg-nonfree: - include firmware for Realtek NIC drivers pkg-nonfree: - firmware-realtek avoid.yml000644001750001750 21413450370143 23711 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Language/java/openjdk6classes: - Language.java.base parameters: doc: Language.java: pkg: - avoid OpenJDK 6 pkg-avoid: - openjdk-6-jre init.yml000644001750001750 21013450370143 23546 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Language/java/openjdk6classes: - Language.java.base parameters: doc: Language.java: pkg: - include OpenJDK 6 pkg: - openjdk-6-jre avoid.yml000644001750001750 21413450370143 23712 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Language/java/openjdk7classes: - Language.java.base parameters: doc: Language.java: pkg: - avoid OpenJDK 7 pkg-avoid: - openjdk-7-jre init.yml000644001750001750 21013450370143 23547 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Language/java/openjdk7classes: - Language.java.base parameters: doc: Language.java: pkg: - include OpenJDK 7 pkg: - openjdk-7-jre init.yml000644001750001750 4613450370143 22454 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mail/mtaclasses: - Service.mail.mta.postfix postfix.yml000644001750001750 22313450370143 23222 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/mail/mtaclasses: - Service.mail.base parameters: doc: service-mail: pkg: - install mail transport agent Postfix pkg: - postfix gnutls.yml000644001750001750 16713450370143 23344 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/web/apacheclasses: - Service.web.apache parameters: doc: service-web: pkg: - install Apache2 plugin GnuTLS init.yml000644001750001750 21613450370143 22766 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/web/apacheclasses: - Service.web parameters: doc: service-web: pkg: - install web service Apache2 pkg: - apache2-mpm-worker uwsgi.yml000644001750001750 23413450370143 23161 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/web/apacheclasses: - Service.web.apache parameters: doc: service-web: pkg: - install Apache2 plugin for uWSGI pkg: - libapache2-mod-uwsgi cider.yml000644001750001750 24113450370143 22610 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/web/mailclasses: - Service.web.uwsgi.psgi parameters: doc: service-web: pkg: - include webmail service CiderWebmail pkg-auto: - ciderwebmail init.yml000644001750001750 20613450370143 22702 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/web/uwsgiclasses: - Service.web.apache parameters: doc: service-web: pkg: - install web service uWSGI pkg: - uwsgi psgi.yml000644001750001750 24413450370143 22703 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/web/uwsgiclasses: - Service.web.uwsgi parameters: doc: service-web: pkg: - install uWSGI plugin for Perl PSGI interface pkg: - uwsgi-plugin-psgi python.yml000644001750001750 25013450370143 23257 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/web/uwsgiclasses: - Service.web.uwsgi parameters: doc: service-web: pkg: - install uWSGI plugin for Python WSGI interface pkg: - uwsgi-plugin-python moinmoin.yml000644001750001750 23713450370143 23375 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Service/web/wikiclasses: - Service.web.uwsgi.python parameters: doc: service-web: pkg: - include wiki service MoinMoin pkg-auto: - python-moinmoin aptitude.yml000644001750001750 31113450370143 24311 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Framework/pkg/apt/cliclasses: - Framework.pkg.base parameters: doc: framework-pkg: pkg: - include command-line and Curses APT frontend aptitude pkg: - aptitude pkg-auto: - aptitude-common 64.yml000644001750001750 25013450370143 24745 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/amd/athlonclasses: - hw.x86.amd64 - hw.firmware - Hardware.base parameters: doc: hardware: pkg: - include core support for board with AMD Athlon 64 CPU init.yml000644001750001750 26013450370143 25460 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/amd/athlonclasses: - hw.x86.i686 - hw.firmware - hw.acpi - Hardware.base parameters: doc: hardware: pkg: - include core support for board with AMD Athlon CPU 32bit.yml000644001750001750 26013450370143 25465 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Hardware/motherboard/intel/atomclasses: - hw.x86.i686 - hw.firmware - Hardware.base parameters: doc: hardware: pkg: - include core support for board with older 32bit Intel Atom CPU init.yml000644001750001750 24713450370143 26426 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Framework/crypto/gnupg/pinentry/gtkclasses: - Framework.crypto.base parameters: doc: framework-crypto: pkg: - include GTK+ PIN entry interface for GnuPG pkg: - pinentry-gtk2 avoid.yml000644001750001750 30213450370143 25655 0ustar00jonasjonas000000000000Boxer-v1.4.0/examples/classes/Framework/web/webkit/webkit1/gtkclasses: - Framework.base parameters: doc: framework: pkg: - exclude WebKit GTK+ 1.0 library (used for maybe-risky PAC proxy parsing) pkg-avoid: - libwebkitgtk-1.0-0