• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /macosx-10.9.5/CPANInternal-140/DBIx-Class-Schema-Loader-0.07033/inc/Module/Install/
1#line 1
2package Module::Install::ReadmeFromPod;
3
4use 5.006;
5use strict;
6use warnings;
7use base qw(Module::Install::Base);
8use vars qw($VERSION);
9
10$VERSION = '0.18';
11
12sub readme_from {
13  my $self = shift;
14  return unless $self->is_admin;
15
16  # Input file
17  my $in_file  = shift || $self->_all_from
18    or die "Can't determine file to make readme_from";
19
20  # Get optional arguments
21  my ($clean, $format, $out_file, $options);
22  my $args = shift;
23  if ( ref $args ) {
24    # Arguments are in a hashref
25    if ( ref($args) ne 'HASH' ) {
26      die "Expected a hashref but got a ".ref($args)."\n";
27    } else {
28      $clean    = $args->{'clean'};
29      $format   = $args->{'format'};
30      $out_file = $args->{'output_file'};
31      $options  = $args->{'options'};
32    }
33  } else {
34    # Arguments are in a list
35    $clean    = $args;
36    $format   = shift;
37    $out_file = shift;
38    $options  = \@_;
39  }
40
41  # Default values;
42  $clean  ||= 0;
43  $format ||= 'txt';
44
45  # Generate README
46  print "readme_from $in_file to $format\n";
47  if ($format =~ m/te?xt/) {
48    $out_file = $self->_readme_txt($in_file, $out_file, $options);
49  } elsif ($format =~ m/html?/) {
50    $out_file = $self->_readme_htm($in_file, $out_file, $options);
51  } elsif ($format eq 'man') {
52    $out_file = $self->_readme_man($in_file, $out_file, $options);
53  } elsif ($format eq 'pdf') {
54    $out_file = $self->_readme_pdf($in_file, $out_file, $options);
55  }
56
57  if ($clean) {
58    $self->clean_files($out_file);
59  }
60
61  return 1;
62}
63
64
65sub _readme_txt {
66  my ($self, $in_file, $out_file, $options) = @_;
67  $out_file ||= 'README';
68  require Pod::Text;
69  my $parser = Pod::Text->new( @$options );
70  open my $out_fh, '>', $out_file or die "Could not write file $out_file:\n$!\n";
71  $parser->output_fh( *$out_fh );
72  $parser->parse_file( $in_file );
73  close $out_fh;
74  return $out_file;
75}
76
77
78sub _readme_htm {
79  my ($self, $in_file, $out_file, $options) = @_;
80  $out_file ||= 'README.htm';
81  require Pod::Html;
82  Pod::Html::pod2html(
83    "--infile=$in_file",
84    "--outfile=$out_file",
85    @$options,
86  );
87  # Remove temporary files if needed
88  for my $file ('pod2htmd.tmp', 'pod2htmi.tmp') {
89    if (-e $file) {
90      unlink $file or warn "Warning: Could not remove file '$file'.\n$!\n";
91    }
92  }
93  return $out_file;
94}
95
96
97sub _readme_man {
98  my ($self, $in_file, $out_file, $options) = @_;
99  $out_file ||= 'README.1';
100  require Pod::Man;
101  my $parser = Pod::Man->new( @$options );
102  $parser->parse_from_file($in_file, $out_file);
103  return $out_file;
104}
105
106
107sub _readme_pdf {
108  my ($self, $in_file, $out_file, $options) = @_;
109  $out_file ||= 'README.pdf';
110  eval { require App::pod2pdf; }
111    or die "Could not generate $out_file because pod2pdf could not be found\n";
112  my $parser = App::pod2pdf->new( @$options );
113  $parser->parse_from_file($in_file);
114  open my $out_fh, '>', $out_file or die "Could not write file $out_file:\n$!\n";
115  select $out_fh;
116  $parser->output;
117  select STDOUT;
118  close $out_fh;
119  return $out_file;
120}
121
122
123sub _all_from {
124  my $self = shift;
125  return unless $self->admin->{extensions};
126  my ($metadata) = grep {
127    ref($_) eq 'Module::Install::Metadata';
128  } @{$self->admin->{extensions}};
129  return unless $metadata;
130  return $metadata->{values}{all_from} || '';
131}
132
133'Readme!';
134
135__END__
136
137#line 254
138
139