/[MITgcm]/mitgcm.org/devel/buildweb/pkg/swish-e/doc/Pod/HtmlPsPdf/Config.pm
ViewVC logotype

Annotation of /mitgcm.org/devel/buildweb/pkg/swish-e/doc/Pod/HtmlPsPdf/Config.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1.1.1 - (hide annotations) (download) (vendor branch)
Fri Sep 20 19:47:29 2002 UTC (22 years, 10 months ago) by adcroft
Branch: Import, MAIN
CVS Tags: baseline, HEAD
Changes since 1.1: +0 -0 lines
Importing web-site building process.

1 adcroft 1.1 package Pod::HtmlPsPdf::Config;
2    
3     use strict;
4     use Carp;
5    
6     # META: probably move FindBin here
7     use File::Basename ();
8    
9     # passed only once and then cached
10     use vars qw($config_file);
11    
12     # called in BEGIN block before the rest of the code
13     ####################
14     sub set_config_file{
15     $config_file = shift || '';
16    
17     croak "Configuration file $config_file is not readable: $!"
18     unless -r $config_file;
19    
20     } # end of sub set_config_file
21    
22     ########
23     sub new{
24     my ($class) = shift;
25    
26     my $self = bless {}, ref($class)||$class;
27     $self->_init(@_);
28    
29     return $self;
30     } # end of sub new
31    
32     ##########
33     sub _init{
34     my $self = shift;
35     my $new_config_file = shift || '';
36    
37     set_config_file($new_config_file) if $new_config_file;
38    
39     croak "Configuration file is not specified"
40     unless $config_file;
41    
42    
43     # The root directory of the project
44     my $root = File::Basename::dirname $config_file;
45     $self->{root} = $root;
46    
47     # do all the work from the base directory
48     chdir $root;
49    
50     # process user's configuration file
51     require $config_file;
52     use vars qw(%c);
53     local *c = \%Pod::HtmlPsPdf::Config::Local::c;
54    
55     # dirs (will be mostly created dynamically
56     $self->{src_root} = $c{dir}{src} || cnf_err('$c{dir}{src}');
57     $self->{ps_root} = $c{dir}{rel_ps} || cnf_err('$c{dir}{rel_ps}');
58     $self->{rel_root} = $c{dir}{rel_html} || cnf_err('$c{dir}{rel_html}');
59     $self->{split_root} = $c{dir}{split_html} || cnf_err('$c{dir}{split_html}');
60     $self->{out_dir} = $c{dir}{out} || cnf_err('$c{dir}{out}');
61    
62     # setting the filenames to process and checking their existance
63     $self->{pod_files} = $c{ordered_pod_files} || cnf_err('$c{ordered_pod_files}');
64     $self->{nonpod_files} = $c{non_pod_files} || cnf_err('$c{non_pod_files}');
65     for (@{$self->{pod_files}}, @{$self->{nonpod_files}}) {
66     croak "Can't find @{[$self->{src_root}]}/$_: $!"
67     unless -r $self->{src_root}."/$_";
68     }
69    
70     # set and check that we can read the template files
71     my @tmpl_files = qw(index_html index_ps page_html page_ps page_split_html);
72     for (@tmpl_files) {
73     $self->{'tmpl_'.$_} = $c{tmpl}{$_} || cnf_err('$c{tmpl}{'.$_.'}');
74     croak "Can't find @{[$self->{'tmpl_'.$_}]}: $!"
75     unless -r $self->{'tmpl_'.$_};
76     }
77    
78     $self->{out_name} = $c{out_name} || cnf_err('$c{out_name}');
79    
80     $self->{toc_file} = $c{file}{toc_file} || cnf_err('$c{file}{toc_file}');
81    
82     $self->{version_file} = $c{file}{version_file} || cnf_err('$c{file}{version_file}');
83     $self->{package_name} = $c{package_name} || cnf_err('$c{package_name}');
84    
85     $self->{html2ps_conf} = $c{file}{html2ps_conf} || cnf_err('$c{file}{html2ps_conf}');
86    
87     $self->{dir_mode} = $c{mode}{dir} || cnf_err('$c{mode}{dir}');
88     $self->{html2ps_exec} = which( 'html2ps' );
89     chomp $self->{html2ps_exec};
90    
91     return $self;
92    
93     } # end of sub _init
94    
95     # user configuration parsing errors reporter
96     ############
97     sub cnf_err{
98     croak "$_[0] from package Pod::HtmlPsPdf::Config::Local is not
99     defined\n";
100     }# end of sub cnf_err
101    
102    
103     # you can only retrieve data from this class, you cannot modify it.
104     ##############
105     sub get_param{
106     my $self = shift;
107    
108     return () unless @_;
109     return unless defined wantarray;
110     my @values = map {defined $self->{$_} ? $self->{$_} : ''} @_;
111    
112     return wantarray ? @values : $values[0];
113    
114     } # end of sub get_param
115    
116    
117     sub which {
118     my $cmd = shift;
119    
120     foreach my $dir (split( ':', $ENV{PATH})) {
121     return "$dir/$cmd" if -x "$dir/$cmd";
122     }
123    
124     return;
125     }
126    
127    
128    
129     1;
130     __END__

  ViewVC Help
Powered by ViewVC 1.1.22