File Coverage

blib/lib/Boxer/World/Flat.pm
Criterion Covered Total %
statement 67 67 100.0
branch 2 2 100.0
condition n/a
subroutine 13 13 100.0
pod 0 1 0.0
total 82 83 98.8


line stmt bran cond sub pod time code
1             package Boxer::World::Flat;
2              
3             =encoding UTF-8
4              
5             =head1 NAME
6              
7             Boxer::World::Flat - software for single use case
8              
9             =cut
10              
11 6     6   3437 use v5.20;
  6         18  
12 6     6   27 use utf8;
  6         9  
  6         32  
13 6     6   158 use Role::Commons -all;
  6         10  
  6         35  
14 6     6   8992 use feature 'signatures';
  6         11  
  6         573  
15 6     6   38 use namespace::autoclean 0.16;
  6         97  
  6         31  
16 6     6   811 use autodie;
  6         12974  
  6         27  
17              
18 6     6   31709 use Moo;
  6         2476  
  6         26  
19 6     6   3763 use MooX::StrictConstructor;
  6         2920  
  6         38  
20             extends qw(Boxer::World);
21              
22 6     6   26332 use Types::Standard qw( Maybe Bool Tuple );
  6         55795  
  6         69  
23 6     6   5287 use Types::TypeTiny qw( StringLike ArrayLike );
  6         12  
  6         29  
24              
25 6     6   1458 use strictures 2;
  6         55  
  6         213  
26 6     6   974 no warnings "experimental::signatures";
  6         9  
  6         3575  
27              
28             =head1 VERSION
29              
30             Version v1.4.3
31              
32             =cut
33              
34             our $VERSION = "v1.4.3";
35              
36             =head1 DESCRIPTION
37              
38             Outside the box is a world of software.
39              
40             B is a class describing a collection of software
41             available for installation into (or as) an operating system.
42              
43             =head1 SEE ALSO
44              
45             L.
46              
47             =cut
48              
49             has parts => (
50             is => 'ro',
51             isa => Tuple [],
52             default => sub { [] },
53             );
54              
55             has node => (
56             is => 'ro',
57             isa => StringLike,
58             required => 1,
59             );
60              
61             has epoch => (
62             is => 'ro',
63             isa => Maybe [StringLike],
64             );
65              
66             has pkgs => (
67             is => 'ro',
68             isa => ArrayLike,
69             required => 1,
70             );
71              
72             has pkgs_auto => (
73             is => 'ro',
74             isa => ArrayLike,
75             required => 1,
76             );
77              
78             has pkgs_avoid => (
79             is => 'ro',
80             isa => ArrayLike,
81             required => 1,
82             );
83              
84             has tweaks => (
85             is => 'ro',
86             isa => ArrayLike,
87             required => 1,
88             );
89              
90             has pkgdesc => (
91             is => 'ro',
92             isa => StringLike,
93             required => 1,
94             );
95              
96             has tweakdesc => (
97             is => 'ro',
98             isa => StringLike,
99             required => 1,
100             );
101              
102             has nonfree => (
103             is => 'ro',
104             isa => Bool,
105             required => 1,
106             );
107              
108 8         12 sub as_file ( $self, $file, $oldstyle = 0 )
  8         16  
  8         14  
109 8     8 0 16 {
  8         8  
110 8         25 my $pkgs = join( ',', sort @{ $self->pkgs } );
  8         201  
111 8         17 my $pkgs_avoid = join( ',', sort @{ $self->pkgs_avoid } );
  8         33  
112 8         19 my $pkgs_auto = join( ',', sort @{ $self->pkgs_auto } );
  8         44  
113 8         14 my $tweaks = join( ";\\\n ", @{ $self->tweaks } );
  8         32  
114              
115 8         12 my $pkglist = join( ' ', sort @{ $self->pkgs } );
  8         148  
116 8         26 $pkglist .= " \\\n ";
117 8         17 $pkglist .= join( ' ', sort map { $_ . '-' } @{ $self->pkgs_avoid } );
  30         85  
  8         20  
118 8         21 my $pkgautolist = join( ' ', sort @{ $self->pkgs_auto } );
  8         34  
119              
120 8         14 my $tweaks_perl = $tweaks;
121 8         21 $tweaks_perl =~ s,chroot\s+/target\s+,,g;
122 8         20 $tweaks_perl =~ s,/target/,/,g;
123              
124             # TODO: maybe move below (or only $''{ part?) to reclass parser
125 8         39 $tweaks_perl =~ s/\\\K''(?=n)|\$\K''(?=\{)//g;
126              
127 8         109 my %vars = (
128             node => $self->node,
129             suite => $self->epoch,
130             pkgs => $pkgs,
131             pkgs_avoid => $pkgs_avoid,
132             pkgs_auto => $pkgs_auto,
133             pkgdesc => $self->pkgdesc,
134             pkglist => $pkglist,
135             tweakdesc => $self->tweakdesc,
136             tweaks => $tweaks,
137             tweaks_perl => $tweaks_perl,
138             tweaklist => $tweaks,
139             pkgautolist => $pkgautolist,
140             nonfree => $self->nonfree,
141             );
142              
143             # TODO: Drop oldstyle templating format
144             # (oldstyle preseed templates expect perl tweaks in regular tweaks string)
145 8 100       23 if ($oldstyle) {
146 4         24 my %altvars = %vars;
147 4         13 $altvars{tweaklist} = $tweaks_perl;
148 4         20 $file->create( \%altvars );
149             }
150             else {
151 4         25 $file->create( \%vars );
152             }
153              
154 8         4768 1;
155             }
156              
157             =head1 AUTHOR
158              
159             Jonas Smedegaard C<< >>.
160              
161             =cut
162              
163             our $AUTHORITY = 'cpan:JONASS';
164              
165             =head1 COPYRIGHT AND LICENCE
166              
167             Copyright © 2013-2016 Jonas Smedegaard
168              
169             This is free software; you can redistribute it and/or modify it under
170             the same terms as the Perl 5 programming language system itself.
171              
172             =head1 DISCLAIMER OF WARRANTIES
173              
174             THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
175             WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
176             MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
177              
178             =cut
179              
180             1;