COPYRIGHT000644001750001750 2376513650603436 14010 0ustar00jonasjonas000000000000Boxer-v1.4.2Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Boxer Upstream-Contact: Jonas Smedegaard (JONASS) Source: https://wiki.debian.org/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 examples/nodes/zsh.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 doap.ttl t/00_compile.t t/00_compile_scripts.t t/01_app_help.t t/04_boxer.t t/05_world-reclass.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 Copyright: Copyright 2020 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: dist.ini Copyright: Copyright 2019 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) 2020 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) 2020 by the copyright holder(s). This is free software, licensed under: The GNU General Public License, Version 1, February 1989 CREDITS000644001750001750 16013650603435 13454 0ustar00jonasjonas000000000000Boxer-v1.4.2Maintainer: - Jonas Smedegaard (JONASS) Thanks: - Toby Inkster (TOBYINK) Changes000644001750001750 2527013650603435 14000 0ustar00jonasjonas000000000000Boxer-v1.4.2Boxer ===== Created: 2013-02-12 Home page: Home page: Bug tracker: Maintainer: Jonas Smedegaard (JONASS) v1.4.2 2020-04-24 [ Bug Fixes ] - fix process empty class list or non-empty parameters in node data - have Boxer::Task::Classify: explicitly set datadir default as unset (this partly reverts git commit a4bea17) [ Test Suite ] - fix tighten World::Reclass test to not tolerate duplicates (this also reverts git commit f3e3009) - tighten World::Reclass test to cover node with custom parameters and no class [ Packaging ] - update perltidy config: consistently use long-options; use --converse - use List::MoreUtils [ Other ] - rephrase World::Reclass slightly to make peace between perltidy and Test::Tabs) - tighten World::Reclass to process only matching types, and skip duplicates is arrays v1.4.1 2020-04-23 [ Bug Fixes ] - Boxer::Task::Classify: reword trace messages - Boxer::World::Reclass: avoid constructor for attributes classdir nodedir [ Documentation ] - add Boxer synopsis [ Test Suite ] - add coverage of Boxer::World::Reclass; use Test::Deep - improve coverage of Boxer::Task::Classify - stop enumerate tests in 01_app_help.t - use subtest to isolate repetitions - use tempdir to ensure empty or non-existing dir [ Packaging ] - require perl 5.020 [ Other ] - Boxer::Part::Reclass: tighten type for attribute suite - Boxer::Task::Classify: simplify attribute datadir to not be required nor have default explicitly unset - Boxer::World: add attribute data - Boxer::World::Reclass: add method list_parts - Boxer::World::Reclass: log (not croak) on error resolving parts from node - Boxer::World::Reclass: rename attribute flatten -> map - Boxer::World::Reclass: rename method get_node_by_id -> get_part, and distinguish empty world from missing part - handle Boxer::World::* as plugins, using Module::Find and Module::Load::Conditional - process YAML data internally, using Hash::Merge (not with reclass) - relax constraints and tests to be less specific to Reclass world - use feature signatures v1.4.0 2019-04-01 [ Bug Fixes ] - Fix avoid option --verbose overriding stronger verbosity set as environment variables. [ Documentation ] - Improve pod of Boxer::Task. - Mention Elbe commands and isar in SEE ALSO pod. - Mention Perl module Footprintless in Boxer pod section SEE ALSO. - Update TODOs. [ Other ] - Added: Fix implement boxer-compose/boxer-bootstrap option --verbose. - Added: Implement boxer-bootstrap option --mode. - Emit shell command notice via Log::Any to stderr (not explicitly to stdout). - Execute reclass in Boxer::World::Reclass (not Boxer::Task::Classify). - Improve logging. - Load Moo-related modules (base classes and roles) before other modules. - Stop use version: Unneeded. - Tidy coercion hints. - Tidy to consistently use qw() in module use. - Tighten author-test pod-spell to rely on english aspell disctionary being installed. v1.3.0 2019-03-01 [ Documentation ] - Add TODO about unit testing code coverage. - Reference inspirational projects and competing tools. - Rephrase Boxer::Reclass pod DESCRIPTION. - Update/fix references to upstream git. [ Test Suite ] - Avoid declaring test count where tests are optionally skipped. - Check path prefix handling in serialize.t. - Process node parl-greens (not lxp5) in serialize.t, to expose different features. - Update spelling test, adding a few more words. - Use Test::CleanNamespaces in testsuite. - Use Test::Fatal (replacing Test::Exception). [ Other ] - Added: Add subcommand bootstrap. - Added: Fix implement boxer-compose option --format. - Handle serialization details in Boxer::World::Flat (not Boxer::Task::Serialize). - Limit Type::Utils import: Apparently unneeded. - Pass variables when file template is processed (not when instantiated). - Treat namespace::autoclean as a pragma (one of its benefits over namespace::clean). - Use MooX::StrictConstructor. v1.2.0 2019-02-27 [ BACK COMPAT ] - Update skeleton files: Drop workaround unneeded since Jessie (see bug#751367). [ Bug Fixes ] - Fix compose option --help output to list current dir as default for --nodedir, to match boxer pod and actual logic since v1.1.4. [ Documentation ] - Update TODOs. [ Test Suite ] - Update spelling test, adding a few more words. [ Other ] - Added: Provide additional variables to skeleton templates, containing comma-separated lists: pkgs pkgs_avoid pkgs_auto. - Added: Provide additional variables to skeleton templates, containing plain and perl-escaped shell code: tweaks tweaks_perl. - Update skeleton files: Use apt (not apt-get) in shell script. - Updated: Use buster as default suite. v1.1.11 2018-10-04 [ Bug Fixes ] - Fix propagate nonfree flag to skeleton files. v1.1.10 2018-09-27 [ Documentation ] - Tidy changes to mark test-related entries as such. [ Test Suite ] - Add author-test pod-spell. - Fix author-test SYNOPSIS without needing MANIFEST. - Fix test miminum version without needing META.yml. [ Packaging ] - Fix explicitly depend on Class::XSAccessor: Optionally used by Moo, but without it accessors with hyphens are not supported. v1.1.9 2018-09-27 [ Bug Fixes ] - Fix resolve nonfree, auto-resolved, and to-be-avoided packages. [ Documentation ] - Update INSTALL file: Update git URL. [ Test Suite ] - Extend testsuite: Cover auto-resolved and to-be-avoided packages. [ Other ] - Tidy HEREDOC commands. v1.1.8 2018-07-13 [ Bug Fixes ] - Fix subcommand about choking on authority implemented but undefined. - Fix subcommand about listing authority: Use namespace::autoclean (not namespace::clean, and use recent version to avoid Moo inflation to Moose). - Fix subcommand aliases help text to use valid example, and tone down usage (only some not most subcommands have aliases). - Fix syntax error resolving nonfree packages in Boxer::World::Reclass. [ Documentation ] - Fix changelog entry part of release v1.1.5. - Fix typo in POD of module Boxer::World::Flat. v1.1.7 2017-11-06 [ Bug Fixes ] - Fix make option --skeldir optional. v1.1.6 2017-11-05 [ Test Suite ] - Fix testsuite to gracefully handle executable reclass unavailable. [ Packaging ] - Fix require Test::Exception and Test::File::Contents for testsuite. v1.1.5 2017-01-24 [ Bug Fixes ] - Fix chomp tweak lines. [ Documentation ] - Add some TODOs. - Fix usage description for compose subcommand. [ Test Suite ] - Run perlcritic with tidyall, and test both (not only perlcritic) in TEST_AUTHOR mode. [ Packaging ] - Use version with modern assignment. Extend copyright to current year. [ Other ] - Add Boxer::File::WithSkeleton class. - Add World and Part classes, with unit test. - Consistently use namespace::clean in modules. Order use by pragma/non-Moo/Moo/cleanup and (roughly) by specificity. - Drop unused code in Boxer::CLI. - Modernize to use perl v5.14, utf8, and strictures 2. - Removed: Stop handle __PKGAUTOLIST__ in data (deprecated since 0.004). - Stop skip undefined args in Task::Serialize (needed only for Task::Classify). - Stop use MooX::Types::MooseLike::Base. v1.1.4 2016-05-02 [ Bug Fixes ] - Fix have current dir be default nodedir (as originally intended and documented in boxer pod): Do XDG data_dirs lookup only on datadir, leaving datadir undefined by default). v1.1.3 2016-05-02 [ Bug Fixes ] - Fix use File::ShareDir. v1.1.2 2016-04-30 - Use File::ShareDir (not File::ShareDir::ProjectDistDir, strongly discouraged by author). Thanks to Karen Etheridge (RT#114079). v1.1.1 2016-04-12 - Use Log::Any::Adapter::Screen (not obsolete predecessor Log::Any::Adapter::ScreenColoredLevel). v1.1.0 2015-11-29 [ Bug Fixes ] - Fix unescape \n and ${ for shellscript. - Fix use apt-get (automated) or apt (interactive, on recent releases) in skeleton scripts and notes (aptitude is not always available). [ Documentation ] - Add TODO on resolving named suites from relative ones. - Extend copyright to cover current year. [ Other ] - Added: Pass node to skeleton files (and use in boilerplate, replacing bogus DebianParl boilerplate. - Added: Pass suite to skeleton files, and set as variable in shellscript and preseed file late_script. - Fix drop all hardcoded data from default skeleton files. - Tidy Boxer::Types. - Updated: Support empty packagelist. v1.0.0 2015-11-21 [ Bug Fixes ] - Fix avoid Boxer::Task::Serialize spewing garbage when warning about empty lists. - Fix suppress failure to mark package auto-installed. [ Documentation ] - Rewrite INSTALL to use Debian boxer package. [ Packaging ] - Release as stable, using semantic versioning. [ Other ] - Added: Implement --nonfree option for subcommand compose. - Croak (not die) on broken input. - Fixate suite in preseed file (resolved package list is suite-specific). - Improve coercion and error messages for input paths. - Sync example data with boxer-data. - Tidy whitespace. - Use MooX::Role::Logger (not MooX::Log::Any) and Log::Any::Adapter::ScreenColoredLevel. 0.004 2014-11-24 [ Bug Fixes ] - Fix only warn (not die) on unresolved auto-markings, avoidance or tweaks. [ Documentation ] - Add some TODOs. - Adjust help output of Compose command to describe correct default locations. [ Other ] - Move initial shell code for tweaklist out to skeleton file. - Removed: Deprecate expansion of __PKGAUTOLIST__ in tweaklist. - Sort doc sections by explicit list (and alphabetically only as fallback). - Updated: Adjust example class set: Use reclass 1.4 ABI, and drop broken Printing class. - Use Template::Tiny. 0.003 2014-10-19 [ Documentation ] - Update INSTALL file and pod synopsis slightly. [ Packaging ] - Fix copyright coverage to include current year. - Fix require MooX::Log::Any. - Require IPC::System::Simple. - Tighten Moo requirement to at least 1.001000 (older are untested with Type::Tiny). [ Other ] - Added: Add --suite option (and drop it as 2nd argument) in compose command, allowing multiple nodes instead. - Added: Handle nodes, classes and skeleton files with separate options in compose command. - Added: Include builting skeleton files, and ship with example classes and nodes. - Explicitly use IPC::System::Simple (already implicitly used via autodie + system() call). - Refactor to strip undefined args handed over internally - a.k.a. coerce Undef to default, to permit callers to sloppily pass App::Cmd options as-is. 0.002 2014-10-19 [ Packaging ] - Fix all references to distribution name. Toby Inkster++ - Fix time of initial release. 0.001 2014-10-18 Initial release. INSTALL000644001750001750 235513650603434 13514 0ustar00jonasjonas000000000000Boxer-v1.4.2Boxer 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 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 a set of YAML files. See the README in the sample data dir for more info on its structure. LICENSE000644001750001750 4367113650603434 13516 0ustar00jonasjonas000000000000Boxer-v1.4.2This software is copyright (c) 2020 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) 2020 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) 2020 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 2121413650603436 13631 0ustar00jonasjonas000000000000Boxer-v1.4.2COPYRIGHT 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 examples/nodes/zsh.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/04_boxer.t t/05_world-reclass.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 1252013650603436 14121 0ustar00jonasjonas000000000000Boxer-v1.4.2{ "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", "Class::XSAccessor" : "0", "File::BaseDir" : "0", "File::ShareDir" : "0", "Hash::Merge" : "0", "IPC::System::Simple" : "0", "List::MoreUtils" : "0", "Log::Any::Adapter::Screen" : "0", "Module::Find" : "0", "Module::Load::Conditional" : "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.020000", "strictures" : "2" } }, "test" : { "requires" : { "English" : "0", "File::Spec" : "0", "File::Which" : "0", "Test::CleanNamespaces" : "0", "Test::Compile" : "0", "Test::Deep" : "0.111", "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.2" }, "Boxer::CLI" : { "file" : "lib/Boxer/CLI.pm", "version" : "v1.4.2" }, "Boxer::CLI::Command" : { "file" : "lib/Boxer/CLI/Command.pm", "version" : "v1.4.2" }, "Boxer::CLI::Command::About" : { "file" : "lib/Boxer/CLI/Command/About.pm", "version" : "v1.4.2" }, "Boxer::CLI::Command::Aliases" : { "file" : "lib/Boxer/CLI/Command/Aliases.pm", "version" : "v1.4.2" }, "Boxer::CLI::Command::Bootstrap" : { "file" : "lib/Boxer/CLI/Command/Bootstrap.pm", "version" : "v1.4.2" }, "Boxer::CLI::Command::Commands" : { "file" : "lib/Boxer/CLI/Command/Commands.pm", "version" : "v1.4.2" }, "Boxer::CLI::Command::Compose" : { "file" : "lib/Boxer/CLI/Command/Compose.pm", "version" : "v1.4.2" }, "Boxer::File::WithSkeleton" : { "file" : "lib/Boxer/File/WithSkeleton.pm", "version" : "v1.4.2" }, "Boxer::Part" : { "file" : "lib/Boxer/Part.pm", "version" : "v1.4.2" }, "Boxer::Part::Reclass" : { "file" : "lib/Boxer/Part/Reclass.pm", "version" : "v1.4.2" }, "Boxer::Role::Interact" : { "file" : "lib/Boxer/Role/Interact.pm", "version" : "v1.4.2" }, "Boxer::Task" : { "file" : "lib/Boxer/Task.pm", "version" : "v1.4.2" }, "Boxer::Task::Bootstrap" : { "file" : "lib/Boxer/Task/Bootstrap.pm", "version" : "v1.4.2" }, "Boxer::Task::Classify" : { "file" : "lib/Boxer/Task/Classify.pm", "version" : "v1.4.2" }, "Boxer::Task::Serialize" : { "file" : "lib/Boxer/Task/Serialize.pm", "version" : "v1.4.2" }, "Boxer::Types" : { "file" : "lib/Boxer/Types.pm", "version" : "v1.4.2" }, "Boxer::World" : { "file" : "lib/Boxer/World.pm", "version" : "v1.4.2" }, "Boxer::World::Flat" : { "file" : "lib/Boxer/World/Flat.pm", "version" : "v1.4.2" }, "Boxer::World::Reclass" : { "file" : "lib/Boxer/World/Reclass.pm", "version" : "v1.4.2" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "http://rt.cpan.org/Dist/Display.html?Queue=Boxer" }, "homepage" : "https://wiki.debian.org/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.2", "x_help_wanted" : [ "documenter", "tester" ], "x_provides_scripts" : { "boxer" : { "file" : "bin/boxer" } }, "x_serialization_backend" : "JSON::PP version 4.02" } META.yml000644001750001750 663113650603436 13737 0ustar00jonasjonas000000000000Boxer-v1.4.2--- 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::Deep: '0.111' 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.2 Boxer::CLI: file: lib/Boxer/CLI.pm version: v1.4.2 Boxer::CLI::Command: file: lib/Boxer/CLI/Command.pm version: v1.4.2 Boxer::CLI::Command::About: file: lib/Boxer/CLI/Command/About.pm version: v1.4.2 Boxer::CLI::Command::Aliases: file: lib/Boxer/CLI/Command/Aliases.pm version: v1.4.2 Boxer::CLI::Command::Bootstrap: file: lib/Boxer/CLI/Command/Bootstrap.pm version: v1.4.2 Boxer::CLI::Command::Commands: file: lib/Boxer/CLI/Command/Commands.pm version: v1.4.2 Boxer::CLI::Command::Compose: file: lib/Boxer/CLI/Command/Compose.pm version: v1.4.2 Boxer::File::WithSkeleton: file: lib/Boxer/File/WithSkeleton.pm version: v1.4.2 Boxer::Part: file: lib/Boxer/Part.pm version: v1.4.2 Boxer::Part::Reclass: file: lib/Boxer/Part/Reclass.pm version: v1.4.2 Boxer::Role::Interact: file: lib/Boxer/Role/Interact.pm version: v1.4.2 Boxer::Task: file: lib/Boxer/Task.pm version: v1.4.2 Boxer::Task::Bootstrap: file: lib/Boxer/Task/Bootstrap.pm version: v1.4.2 Boxer::Task::Classify: file: lib/Boxer/Task/Classify.pm version: v1.4.2 Boxer::Task::Serialize: file: lib/Boxer/Task/Serialize.pm version: v1.4.2 Boxer::Types: file: lib/Boxer/Types.pm version: v1.4.2 Boxer::World: file: lib/Boxer/World.pm version: v1.4.2 Boxer::World::Flat: file: lib/Boxer/World/Flat.pm version: v1.4.2 Boxer::World::Reclass: file: lib/Boxer/World/Reclass.pm version: v1.4.2 requires: App::Cmd: '0' Class::XSAccessor: '0' File::BaseDir: '0' File::ShareDir: '0' Hash::Merge: '0' IPC::System::Simple: '0' List::MoreUtils: '0' Log::Any::Adapter::Screen: '0' Module::Find: '0' Module::Load::Conditional: '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.020000' 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://wiki.debian.org/Boxer license: http://dev.perl.org/licenses/ repository: https://salsa.debian.org/boxer-team/boxer version: v1.4.2 x_help_wanted: - documenter - tester x_provides_scripts: boxer: file: bin/boxer x_serialization_backend: 'CPAN::Meta::YAML version 0.018' Makefile.PL000644001750001750 2337413650603436 14463 0ustar00jonasjonas000000000000Boxer-v1.4.2use 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, "Class::XSAccessor" => 0, "File::BaseDir" => 0, "File::ShareDir" => 0, "Hash::Merge" => 0, "IPC::System::Simple" => 0, "List::MoreUtils" => 0, "Log::Any::Adapter::Screen" => 0, "match::simple" => 0, "Module::Find" => 0, "Module::Load::Conditional" => 0, "Module::Runtime" => 0, "Moo" => "1.001000", "MooX::Role::Logger" => 0, "MooX::StrictConstructor" => 0, "namespace::autoclean" => 0.16, "Path::Tiny" => 0.054, "perl" => "5.020000", "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::Deep" => 0.111, "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.2" }, "Boxer::CLI" => { file => "lib/Boxer/CLI.pm", version => "v1.4.2" }, "Boxer::CLI::Command" => { file => "lib/Boxer/CLI/Command.pm", version => "v1.4.2" }, "Boxer::CLI::Command::About" => { file => "lib/Boxer/CLI/Command/About.pm", version => "v1.4.2" }, "Boxer::CLI::Command::Aliases" => { file => "lib/Boxer/CLI/Command/Aliases.pm", version => "v1.4.2" }, "Boxer::CLI::Command::Bootstrap" => { file => "lib/Boxer/CLI/Command/Bootstrap.pm", version => "v1.4.2" }, "Boxer::CLI::Command::Commands" => { file => "lib/Boxer/CLI/Command/Commands.pm", version => "v1.4.2" }, "Boxer::CLI::Command::Compose" => { file => "lib/Boxer/CLI/Command/Compose.pm", version => "v1.4.2" }, "Boxer::File::WithSkeleton" => { file => "lib/Boxer/File/WithSkeleton.pm", version => "v1.4.2" }, "Boxer::Part" => { file => "lib/Boxer/Part.pm", version => "v1.4.2" }, "Boxer::Part::Reclass" => { file => "lib/Boxer/Part/Reclass.pm", version => "v1.4.2" }, "Boxer::Role::Interact" => { file => "lib/Boxer/Role/Interact.pm", version => "v1.4.2" }, "Boxer::Task" => { file => "lib/Boxer/Task.pm", version => "v1.4.2" }, "Boxer::Task::Bootstrap" => { file => "lib/Boxer/Task/Bootstrap.pm", version => "v1.4.2" }, "Boxer::Task::Classify" => { file => "lib/Boxer/Task/Classify.pm", version => "v1.4.2" }, "Boxer::Task::Serialize" => { file => "lib/Boxer/Task/Serialize.pm", version => "v1.4.2" }, "Boxer::Types" => { file => "lib/Boxer/Types.pm", version => "v1.4.2" }, "Boxer::World" => { file => "lib/Boxer/World.pm", version => "v1.4.2" }, "Boxer::World::Flat" => { file => "lib/Boxer/World/Flat.pm", version => "v1.4.2" }, "Boxer::World::Reclass" => { file => "lib/Boxer/World/Reclass.pm", version => "v1.4.2" }, }, "release_status" => "stable", "resources" => { bugtracker => { web => "http://rt.cpan.org/Dist/Display.html?Queue=Boxer" }, homepage => "https://wiki.debian.org/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.2", "x_help_wanted" => ["documenter", "tester"], "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 473113650603434 13343 0ustar00jonasjonas000000000000Boxer-v1.4.2NAME Boxer - system deployment ninja tricks VERSION Version v1.4.2 SYNOPSIS use Boxer; my $domain = Boxer->get_world('Reclass')->new( suite => 'stretch', data => 'examples' ); say $domain->list_parts(); my $goal = $domain->get_part('lxp5'); my $plan = $domain->map( $goal, 1 ); $plan->as_file( Boxer::File::WithSkeleton->new( basename => 'preseed.cfg' ) ); my $serializer = Boxer::File::WithSkeleton->new( skeleton => 'script.sh.in' ); $plan->as_file( $serializer->file( 'script.sh', 1 ) ); my $anothergoal = $domain->get_part('parl-greens'); my $anotherplan = $domain->map($anothergoal); $anotherplan->as_file( $serializer->file( 'parl-greens.sh', 1 ) ); my $newdomain = Boxer->get_world()->new( suite => 'buster', data => 'examples' ); my $plan_a = $newdomain->map($goal); $plan_a->as_file( Boxer::File::WithSkeleton->new( basename => 'preseed_pure.cfg' ) ); 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 6520313650603442 13767 0ustar00jonasjonas000000000000Boxer-v1.4.2This 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 e854bb97d511e80826cbfa8e32a6304b337633d22fd7fff8224a21c13c2f4452 COPYRIGHT SHA256 abced6cccb580b9dccab6c8c7a3233b03851b8afe046300327547a07357d7313 CREDITS SHA256 8592b8005f1104dd7a6c264e313827fb04a701438b4e4f07cbddafa5733ab5ba Changes SHA256 7631cb56e9c745e5c90923871bc81b91a5052bc90a00c20901eaf238fa429480 INSTALL SHA256 17a59923267e86be836e51eedc39ff410b216de706fb2c82e5be68dc806965be LICENSE SHA256 3c8ffed082f395f12953389d6e1b0cda3011c3c33950059fafaccb2b836f14bf MANIFEST SHA256 036b4cff0e2e67bd4b7a44e8bea802f1f00d8844d705ce05ee8fde97fe2368f4 META.json SHA256 705161137e8c9f298c5a67cab8e8e5efa4c27af7530c20c841becc584933b401 META.yml SHA256 097d3149d41cbbc9f2d026c8eb682344f614c919dcdf93c570c0184e47bab7b0 Makefile.PL SHA256 d69df57ffda5cf6523283337f66aff5dd29c86ec6fe2eda6819e8a6a732259c2 README SHA256 0ea5de75f200a1a23421c5b5cc6e9afb9411b4c2ae13e3b83001edf07dfdad24 TODO SHA256 62d097899b766e4fc1e59b0cb7c0d57ba3d362d99257aef08dbf333a115dcbb6 bin/boxer SHA256 54c6cffb04c15cff664b2d6acced0efab3278700012a6c9cf616fceec0dc6b7b dist.ini SHA256 b710e3a75cc9b7bbd0b51bf5a2c3dcbb05fcb8d020bab6ba9f263d0e60f9689e 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 4ad5872a6d6cf363133cbe7aca5354c80679388fb192baf447d931e63ae9d3ff examples/nodes/zsh.yml SHA256 f7e719828b8a2b4739d28b896bfcabc587993c6f0f074d05549cc4aaab4a2dfc lib/Boxer.pm SHA256 94a6611acf1305dbe4708c1368ba8c779474465dcd95f4c647f3b538b4455d0a lib/Boxer/CLI.pm SHA256 f33bca01159b107e667f2245927eca6cf2aba12c1b65b51fcdb3231ad91b2c2d lib/Boxer/CLI/Command.pm SHA256 9c1a718c13b7f08bb2a4b4a192f4f060fc36a971ffc8d3f4be43e5d3e2e1951b lib/Boxer/CLI/Command/About.pm SHA256 763dc6156390794e220ab6457c2a46343a7254d3139886b0a76cf96cea3160be lib/Boxer/CLI/Command/Aliases.pm SHA256 8862c1b12c01190ecdbe04ceb5aeda218903bdd59a01b673883c418ca841420d lib/Boxer/CLI/Command/Bootstrap.pm SHA256 0acc9943e6265710eae38dbb1c0eec558776838f23e8ab64edf79d45b676415a lib/Boxer/CLI/Command/Commands.pm SHA256 296b73b385b38f5d94ede96d19ada5c3d778199f547bbeab6e24299472109d42 lib/Boxer/CLI/Command/Compose.pm SHA256 33e3b53ca05c9240eb935b698de620f6508ac0cda431256a0577f2442516f9f3 lib/Boxer/File/WithSkeleton.pm SHA256 b77228fe3c3592f770bc8dfe8aaaf70ae085ab157594498cc2f5f211674d6d98 lib/Boxer/Part.pm SHA256 fdd947bb2ff379ada23a2805674ec05aeee1913c0ff4f7ec812f71d71db80302 lib/Boxer/Part/Reclass.pm SHA256 52bdb5fd55df6778ca7c3a22f700f98fbef908134ffb7f33dd0725718f822d14 lib/Boxer/Role/Interact.pm SHA256 f3ad7a08439a84807cae5a7e1b32551d08746ca25028685cd2d114651d5f5b85 lib/Boxer/Task.pm SHA256 916be275beb1bb17221f23f6319a6f8533fda07b67464053377be092ab7f3ca1 lib/Boxer/Task/Bootstrap.pm SHA256 75e63b2dc2a52f63f7fb27295d4e60cee4419fbfa0ac39e7398aeb10a73c824a lib/Boxer/Task/Classify.pm SHA256 bb0a85be1a75fc556e6a6ef1acfa69f56f60ab9aa370847e7795b1af4fab9a79 lib/Boxer/Task/Serialize.pm SHA256 1bd0d82eff4f6f43e6b73370666a1d26c17367981be7f98275cd129e5904d954 lib/Boxer/Types.pm SHA256 356763f9d95247af1c1dd61cff3fab3b3487ac0dfaf0d401977fddc6305edc61 lib/Boxer/World.pm SHA256 59b82cde5cd34b70e86c71a1afaebe0efed7d38d500b1b3f8f035d108890cf58 lib/Boxer/World/Flat.pm SHA256 ee079c0df05238e9bb8bd51ce57bdf3e7dc7cedf7b08c830cde5d861817ce457 lib/Boxer/World/Reclass.pm SHA256 a6158458b98556e91fca2860fcf10904d6947783ab0a5a82fd12945bf18a8258 share/skel/preseed.cfg.in SHA256 8f5527cc2a4c26700a16413aa63ac96aeaf7e68148767c97fa01f53a166867aa share/skel/script.sh.in SHA256 4190104ae31464f2dc12cf4341a133b3f2f4b3360e1bcaded489b74f0b0315b2 t/00_compile.t SHA256 8fd59eb31c78b9871c3bc6a666676942e8da27ad7d301e05efee44d608e2c1df t/00_compile_scripts.t SHA256 7ddf4ec9debafd79b08c0211a461eecd8d9a3652ed763119da43d4afa9d2cb5a t/01_app_help.t SHA256 d785d5acc796684078b53e46759b5095cfae936bf710266463054e1569949139 t/04_boxer.t SHA256 0d082bba25f1c894589bb7ef0b2e4fdbd0bdfd118cfa2688a8a0afce7643f76a t/05_world-reclass.t SHA256 947082c85aa8ffa6cfb117dfab7c7ac6feb58ca548c6a071c35f5fd894bff420 t/bootstrap.t SHA256 8bfb3df0bb718b86a71279d66ddd3bc740195301c858fd153157fa6aec9202ba t/classify.t SHA256 51408705dc0dd7443bb31e6a5f9e03d8d70cc2ce6268cccc782b0010e5691d87 t/compose.t SHA256 9175ddd53540d58ea5c150879b83d01daf22edce4272df8b77633d4b4dff1486 t/fixme.t SHA256 b75545b2549d6099540723c00d3b72ddf8ae37a79c57c79a02382c32a7cab4d0 t/minimumversion.t SHA256 6463dacdc34440f57b251f9ba04a277b7acf431a7dc841b6b48dde60cb43e5d3 t/namespaces_clean.t SHA256 4e6923a832201b534c7a531fb86282bb3af76a0c98c576cb0eee3d6aac3f481d t/pod.t SHA256 2de05f8ed5333c966decb2b30fe3621592635623de1051849bcce755ae76bb45 t/serialize.t -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAl6jBx4ACgkQLHwxRsGg ASGQHw//QSCbwH00d/9HtV4IbWPgfGoIzCRym1Aj50QlpkBQQKk1OpP9cz2mAyT6 rMW3wcjjOGjypiP1iv5a8JfOOGP4yrJqiE03EplaEG2JxHdjTVGIfESNnajdTuxX nWwsSRc0SqsgyBpwEl3T/pbMPF3sbFem+xex2SDCEP3CiSDRZGZBdezuoen8jIm4 wonHdYiGamYld7qok0wZzGGgnfJpUYCmAzhmpwoEuOT2nn0z4i3wahi/VOc6jKhw 5Mga7IjXRYXTtuN1nKbLZWx+Cm/kmblYWwEjCgcy7siK1uxu76jsbRCFcePkmJPu bmSW5xUIeNAjh3rSLt1YB4XR5fNKKUJM0zQD3AQJiI5uomdNt9vGNL5cXy+S3IEe 2DsosjCZd6UwXBUZdwb2JFvubXkuLRrzO4t4LnYULl2aPQOyn9CZvwQr++O3HBlz w3QUN8YsmACcil1LmS1ni8pSoQUu9NRs1IJcZL0jkUpuX0l1VE2vlpIz3D8atv/3 3MROXwGkxydD/SB0l1HXpveQZcv3pjMZocMgCHv79Xnj8gtpCmAIBIjkWcKL7Af9 cYuNwn5i+SuJMWKGtAcxwruWvrVhAhcV8ChlOXOM7M2XEjD5OFM89n/WhHoT9zEB wSnS151k9ova1kV12PakacFrWBn89gP6b7mhu/7naOhxoGBzhoY= =oggC -----END PGP SIGNATURE----- TODO000644001750001750 1554213650603434 13175 0ustar00jonasjonas000000000000Boxer-v1.4.2 * Add option --dirty-licensing (and deprecate option --nonfree) * Add option --dirty-config (and skip tweaks if unset) * Add option --dirty * Include report with/in generated material, including dirt warnings * 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. * Modernize package auto-install flagging to call "apt-mark minimize-manual". * 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 + 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) * Check for items in both @pkgs and @pkgs_avoid + Fail by default + Warn and remove from @pkgs when --force 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 * Refactor modularity + Minimize dependencies of core binary package boxer - Introduce (and have core package recommend) binary package boxer-reclass + Add core option --features - Space-delimited feature sets, each colon, declared and comma-delimited - Each feature set shadows defaults of same feature set - Defaults: --features "gui-desktop:xfce gui-widgets:gtk3,gtk2,xfce" + Optionally store defaults compatible with apt-config - Introduce (and have core package recommend) binary package boxer-apt - boxer::Feature::ui "tui,gui,cli"; # wui - boxer::Feature::gui-widgets "xfce,gtk,sdl,wxgtk,xlib"; # mate,gnome,wx-gtk2,qt5,qt4,lxqt,kde,fltk,gnustep,glut,tk,athena,motif - boxer::Feature::gui-widgets::gtk "gtk3,gtk2" - boxer::Feature::gui-widgets::sdl "sdl2" # sdl1.2 - boxer::Feature::gui-widgets::xlib "xcb,xlib" - boxer::Feature::gui-protocol "x11" # wayland - boxer::Feature::tui-widgets "whiptail,dialog,newt,slang,cdk,ncurses,wxbase"; - boxer::Feature::script-lang "perl,python3"; # python2,tcl,ruby - boxer::Feature::network::attitude "extraverted"; # introverted - boxer::Feature::network::framework "systemd" # nm,ifupdown - Add commands to show/change features (similar to apt-mark?) + Have Boxer::World::Flat support dump, and others support load, of sets - Track features + Have Boxer cache Boxer::World::Flat set for system default features - Ship build-time generated default set with package boxer-apt - If non-flat world exist (e.g. boxer-reclass is installed), (re)generate and cache sets (and use only cache sets: ignore default set) - If only flat world exist and system features match features of default set, warn about missing package boxer-reclass and use default set - If only flat world exist and system features are different from features of default set, fail with error that features are customized and package boxer-reclass is needed to resolve them + Introduce pkg-exempt for conditional avoidance listing packages tolerating its avoidance to exclude if only tolerant packages recommend or depend on it + Introduce pkg-ban for unconditional avoidance to avoid e.g gpm on hardware without video console or libgl1 on GPU-less hardware too slow for software rendering + Deprecate pkg-avoid: ambiguous + Support tweaks prefix "in-target" and deprecrate "chroot /target" dist.ini000644001750001750 13513650603434 14101 0ustar00jonasjonas000000000000Boxer-v1.4.2; Configuration file for Boxer ; ;; class = 'Dist::Inkt::Profile::TOBYINK' ;; name = 'Boxer' doap.ttl000644001750001750 7606413650603436 14165 0ustar00jonasjonas000000000000Boxer-v1.4.2@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 "Module::Load::Conditional"^^doap-deps:CpanId; ], [ doap-deps:on "Module::Runtime"^^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 "List::MoreUtils 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 "IPC::System::Simple 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 "Types::Standard 0"^^doap-deps:CpanId ], [ doap-deps:on "YAML::XS 0"^^doap-deps:CpanId ], [ doap-deps:on "perl 5.020000"^^doap-deps:CpanId ], [ doap-deps:on "strictures 2"^^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 "Hash::Merge 0"^^doap-deps:CpanId ], [ doap-deps:on "match::simple 0"^^doap-deps:CpanId ], [ doap-deps:on "Module::Find"^^doap-deps:CpanId ]; doap-deps:test-requirement [ doap-deps:on "Test::Deep 0.111"^^doap-deps:CpanId ], [ 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 doap:Version; dc:identifier "Boxer-v1.4.1"^^xsd:string; dc:issued "2020-04-23"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Boxer::World::Reclass: avoid constructor for attributes classdir nodedir"; ], [ a doap-changeset:Tests; rdfs:label "use subtest to isolate repetitions"; ], [ a doap-changeset:Change; rdfs:label "relax constraints and tests to be less specific to Reclass world"; ], [ a doap-changeset:Tests; rdfs:label "add coverage of Boxer::World::Reclass; use Test::Deep"; ], [ a doap-changeset:Bugfix; rdfs:label "Boxer::Task::Classify: reword trace messages"; ], [ a doap-changeset:Tests; rdfs:label "improve coverage of Boxer::Task::Classify"; ], [ a doap-changeset:Tests; rdfs:label "use tempdir to ensure empty or non-existing dir"; ], [ a doap-changeset:Change; rdfs:label "Boxer::Part::Reclass: tighten type for attribute suite"; ], [ a doap-changeset:Change; rdfs:label "Boxer::World::Reclass: log (not croak) on error resolving parts from node"; ], [ a doap-changeset:Change; rdfs:label "handle Boxer::World::* as plugins, using Module::Find and Module::Load::Conditional"; ], [ a doap-changeset:Change; rdfs:label "Boxer::Task::Classify: simplify attribute datadir to not be required nor have default explicitly unset"; ], [ a doap-changeset:Change; rdfs:label "Boxer::World: add attribute data"; ], [ a doap-changeset:Documentation; rdfs:label "add Boxer synopsis"; ], [ a doap-changeset:Change; rdfs:label "Boxer::World::Reclass: rename attribute flatten -> map"; ], [ a doap-changeset:Change; rdfs:label "Boxer::World::Reclass: rename method get_node_by_id -> get_part, and distinguish empty world from missing part"; ], [ a doap-changeset:Change; rdfs:label "Boxer::World::Reclass: add method list_parts"; ], [ a doap-changeset:Change; rdfs:label "use feature signatures"; ], [ a doap-changeset:Packaging; rdfs:label "require perl 5.020"; ], [ a doap-changeset:Tests; rdfs:label "stop enumerate tests in 01_app_help.t"; ], [ a doap-changeset:Change; rdfs:label "process YAML data internally, using Hash::Merge (not with reclass)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.4.1"^^xsd:string. a doap:Version; dc:identifier "Boxer-v1.4.2"^^xsd:string; dc:issued "2020-04-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "have Boxer::Task::Classify: explicitly set datadir default as unset (this partly reverts git commit a4bea17)"; ], [ a doap-changeset:Bugfix; rdfs:label "fix process empty class list or non-empty parameters in node data"; ], [ a doap-changeset:Tests; rdfs:label "tighten World::Reclass test to cover node with custom parameters and no class"; ], [ a doap-changeset:Change; rdfs:label "tighten World::Reclass to process only matching types, and skip duplicates is arrays"; ], [ a doap-changeset:Tests; rdfs:label "fix tighten World::Reclass test to not tolerate duplicates (this also reverts git commit f3e3009)"; ], [ a doap-changeset:Packaging; rdfs:label "use List::MoreUtils"; ], [ a doap-changeset:Change; rdfs:label "rephrase World::Reclass slightly to make peace between perltidy and Test::Tabs)"; ], [ a doap-changeset:Packaging; rdfs:label "update perltidy config: consistently use long-options; use --converse"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v1.4.2"^^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 732213650603434 14274 0ustar00jonasjonas000000000000Boxer-v1.4.2/bin#!/usr/bin/env perl =encoding UTF-8 =head1 NAME boxer - boxer command line utils =cut use v5.14; use utf8; use Role::Commons -all; use Boxer::CLI; Boxer::CLI->run; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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 1527013650603434 15110 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 632013650603434 14642 0ustar00jonasjonas000000000000Boxer-v1.4.2/libpackage Boxer; =encoding UTF-8 =head1 NAME Boxer - system deployment ninja tricks =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; use namespace::autoclean 0.16; use Module::Find; use Module::Load::Conditional qw(can_load); use Log::Any qw($log); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =head1 SYNOPSIS use Boxer; my $domain = Boxer->get_world('Reclass')->new( suite => 'stretch', data => 'examples' ); say $domain->list_parts(); my $goal = $domain->get_part('lxp5'); my $plan = $domain->map( $goal, 1 ); $plan->as_file( Boxer::File::WithSkeleton->new( basename => 'preseed.cfg' ) ); my $serializer = Boxer::File::WithSkeleton->new( skeleton => 'script.sh.in' ); $plan->as_file( $serializer->file( 'script.sh', 1 ) ); my $anothergoal = $domain->get_part('parl-greens'); my $anotherplan = $domain->map($anothergoal); $anotherplan->as_file( $serializer->file( 'parl-greens.sh', 1 ) ); my $newdomain = Boxer->get_world()->new( suite => 'buster', data => 'examples' ); my $plan_a = $newdomain->map($goal); $plan_a->as_file( Boxer::File::WithSkeleton->new( basename => 'preseed_pure.cfg' ) ); =head1 DESCRIPTION Framework for system deployment ninja tricks. See L for further information. =cut sub list_worlds ($self) { return findsubmod Boxer::World; } sub get_world { my ( $self, $name ) = @_; $name ||= 'flat'; foreach my $world ( $self->list_worlds() ) { if ( lc( substr( $world, -( length($name) + 2 ) ) ) eq lc("::$name") ) { unless ( can_load( modules => { $world => 0 } ) ) { $log->error($Module::Load::Conditional::ERROR); return; } return $world; } } $log->error("No world \"$name\" found"); return; } =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 37313650603434 15020 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use strictures 2; no warnings "experimental::signatures"; eval "use Test::Compile"; Test::More->builder->BAIL_OUT( "Test::Compile required for testing compilation") if $@; all_pm_files_ok(); 00_compile_scripts.t000644001750001750 37313650603434 16567 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use strictures 2; no warnings "experimental::signatures"; eval "use Test::Compile"; Test::More->builder->BAIL_OUT( "Test::Compile required for testing compilation") if $@; all_pl_files_ok(); 01_app_help.t000644001750001750 63113650603434 15156 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use App::Cmd::Tester; use Boxer::CLI; use strictures 2; no warnings "experimental::signatures"; 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' ); done_testing(); 04_boxer.t000644001750001750 235713650603434 14537 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use Test::Fatal; use Test::Deep qw(:v1); use Path::Tiny; use Log::Any::Test; use Log::Any qw($log); use strictures 2; no warnings "experimental::signatures"; use_ok('Boxer'); subtest 'list worlds' => sub { cmp_deeply [ Boxer->list_worlds ] => supersetof( 'Boxer::World::Flat', 'Boxer::World::Reclass', ), 'expected worlds available'; $log->empty_ok("no more logs"); }; subtest 'get flat world' => sub { isa_ok Boxer->get_world('flat'), 'Boxer::World::Flat', 'expected class'; $log->empty_ok("no more logs"); }; subtest 'get reclass world' => sub { isa_ok Boxer->get_world('reclass'), 'Boxer::World::Reclass', 'expected class'; $log->empty_ok("no more logs"); }; subtest 'get bogus world' => sub { is Boxer->get_world('foo'), undef, 'undefined as expected'; $log->category_contains_ok( 'Boxer', qr/^No world "foo" found$/, 'failure logged' ); $log->empty_ok("no more logs"); }; subtest 'get empty world' => sub { isa_ok Boxer->get_world(), 'Boxer::World::Flat', 'expected class'; $log->empty_ok("no more logs"); }; subtest 'get undefined world' => sub { isa_ok Boxer->get_world(), 'Boxer::World::Flat', 'expected class'; $log->empty_ok("no more logs"); }; done_testing(); 05_world-reclass.t000644001750001750 2023213650603434 16212 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use Test::Fatal; use Test::Deep qw(:v1); use Path::Tiny; use Log::Any::Test; use Log::Any qw($log); use strictures 2; no warnings "experimental::signatures"; use_ok('Boxer::World::Reclass'); my $world = new_ok( 'Boxer::World::Reclass' => [ suite => 'buster', data => path('examples'), ] ); cmp_deeply $world, all( obj_isa('Boxer::World::Reclass'), methods( parts => all( arraylength(3), array_each( obj_isa('Boxer::Part::Reclass') ), ), [ 'get_part', 'lxp5' ] => obj_isa('Boxer::Part::Reclass'), [ 'get_part', 'foo' ] => undef, ), listmethods( list_parts => bag(qw( lxp5 parl-greens zsh )), ), noclass( { data => obj_isa('Path::Tiny'), classdir => obj_isa('Path::Tiny'), nodedir => obj_isa('Path::Tiny'), parts => ignore(), suite => 'buster', _logger => ignore(), _logger_category => ignore(), } ) ), 'world contains expected methods and data'; $log->category_contains_ok( 'Boxer::World::Reclass', qr/^Part "foo" does not exist\.$/, 'failure logged' ); $log->empty_ok("no more logs"); subtest 'from explicit classdir' => sub { my $world = new_ok( 'Boxer::World::Reclass' => [ suite => 'buster', data => path('examples'), classdir => path('examples/classes'), ] ); cmp_deeply $world, obj_isa('Boxer::World::Reclass'), 'world contains expected methods and data'; $log->empty_ok("no more logs"); }; subtest 'from explicit nodedir' => sub { my $world = new_ok( 'Boxer::World::Reclass' => [ suite => 'buster', data => path('examples'), nodedir => path('examples/nodes'), ] ); cmp_deeply $world, obj_isa('Boxer::World::Reclass'), 'world contains expected methods and data'; $log->empty_ok("no more logs"); }; subtest 'from explicit dirs' => sub { my $world = new_ok( 'Boxer::World::Reclass' => [ suite => 'buster', classdir => path('examples/classes'), nodedir => path('examples/nodes'), ] ); cmp_deeply $world, obj_isa('Boxer::World::Reclass'), 'world contains expected methods and data'; $log->empty_ok("no more logs"); }; subtest 'from empty dirs' => sub { my $dir1 = Path::Tiny->tempdir; my $dir2 = Path::Tiny->tempdir; my $world = new_ok( 'Boxer::World::Reclass' => [ suite => 'foo', classdir => $dir1, nodedir => $dir2, ] ); cmp_deeply $world, all( obj_isa('Boxer::World'), methods( parts => arraylength(0), [ 'get_part', 'lxp5' ] => undef, ), ), 'world contains expected methods and data'; $log->category_contains_ok( 'Boxer::World::Reclass', qr/^No parts exist\.$/, 'failure logged' ); $log->empty_ok("no more logs"); }; subtest 'for empty suite' => sub { my $dir1 = Path::Tiny->tempdir; my $dir2 = Path::Tiny->tempdir; like exception { Boxer::World::Reclass->new( suite => '', classdir => $dir1, nodedir => $dir2, ); }, qr/^Must be a single lowercase word/, 'Died as expected'; $log->empty_ok("no more logs"); }; subtest 'from nonexistent classdir' => sub { my $tempdir = Path::Tiny->tempdir; like exception { Boxer::World::Reclass->new( suite => 'foo', classdir => $tempdir->child('foo'), nodedir => path('examples/nodes'), ); }, qr/Must be an existing directory containing boxer classes/, 'Died as expected on non-existing classdir'; $log->empty_ok("no more logs"); }; subtest 'from nonexistent nodedir' => sub { my $tempdir = Path::Tiny->tempdir; like exception { Boxer::World::Reclass->new( suite => 'foo', classdir => path('examples/classes'), nodedir => $tempdir->child('bar'), ); }, qr/Must be an existing directory containing boxer nodes/, 'Died as expected on non-existing classdir'; $log->empty_ok("no more logs"); }; my $node_cmp_lxp5 = { doc => { admin => { headline => bag('Administration'), pkg => bag( 'include Backupninja hook to save to remote host', 'include backup system Backupninja', 'include hardening tools', 'include passive account hardening PAM plugin cracklib', 'include support and tools for Logical Volume Management', 'include web-of-trust hardening tool Monkeysphere', ), tweak => bag( 'include config file VCS tracking tool etckeeper', ), }, console => { headline => bag('Console'), pkg => bag( 'install console editor ViM', 'install console multiplexer GNU screen', ), }, 'console-mail' => { headline => bag('Console mail'), pkg => bag( 'include console tool listadmin to moderate Mailman mailinglists', ), }, framework => { headline => bag('Framework'), pkg => bag( 'exclude WebKit GTK+ 1.0 library (used for maybe-risky PAC proxy parsing)', ), }, hardware => { headline => bag('Hardware'), pkg => bag( 'include core support for board with older 32bit Intel Atom CPU', 'include low-level crypto hardening tools', ), 'pkg-nonfree' => bag( 'include firmware for Realtek NIC drivers', ), }, service => { headline => bag('Service'), pkg => bag( 'include antispam service AMaViS (with SpamAssassin)', 'include antivirus service ClamAV', 'include authoritative domain name service BIND', 'include DHCP client service', 'include git service', 'include intrusion detection system fail2ban', 'include remote access to console (ssh)', ), }, 'service-log' => { headline => bag('Syslog service'), pkg => bag( 'include syslog service Rsyslog', ), }, 'service-mail' => { headline => bag('Mail service'), pkg => bag( 'include Dovecot Sieve filter and Managesieve service', 'include IMAP mail access service using Dovecot', 'include mailinglist service Mailman', 'install mail delivery agent Dovecot', 'install mail transport agent Postfix', 'install SASL email authentication using Dovecot and Cyrus', ), }, 'service-web' => { headline => bag('Web service'), pkg => bag( 'include webmail service CiderWebmail', 'include wiki service MoinMoin', 'install Apache2 plugin GnuTLS', 'install uWSGI plugin for Perl PSGI interface', 'install uWSGI plugin for Python WSGI interface', 'install web service Apache2', 'install web service uWSGI', ), }, }, epoch => 'buster', id => 'lxp5', pkg => bag( 'acpi-support-base', 'amavisd-new', 'apache2-mpm-worker', 'arj', 'backupninja', 'bind9', 'bzip2', 'cabextract', 'changetrack', 'clamav-daemon', 'debconf-utils', 'dovecot-core', 'dovecot-imapd', 'dovecot-managesieve', 'dovecot-sieve', 'e2fsck-static', 'etckeeper', 'fail2ban', 'firmware-linux-free', 'git-daemon-sysvinit', 'gitweb', 'harden', 'haveged', 'isc-dhcp-client', 'lhasa', 'libpam-cracklib', 'linux-image-686', 'listadmin', 'lvm2', 'lzop', 'mailman', 'miscfiles', 'molly-guard', 'monkeysphere', 'nomarch', 'p7zip', 'postfix', 'pyzor', 'razor', 'rdiff-backup', 'rkhunter', 'rsyslog', 'samhain', 'sash', 'sasl2-bin', 'screen', 'spamassassin', 'sudo', 'systraq', 'task-ssh-server', 'unhide.rb', 'unrar-free', 'uwsgi', 'uwsgi-plugin-psgi', 'uwsgi-plugin-python', 'vim', 'zoo', ), 'pkg-auto' => bag( 'ciderwebmail', 'dovecot-core', 'miscfiles', 'ncurses-term', 'openssh-blacklist', 'openssh-blacklist-extra', 'openssh-client', 'openssh-server', 'python-moinmoin', 'samhain', 'sash', 'unhide.rb', ), 'pkg-avoid' => bag( 'libwebkitgtk-1.0-0', 'spamc', ), 'pkg-nonfree' => bag( 'firmware-linux', 'firmware-realtek', ), 'pkg-nonfree-auto' => bag( 'firmware-linux-free', ), }; my $node_lxp5 = $world->get_part('lxp5'); cmp_deeply $node_lxp5, all( obj_isa('Boxer::Part'), noclass($node_cmp_lxp5), ), 'node "lxp5" contains expected data'; $log->empty_ok("no more logs"); my $node_cmp_zsh = { doc => { console => { pkg => bag( 'include terminal shell zsh', ), }, }, epoch => 'buster', id => 'zsh', pkg => bag( 'zsh', ), }; my $node_zsh = $world->get_part('zsh'); cmp_deeply $node_zsh, all( obj_isa('Boxer::Part'), noclass($node_cmp_zsh), ), 'node "zsh" contains expected data'; $log->empty_ok("no more logs"); done_testing(); bootstrap.t000644001750001750 640613650603434 15131 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use File::Which; use App::Cmd::Tester::CaptureExternal; use Log::Any::Test; use Log::Any qw($log); use Boxer::CLI; use strictures 2; no warnings "experimental::signatures"; plan skip_all => 'mmdebstrap executable required' unless which('mmdebstrap'); my @base_cmd = qw{bootstrap --datadir examples --skeldir share/skel --dryrun}; subtest 'without options' => sub { 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'; $log->contains_ok( qr/^Resolving classdir from /, 'classdir logged' ); $log->contains_ok( qr/^Resolving nodedir from /, 'nodedir 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"); }; subtest 'with "--helper debootstrap"' => sub { my $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 classdir /, 'classdir logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir 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"); }; subtest 'with "-- foo bar"' => sub { my $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 classdir /, 'classdir logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir 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 313713650603434 14727 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use Test::Fatal; use Test::Deep qw(:v1); use Path::Tiny; use Log::Any::Test; use Log::Any qw($log); use strictures 2; no warnings "experimental::signatures"; use_ok('Boxer::Task::Classify'); subtest 'from examples' => sub { my $classifier = new_ok( 'Boxer::Task::Classify' => [ datadir => path('examples'), ] ); $log->empty_ok("no more logs"); my $world = $classifier->run; isa_ok $world, 'Boxer::World', 'classified world is a Boxer::World'; $log->category_contains_ok( 'Boxer::Task::Classify', qr/^Resolving nodedir /, 'datadir logged' ); $log->category_contains_ok( 'Boxer::Task::Classify', qr/^Resolving classdir /, 'classdir logged' ); $log->category_contains_ok( 'Boxer::Task::Classify', qr/^Classifying /, 'classification logged' ); $log->empty_ok("no more logs"); }; subtest 'from empty dirs' => sub { my $dir = Path::Tiny->tempdir; note("Temporary directory is $dir"); my $classifier = new_ok( 'Boxer::Task::Classify' => [ datadir => $dir ] ); $log->empty_ok("no more logs"); like exception { $classifier->run; }, qr/Must be an existing directory /, 'Died as expected'; $log->category_contains_ok( 'Boxer::Task::Classify', qr/^Resolving classdir from /, 'classdir logged' ); $log->empty_ok("no more logs"); }; subtest 'from non-existing dirs' => sub { my $dir = Path::Tiny->tempdir; note("Temporary directory is $dir"); like exception { Boxer::Task::Classify->new( datadir => $dir->child('foo') ); }, qr/Directory '\S+' does not exist/, 'Died as expected'; $log->empty_ok("no more logs"); }; done_testing(); compose.t000644001750001750 470213650603434 14556 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use Path::Tiny; use App::Cmd::Tester::CaptureExternal; use Log::Any::Test; use Log::Any qw($log); use Boxer::CLI; use strictures 2; no warnings "experimental::signatures"; my @base_cmd = qw(compose --datadir examples --skeldir share/skel); subtest 'with "without options"' => sub { 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 classdir /, 'classdir logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir logged' ); $log->contains_ok( qr/^Classifying /, '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"); }; subtest 'with "--format preseed"' => sub { my $result = 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 $result->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' ); }; subtest 'with "--format script"' => sub { my $result = 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 $result->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 22113650603434 14171 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::Fixme; use strictures 2; no warnings "experimental::signatures"; run_tests( where => 'lib' ); minimumversion.t000644001750001750 26113650603434 16146 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl -w use v5.14; use utf8; use Test::More; use Test::MinimumVersion; use strictures 2; no warnings "experimental::signatures"; all_minimum_version_ok('5.020'); namespaces_clean.t000644001750001750 62013650603434 16345 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use Test::CleanNamespaces; use strictures 2; no warnings "experimental::signatures"; 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 34513650603434 13652 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use strictures 2; no warnings "experimental::signatures"; eval "use Test::Pod 1.00"; plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; all_pod_files_ok(); serialize.t000644001750001750 1043513650603434 15120 0ustar00jonasjonas000000000000Boxer-v1.4.2/t#!/usr/bin/perl use v5.14; use utf8; use Test::More; use Test::Fatal; use Test::File::Contents; use Path::Tiny; use Log::Any::Test; use Log::Any qw($log); use strictures 2; no warnings "experimental::signatures"; use_ok('Boxer::Part::Reclass'); use_ok('Boxer::World::Reclass'); use_ok('Boxer::Task::Classify'); use_ok('Boxer::Task::Serialize'); my $classifier = new_ok( 'Boxer::Task::Classify' => [ datadir => path('examples'), ] ); my $world = $classifier->run; subtest 'in preseed and script formats' => sub { my $outdir = Path::Tiny->tempdir; note("Temporary output directory is $outdir"); my $serializer = new_ok( 'Boxer::Task::Serialize' => [ world => $world, skeldir => path('share')->child('skel'), outdir => $outdir, node => 'parl-greens', format => [qw{preseed script}], ], ); ok $serializer->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 classdir /, 'classdir logged' ); $log->contains_ok( qr/^Resolving nodedir /, 'nodedir logged' ); $log->contains_ok( qr/^Classifying /, '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"); }; subtest 'in preseed format' => sub { my $outdir = Path::Tiny->tempdir; note("Temporary output directory is $outdir"); my $serializer = new_ok( 'Boxer::Task::Serialize' => [ world => $world, skeldir => path('share')->child('skel'), outdir => $outdir, node => 'lxp5', format => ['preseed'], ], ); ok $serializer->run; ok -e $outdir->child('preseed.cfg'), 'preseed.cfg generated'; ok !-e $outdir->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' ); }; subtest 'in script format' => sub { my $outdir = Path::Tiny->tempdir; note("Temporary output directory is $outdir"); my $serializer = new_ok( 'Boxer::Task::Serialize' => [ world => $world, skeldir => path('share')->child('skel'), outdir => $outdir, node => 'lxp5', format => ['script'], ], ); ok $serializer->run; ok !-e $outdir->child('preseed.cfg'), 'preseed.cfg not generated'; ok -e $outdir->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' ); }; subtest 'in wrong format' => sub { 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'; }; subtest 'in empty format' => sub { is exception { Boxer::Task::Serialize->new( world => $world, skeldir => path('share')->child('skel'), outdir => Path::Tiny->tempdir, node => 'lxp5', format => [], ); }, undef, 'Died as expected'; }; done_testing(); lxp5.yml000644001750001750 134113650603434 17016 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 13213650603434 20322 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/nodesclasses: - Task.harden.desktop - Desktop.locale.EU - Hardware.laptop.lenovo.edge145 zsh.yml000644001750001750 22313650603434 16710 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/nodes# test node with custom parameters and no classes parameters: doc: console: pkg: - include terminal shell zsh pkg: - zsh CLI.pm000644001750001750 177613650603434 15263 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxerpackage Boxer::CLI; =encoding UTF-8 =head1 NAME Boxer::CLI - boxer command line utils =cut use v5.14; use utf8; use Role::Commons -all; use namespace::autoclean 0.16; use App::Cmd::Setup -app; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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 202413650603434 15545 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxerpackage Boxer::Part; =encoding UTF-8 =head1 NAME Boxer::Part - software component =cut use v5.14; use utf8; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Moo; use MooX::StrictConstructor; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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 334613650603434 15551 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxerpackage Boxer::Task; =encoding UTF-8 =cut use v5.14; use utf8; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Moo; use MooX::StrictConstructor; with qw( MooX::Role::Logger Boxer::Role::Interact ); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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 432613650603434 15752 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxerpackage Boxer::Types; =encoding UTF-8 =cut use v5.14; use utf8; use Role::Commons -all; use namespace::autoclean; use Path::Tiny; use Type::Library -base, -declare => qw( WorldName 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); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; declare WorldName, as LowerCaseSimpleStr, coercion => 1, message {'Must be a single lowercase word'}; 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 261413650603434 15733 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxerpackage Boxer::World; =encoding UTF-8 =head1 NAME Boxer::World - set of software available to install =cut use v5.14; use utf8; use Role::Commons -all; use namespace::autoclean 0.16; use autodie; use Moo; use MooX::StrictConstructor; use Types::Standard qw( ArrayRef InstanceOf Maybe ); use Boxer::Types qw( DataDir ); with qw(MooX::Role::Logger); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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 data => ( is => 'lazy', isa => Maybe [DataDir], coerce => 1, ); 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 66413650603434 17221 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 52013650603434 16740 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 45713650603434 20442 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 10713650603434 20374 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Adminparameters: doc: admin: headline: - Administration init.yml000644001750001750 10713650603434 20425 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Adminparameters: doc: admin: headline: - Administration compression.yml000644001750001750 16413650603434 22400 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Consoleclasses: - cli.compression parameters: doc: console: pkg: - include console compression tools filemanager.yml000644001750001750 20513650603434 22305 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Consoleclasses: - cli.mc - Console parameters: doc: console: pkg: - install console file manager Midnight Commander init.yml000644001750001750 10213650603434 20772 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Consoleparameters: doc: console: headline: - Console mouse.yml000644001750001750 16313650603434 21166 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Consoleclasses: - cli.gpm - Console parameters: doc: console: pkg: - enable console mouse support tools.yml000644001750001750 31713650603434 21177 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 12313650603434 20753 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktopclasses: - x11 parameters: doc: desktop: headline: - Desktop harden.yml000644001750001750 12213650603434 21301 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktopclasses: - Desktop.email.harden - Desktop.tools.harden - Desktop.web.harden init.yml000644001750001750 12313650603434 21004 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktopclasses: - x11 parameters: doc: desktop: headline: - Desktop base.yml000644001750001750 10613650603434 21300 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Frameworkparameters: doc: framework: headline: - Framework base.yml000644001750001750 10413650603434 21076 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardwareparameters: doc: hardware: headline: - Hardware harden.yml000644001750001750 7613650603434 21415 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardwareclasses: - Hardware.net.pac.avoid - Hardware.tools.harden power.yml000644001750001750 37413650603434 21331 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 24313650603434 22057 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Serviceclasses: - cli.compression.uncommon - Service parameters: doc: service: pkg: - include antivirus service ClamAV pkg: - clamav-daemon base.yml000644001750001750 10213650603434 20737 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Serviceparameters: doc: service: headline: - Service git.yml000644001750001750 24313650603434 20616 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Serviceclasses: - Service.web.apache - Service parameters: doc: service: pkg: - include git service pkg: - gitweb - git-daemon-sysvinit ids.yml000644001750001750 21213650603434 20606 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Serviceclasses: - Service parameters: doc: service: pkg: - include intrusion detection system fail2ban pkg: - fail2ban init.yml000644001750001750 10213650603434 20770 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Serviceparameters: doc: service: headline: - Service ssh.yml000644001750001750 33113650603434 20626 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 3513650603434 17744 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/cliparameters: pkg: - gpm less.yml000644001750001750 3613650603434 20130 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/cliparameters: pkg: - less mc.yml000644001750001750 16513650603434 17604 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/cli#FIXME: check if antiword catdoc html2text and/or others are needed classes: - cli.web parameters: pkg: - mc ssh-server.yml000644001750001750 16113650603434 21302 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/cliparameters: pkg: - task-ssh-server - molly-guard pkg-auto: - openssh-server - openssh-client web.yml000644001750001750 14013650603434 17753 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/cli# elinks is arguably better, but not recognized by default by mc parameters: pkg: - links bluetooth.yml000644001750001750 4313650603434 21034 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hwparameters: pkg: - bluetooth crypto.yml000644001750001750 4113650603434 20345 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hwparameters: pkg: - haveged firmware.yml000644001750001750 17713650603434 20673 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hwparameters: pkg: - firmware-linux-free pkg-nonfree: - firmware-linux pkg-nonfree-auto: - firmware-linux-free power.yml000644001750001750 4613650603434 20166 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hwparameters: pkg: - cpufrequtils init.yml000644001750001750 4613650603434 17770 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/x11parameters: pkg: - xserver-xorg Command.pm000644001750001750 152413650603434 16630 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/CLIpackage Boxer::CLI::Command; =encoding UTF-8 =cut use v5.14; use utf8; use Role::Commons -all; use namespace::autoclean 0.16; use Log::Any::Adapter qw; use App::Cmd::Setup-command; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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 534113650603434 20143 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/Filepackage Boxer::File::WithSkeleton; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; 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); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; # permit callers to sloppily pass undefined values sub BUILDARGS ( $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 ($self) { if ( $self->basename ) { return $self->basename; } elsif ( $self->skeleton_suffix ) { return $self->skeleton_path->basename( $self->skeleton_suffix ); } }, ); has file_path => ( is => 'lazy', isa => Path, required => 1, default => sub ($self) { if ( $self->file_dir and $self->file ) { return $self->file_dir->child( $self->file ); } }, ); has file_dir => ( is => 'lazy', isa => Dir, default => sub { path('.') }, ); has skeleton => ( is => 'lazy', isa => Basename, default => sub ($self) { if ( $self->basename and $self->skeleton_dir and $self->skeleton_suffix ) { return $self->skeleton_dir->child( $self->basename . $self->skeleton_suffix )->basename; } }, ); has skeleton_path => ( is => 'lazy', isa => File, required => 1, default => sub ($self) { if ( $self->skeleton_dir and $self->skeleton ) { return $self->skeleton_dir->child( $self->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 ( $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 353413650603434 17150 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 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 Boxer::Types qw( Suite ); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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 => Suite, ); =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 214713650603434 17317 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/Rolepackage Boxer::Role::Interact; =encoding UTF-8 =cut use v5.14; use utf8; use Role::Commons -all; use namespace::autoclean 0.16; use Moo::Role; use Types::Standard qw< Bool >; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; 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 526213650603434 17525 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/Taskpackage Boxer::Task::Bootstrap; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; 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 ); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; has world => ( is => 'ro', isa => InstanceOf ['Boxer::World'], 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 ($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 ($self) { my $world = $self->world->map( $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 522513650603434 17324 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/Taskpackage Boxer::Task::Classify; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; no warnings "experimental::signatures"; use namespace::autoclean 0.16; use autodie qw(:all); use IPC::System::Simple; use File::BaseDir qw(data_dirs); use Boxer; use Moo; use MooX::StrictConstructor; extends qw(Boxer::Task); use Types::Standard qw(Maybe); use Boxer::Types qw( WorldName DataDir ClassDir NodeDir Suite ); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; # permit callers to sloppily pass undefined values sub BUILDARGS ( $class, %args ) { delete @args{ grep !defined( $args{$_} ), keys %args }; return {%args}; } has world => ( is => 'ro', isa => WorldName, required => 1, default => sub {'reclass'}, ); has datadir => ( is => 'lazy', isa => Maybe [DataDir], coerce => 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 ($self) { my $dir; if ( $self->datadir ) { $self->_logger->trace('Resolving classdir from datadir'); $dir = $self->datadir->child('classes'); } else { $self->_logger->trace('Resolving classdir 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 ($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 ($self) { 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->get_world( $self->world )->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 550513650603434 17477 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/Taskpackage Boxer::Task::Serialize; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; 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 ); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; has world => ( is => 'ro', isa => InstanceOf ['Boxer::World'], 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 ($self) { my $world = $self->world->map( $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 657513650603434 16633 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/Worldpackage Boxer::World::Flat; =encoding UTF-8 =head1 NAME Boxer::World::Flat - software for single use case =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; 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 ); use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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 ( $self, $file, $oldstyle = 0 ) { 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 1530113650603434 17344 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/Worldpackage Boxer::World::Reclass; =encoding UTF-8 =head1 NAME Boxer::World::Reclass - software as serialized by reclass =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; use namespace::autoclean 0.16; use autodie; use YAML::XS; use List::MoreUtils qw(uniq); use Hash::Merge qw(merge); use Try::Tiny; use Moo; use MooX::StrictConstructor; extends qw(Boxer::World); use Types::Standard qw( ArrayRef InstanceOf Maybe ); use Boxer::Types qw( ClassDir NodeDir Suite ); use Boxer::Part::Reclass; use Boxer::World::Flat; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; =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, coerce => 1, required => 1, ); sub _build_classdir ($self) { if ( $self->data ) { return $self->data->child('classes'); } return; } has nodedir => ( is => 'lazy', isa => NodeDir, coerce => 1, required => 1, ); sub _build_nodedir ($self) { if ( $self->data ) { return $self->data->child('nodes'); } return; } has parts => ( is => 'lazy', isa => ArrayRef [ InstanceOf ['Boxer::Part::Reclass'] ], init_arg => undef, ); # process only matching types, and skip duplicates is arrays my $merge_spec = { 'SCALAR' => { 'SCALAR' => sub { $_[0] }, 'ARRAY' => sub { die 'bad input data' }, 'HASH' => sub { die 'bad input data' }, }, 'ARRAY' => { 'SCALAR' => sub { die 'bad input data' }, 'ARRAY' => sub { [ uniq @{ $_[0] }, @{ $_[1] } ] }, 'HASH' => sub { die 'bad input data' }, }, 'HASH' => { 'SCALAR' => sub { die 'bad input data' }, 'ARRAY' => sub { die 'bad input data' }, 'HASH' => sub { Hash::Merge::_merge_hashes( $_[0], $_[1] ) }, }, }; Hash::Merge::add_behavior_spec($merge_spec); sub _build_parts ($self) { my $classdata = $self->classdir->visit( sub ( $path, $state ) { return if $path->is_dir; return unless ( $path->basename =~ /\.yml$/ ); my $yaml = Load( $path->slurp_utf8 ); my $class = $path->relative( $self->classdir ) =~ tr/\//./r =~ s/\.yml$//r =~ s/\.init$//r; $state->{$class} = $yaml; }, { recurse => 1 }, ); my $nodedata = $self->nodedir->visit( sub ( $path, $state ) { return if $path->is_dir; return unless ( $path->basename =~ /\.yml$/ ); my $yaml = Load( $path->slurp_utf8 ); my $node = $path->basename(qr/\.yml$/); $state->{$node} = $yaml; }, ); my @parts; for ( sort keys %{$nodedata} ) { my %params = (); my @classes = $nodedata->{$_}{classes} ? @{ $nodedata->{$_}{classes} } : (); while ( my $next = shift @classes ) { unless ( $classdata->{$next} ) { $self->_logger->debug( "Ignoring missing class $next for node $_."); next; } if ( $classdata->{$next}{classes} and !$params{_seen}{$next} ) { $params{_seen}{$next} = 1; unshift @classes, @{ $classdata->{$next}{classes} }, $next; next; } %params = %{ merge( \%params, $classdata->{$next}{parameters} ) } if $classdata->{$next}{parameters}; } delete $params{_seen}; %params = %{ merge( \%params, $nodedata->{$_}{parameters} ) } if $nodedata->{$_}{parameters}; push @parts, Boxer::Part::Reclass->new( id => $_, epoch => $self->suite, %params, ); } return [@parts]; } sub list_parts ($self) { return map { $_->id } @{ $self->parts }; } sub get_part ( $self, $id ) { unless ( @{ $self->parts } ) { $self->_logger->error("No parts exist."); return; } foreach ( @{ $self->parts } ) { if ( $_->id eq $id ) { return $_; } } $self->_logger->error("Part \"$id\" does not exist."); return; } my $pos = 1; my @section_order = qw( Administration Service Console Desktop Language Framework Task Hardware ); my %section_order = map { $_ => $pos++ } @section_order; sub map ( $self, $node_id, $nonfree ) { my $node = $self->get_part($node_id); 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 12513650603434 21211 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/aptclasses: - Framework.pkg.apt.cli.aptitude - Admin.apt.popcon - Admin.apt.tools popcon.yml000644001750001750 23113650603434 21542 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/aptclasses: - Admin parameters: doc: admin: pkg: - include package usage reporting Popularity-Contest pkg: - popularity-contest init.yml000644001750001750 30613650603434 21673 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 22713650603434 22225 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/backupclasses: - Admin.backup parameters: doc: admin: pkg: - include Backupninja hook to save to remote host pkg: - rdiff-backup lvm.yml000644001750001750 22513650603434 21213 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/diskclasses: - Admin.base parameters: doc: admin: pkg: - include support and tools for Logical Volume Management pkg: - lvm2 functions.yml000644001750001750 105113650603434 22264 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 21713650603434 21343 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/etcclasses: - Admin parameters: doc: admin: tweak: - include config file VCS tracking tool etckeeper pkg: - etckeeper init.yml000644001750001750 45613650603434 21675 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 21713650603434 22604 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/hardenclasses: - Admin parameters: doc: admin: pkg: - include web-of-trust hardening tool Monkeysphere pkg: - monkeysphere init.yml000644001750001750 17413650603434 22271 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/editorclasses: - Console parameters: doc: console: pkg: - install console editor GNU nano pkg: - nano vim.yml000644001750001750 16613650603434 22122 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/editorclasses: - Console parameters: doc: console: pkg: - install console editor ViM pkg: - vim init.yml000644001750001750 14113650603434 21717 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/mailclasses: - Console parameters: doc: console-mail: headline: - Console mail mutt.yml000644001750001750 20713650603434 21750 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/mailclasses: - Console.mail parameters: doc: console-mail: pkg: - Install console mail client Mutt pkg: - mutt tools.yml000644001750001750 21113650603434 22112 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/mailclasses: - Console.mail parameters: doc: console-mail: pkg: - include console mail helper tools pkg: - mb2md init.yml000644001750001750 14313650603434 22056 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/mediaclasses: - Console parameters: doc: console-media: headline: - Console media init.yml000644001750001750 14513650603434 22250 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/mobileclasses: - Console parameters: doc: console-mobile: headline: - Console mobile sync.yml000644001750001750 30013650603434 22252 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/mobileclasses: - Console.mobile parameters: doc: console-mobile: pkg: - include SyncEvolution console tool and http service pkg: - syncevolution - syncevolution-http init.yml000644001750001750 20513650603434 23350 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/multiplexerclasses: - Console parameters: doc: console: pkg: - install console multiplexer GNU screen pkg: - screen init.yml000644001750001750 14113650603434 21723 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/chatclasses: - Desktop parameters: doc: desktop-chat: headline: - Desktop chat base.yml000644001750001750 16013650603434 22043 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/emailclasses: - x11 - Desktop.base parameters: doc: desktop-email: headline: - Desktop email bidi.yml000644001750001750 24613650603434 22045 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/emailclasses: - Desktop.email parameters: doc: desktop-email: pkg: - include Icedove support for bidirectional text pkg: - icedove-l10n-bidiui harden.yml000644001750001750 5213650603434 22352 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/emailclasses: - Desktop.email.icedove.harden init.yml000644001750001750 32113650603434 22073 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 13413650603434 21613 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/localeclasses: - Desktop.email.locale.EU - Desktop.office.locale.EU - Desktop.web.locale.EU init.yml000644001750001750 14313650603434 22065 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/mediaclasses: - Desktop parameters: doc: desktop-media: headline: - Desktop media init.yml000644001750001750 14513650603434 22257 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/mobileclasses: - Desktop parameters: doc: desktop-mobile: headline: - Desktop mobile sync.yml000644001750001750 46713650603434 22277 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 15513650603434 22244 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/officeclasses: - Desktop - x11 parameters: doc: desktop-office: headline: - Desktop office presentation.yml000644001750001750 26013650603434 24011 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/officeclasses: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice Impress pkg: - libreoffice-impress - libreoffice-ogltrans spreadsheet.yml000644001750001750 21713650603434 23607 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/officeclasses: - Desktop.office parameters: doc: desktop-office: pkg: - include LibreOffice Calc pkg: - libreoffice-calc word-processor.yml000644001750001750 33313650603434 24267 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 32313650603434 23133 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/schedulingclasses: - Desktop - Desktop.email parameters: doc: desktop-scheduling: headline: - Desktop scheduling pkg: - include Icedove extension Iceowl pkg: - iceowl-extension unicode.yml000644001750001750 22313650603434 24010 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/screensaverclasses: - Desktop parameters: doc: desktop: pkg: - include screensaver unicode-screensaver pkg: - unicode-screensaver harden.yml000644001750001750 32113650603434 22442 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 14413650603434 21533 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/webclasses: - Desktop.base parameters: doc: desktop-web: headline: - Desktop web harden.yml000644001750001750 5213650603434 22040 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/webclasses: - Desktop.web.iceweasel.harden init.yml000644001750001750 25113650603434 21563 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/webclasses: - Desktop parameters: doc: desktop-web: headline: - Desktop web pkg: - include Iceweasel web browser pkg: - iceweasel java.yml000644001750001750 31413650603434 21541 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 12313650603434 22617 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Framework/cryptoparameters: doc: framework-media: headline: - Crypto framework base.yml000644001750001750 12213650603434 22355 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Framework/mediaparameters: doc: framework-media: headline: - Media framework base.yml000644001750001750 12413650603434 22061 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Framework/pkgparameters: doc: framework-media: headline: - Package framework init.yml000644001750001750 10113650603434 21526 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardware/glclasses: - Hardware.gl.hardware - Hardware.gl.software.avoid init.yml000644001750001750 44713650603434 22440 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 52613650603434 22767 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 21013650603434 22563 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardware/toolsclasses: - hw.crypto - Hardware.base parameters: doc: hardware: pkg: - include low-level crypto hardening tools base.yml000644001750001750 13313650603434 22007 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Language/javaclasses: - Language parameters: doc: Language.java: headline: - Java init.yml000644001750001750 10513650603434 22037 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Language/javaclasses: - Language.java.openjdk6 - Language.java.openjdk7.avoid client.yml000644001750001750 20313650603434 22223 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/dhcpclasses: - Service parameters: doc: service: pkg: - include DHCP client service pkg: - isc-dhcp-client init.yml000644001750001750 17413650603434 21717 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/dhcpclasses: - Service parameters: doc: service: pkg: - include DHCP service pkg: - isc-dhcp-server authoritative.yml000644001750001750 22113650603434 23503 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/dnsclasses: - Service.base parameters: doc: service: pkg: - include authoritative domain name service BIND pkg: - bind9 init.yml000644001750001750 14713650603434 21565 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/dnsclasses: - Service parameters: doc: service-dns: headline: - Domain name service init.yml000644001750001750 25313650603434 21560 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/logclasses: - Service parameters: doc: service-log: headline: - Syslog service pkg: - include syslog service Rsyslog pkg: - rsyslog remote.yml000644001750001750 26513650603434 22113 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 34013650603434 22567 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 14613650603434 21671 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/mailclasses: - Service.base parameters: doc: service-mail: headline: - Mail service imap.yml000644001750001750 30113650603434 21676 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 14113650603434 21715 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/mailclasses: - Service parameters: doc: service-mail: headline: - Mail service list.yml000644001750001750 25013650603434 21726 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/mailclasses: - Service.web.apache - Service.mail.mta parameters: doc: service-mail: pkg: - include mailinglist service Mailman pkg: - mailman mda.yml000644001750001750 22213650603434 21513 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/mailclasses: - Service.mail parameters: doc: service-mail: pkg: - install mail delivery agent Dovecot pkg: - dovecot-core sasl.yml000644001750001750 37413650603434 21724 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 30213650603434 22064 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 11213650603434 21546 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/webparameters: doc: service-web: headline: - Web service desktop.yml000644001750001750 21413650603434 22245 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Task/hardenclasses: - Hardware.laptop - Hardware.gl - Admin.apt - Admin.auto - Desktop - Desktop.harden - Framework.media.wildmidi.limit init.yml000644001750001750 3713650603434 22467 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/cli/compressionparameters: pkg: - bzip2 uncommon.yml000644001750001750 22713650603434 23400 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/cli/compressionclasses: - cli.compression parameters: pkg: - arj - cabextract - lhasa - lzop - nomarch - p7zip - unrar-free - zoo full.yml000644001750001750 13713650603434 20731 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hw/acpiclasses: - hw.acpi parameters: pkg: - acpi-support pkg-auto: - acpi-support-base init.yml000644001750001750 5313650603434 20707 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hw/acpiparameters: pkg: - acpi-support-base init.yml000644001750001750 4413650603434 20533 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hw/macparameters: pkg: - macfanctld laptop.yml000644001750001750 13713650603434 21112 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hw/macclasses: - hw.mac parameters: pkg: - pommed pkg-nonfree: - isight-firmware-tools amd64.yml000644001750001750 10013650603434 20401 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hw/x86classes: - hw.acpi parameters: pkg: - linux-image-amd64 i486.yml000644001750001750 7613650603434 20154 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hw/x86classes: - hw.acpi parameters: pkg: - linux-image-486 i686.yml000644001750001750 7613650603434 20156 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/hw/x86classes: - hw.acpi parameters: pkg: - linux-image-686 gtk.yml000644001750001750 11313650603434 21255 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/x11/lightdmclasses: - x11.lightdm parameters: pkg-auto: - lightdm-gtk-greeter init.yml000644001750001750 12113650603434 21432 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/x11/lightdmclasses: - x11 parameters: pkg: - lightdm pkg-auto: - xserver-xorg About.pm000644001750001750 267513650603434 17712 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::About; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; use namespace::autoclean 0.16; use Boxer::CLI -command; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; 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 ( $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 315113650603434 20207 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::Aliases; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; use namespace::autoclean 0.16; use match::simple qw(match); use Boxer::CLI -command; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; 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 ( $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 531413650603434 20606 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::Bootstrap; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; use namespace::autoclean 0.16; use Path::Tiny; use List::MoreUtils qw(before after); use Module::Runtime qw/use_module/; use Boxer::CLI -command; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; use constant { abstract => q[bootstrap system image from abstract 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 abstract nodes to resolve using a set of abstract 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 ( $self, $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 232313650603434 20367 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::Commands; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; use namespace::autoclean 0.16; use Boxer::CLI -command; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; require App::Cmd::Command::commands; our @ISA; unshift @ISA, 'App::Cmd::Command::commands'; use constant { abstract => q[list installed boxer commands], }; sub sort_commands ( $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 453713650603434 20244 0ustar00jonasjonas000000000000Boxer-v1.4.2/lib/Boxer/CLI/Commandpackage Boxer::CLI::Command::Compose; =encoding UTF-8 =cut use v5.20; use utf8; use Role::Commons -all; use feature 'signatures'; use namespace::autoclean 0.16; use Path::Tiny; use Module::Runtime qw/use_module/; use Boxer::CLI -command; use strictures 2; no warnings "experimental::signatures"; =head1 VERSION Version v1.4.2 =cut our $VERSION = "v1.4.2"; use constant { abstract => q[compose system recipe from abstract 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 abstract nodes to resolve using a set of abstract 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 ( $self, $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 26713650603434 21775 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 113013650603434 22163 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 252213650603434 23251 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 21113650603434 23012 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/apt/toolsclasses: - Admin.base parameters: doc: admin: pkg: - include APT hook apt-listchanges pkg: - apt-listchanges init.yml000644001750001750 4513650603434 22332 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/apt/toolsclasses: - Admin.apt.tools.changes init.yml000644001750001750 30613650603434 23323 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 23613650603434 23676 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Admin/harden/accountclasses: - Admin.harden.account parameters: doc: admin: pkg: - include proactive account hardening tool John the Ripper pkg: - john init.yml000644001750001750 4513650603434 22655 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/mail/listclasses: - Console.mail.list.tools tools.yml000644001750001750 25313650603434 23073 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/mail/listclasses: - Console.mail parameters: doc: console-mail: pkg: - include console tool listadmin to moderate Mailman mailinglists pkg: - listadmin alsa.yml000644001750001750 21413650603434 23133 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Console/media/audioclasses: - Console.media parameters: doc: console-media: pkg: - include core ALSA audio tools pkg: - alsa-utils crypto.yml000644001750001750 25413650603434 23557 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 20313650603434 23174 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/chat/pidginclasses: - Desktop.chat parameters: doc: desktop-chat: pkg: - include chat client Pidgin pkg: - pidgin base.yml000644001750001750 26513650603434 23467 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/email/icedoveclasses: - Desktop.email.base parameters: doc: desktop-email: headline: - Desktop email pkg: - include Icedove email client pkg: - icedove harden.yml000644001750001750 25013650603434 24010 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/email/icedoveclasses: - Hardware.harden - Desktop.email.icedove.base parameters: doc: desktop-email: pkg: - include Icedove PGP plugin pkg: - enigmail ALL.yml000644001750001750 22013650603434 22775 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/email/localeclasses: - Desktop.email parameters: doc: desktop-email: pkg: - include all Icedove locales pkg: - icedove-l10n-all AMERICAS.yml000644001750001750 26413650603434 23561 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 72613650603434 23115 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 132213650603434 22722 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 103713650603434 23413 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 200013650603434 23227 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 25713650603434 23151 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 27413650603434 24402 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 33613650603434 23466 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 41213650603434 23144 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 145613650603434 23751 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 125413650603434 23276 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 150213650603434 23066 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 117213650603434 23557 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 151113650603434 23401 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 27413650603434 23054 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 6113650603434 22535 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/tools/pgpclasses: - Framework.crypto.gnupg.pinentry.gtk init.yml000644001750001750 4313650603434 22713 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/tools/pgpclasses: - Desktop.tools.pgp.gtk base.yml000644001750001750 21413650603434 23472 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/web/iceweaselclasses: - Desktop.web.base parameters: doc: desktop-web: pkg: - include Iceweasel web browser pkg: - iceweasel harden.yml000644001750001750 50113650603434 24020 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 53413650603434 23010 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 22013650603434 22463 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Desktop/web/localeclasses: - Desktop.web parameters: doc: desktop-web: pkg: - include all Iceweasel locales pkg: - iceweasel-l10n-all AMERICAS.yml000644001750001750 35413650603434 23247 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 154513650603434 22623 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 141113650603434 22407 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 140413650603434 23077 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 213413650603434 22725 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 23613650603434 24371 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Framework/media/wildmidiclasses: - Framework.media.base parameters: bug: - 612509 doc: framework: pkg: - exclude MIDI patches pkg-avoid: - freepats init.yml000644001750001750 22213650603434 23327 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardware/gl/hardwareclasses: - Hardware.base parameters: doc: hardware: pkg: - include OpenGL hardware rasterizers pkg: - libgl1-mesa-dri avoid.yml000644001750001750 23213650603434 23524 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardware/gl/softwareclasses: - Hardware.base parameters: doc: hardware: pkg: - exclude OpenGL software rasterizers pkg-avoid: - libgl1-mesa-swx11 aao725.yml000644001750001750 30113650603434 23372 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 27113650603434 24424 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 40613650603434 24427 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 30113650603434 24122 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 27313650603434 23632 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 27613650603434 24136 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 10713650603434 24415 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardware/motherboard/asusclasses: - hw.x86.amd64 - hw.firmware - Hardware.igp.nvidia.nv1f baytrail-m.yml000644001750001750 34013650603434 25650 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 25313650603434 25334 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 26413650603434 25360 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 25513650603434 25036 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 25413650603434 24627 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 6413650603434 22604 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardware/net/pacclasses: - Framework.web.webkit.webkit1.gtk.avoid sta.yml000644001750001750 26213650603434 23317 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 25013650603434 23331 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Hardware/nic/realtekclasses: - Hardware.base parameters: doc: hardware: pkg-nonfree: - include firmware for Realtek NIC drivers pkg-nonfree: - firmware-realtek avoid.yml000644001750001750 21413650603434 23717 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Language/java/openjdk6classes: - Language.java.base parameters: doc: Language.java: pkg: - avoid OpenJDK 6 pkg-avoid: - openjdk-6-jre init.yml000644001750001750 21013650603434 23554 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Language/java/openjdk6classes: - Language.java.base parameters: doc: Language.java: pkg: - include OpenJDK 6 pkg: - openjdk-6-jre avoid.yml000644001750001750 21413650603434 23720 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Language/java/openjdk7classes: - Language.java.base parameters: doc: Language.java: pkg: - avoid OpenJDK 7 pkg-avoid: - openjdk-7-jre init.yml000644001750001750 21013650603434 23555 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Language/java/openjdk7classes: - Language.java.base parameters: doc: Language.java: pkg: - include OpenJDK 7 pkg: - openjdk-7-jre init.yml000644001750001750 4613650603434 22462 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/mail/mtaclasses: - Service.mail.mta.postfix postfix.yml000644001750001750 22313650603434 23230 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/mail/mtaclasses: - Service.mail.base parameters: doc: service-mail: pkg: - install mail transport agent Postfix pkg: - postfix gnutls.yml000644001750001750 16713650603434 23352 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/web/apacheclasses: - Service.web.apache parameters: doc: service-web: pkg: - install Apache2 plugin GnuTLS init.yml000644001750001750 21613650603434 22774 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/web/apacheclasses: - Service.web parameters: doc: service-web: pkg: - install web service Apache2 pkg: - apache2-mpm-worker uwsgi.yml000644001750001750 23413650603434 23167 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/web/apacheclasses: - Service.web.apache parameters: doc: service-web: pkg: - install Apache2 plugin for uWSGI pkg: - libapache2-mod-uwsgi cider.yml000644001750001750 24113650603434 22616 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/web/mailclasses: - Service.web.uwsgi.psgi parameters: doc: service-web: pkg: - include webmail service CiderWebmail pkg-auto: - ciderwebmail init.yml000644001750001750 20613650603434 22710 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/web/uwsgiclasses: - Service.web.apache parameters: doc: service-web: pkg: - install web service uWSGI pkg: - uwsgi psgi.yml000644001750001750 24413650603434 22711 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 25013650603434 23265 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 23713650603434 23403 0ustar00jonasjonas000000000000Boxer-v1.4.2/examples/classes/Service/web/wikiclasses: - Service.web.uwsgi.python parameters: doc: service-web: pkg: - include wiki service MoinMoin pkg-auto: - python-moinmoin aptitude.yml000644001750001750 31113650603434 24317 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 25013650603434 24753 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 26013650603434 25466 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 26013650603434 25473 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 24713650603434 26434 0ustar00jonasjonas000000000000Boxer-v1.4.2/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 30213650603434 25663 0ustar00jonasjonas000000000000Boxer-v1.4.2/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