Add built local::lib
[catagits/Gitalist.git] / local-lib5 / bin / tpage
diff --git a/local-lib5/bin/tpage b/local-lib5/bin/tpage
new file mode 100755 (executable)
index 0000000..ef912b6
--- /dev/null
@@ -0,0 +1,257 @@
+#!/usr/bin/perl -w
+
+eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'
+    if 0; # not running under some shell
+#========================================================================
+#
+# tpage
+#
+# DESCRIPTION
+#   Script for processing and rendering a template document using the 
+#   Perl Template Toolkit. 
+#
+# AUTHOR
+#   Andy Wardley   <abw@kfs.org>
+#
+# COPYRIGHT
+#   Copyright (C) 1996-2000 Andy Wardley.  All Rights Reserved.
+#   Copyright (C) 1998-2000 Canon Research Centre Europe Ltd.
+#
+#   This module is free software; you can redistribute it and/or
+#   modify it under the same terms as Perl itself.
+#
+#------------------------------------------------------------------------
+#
+# $Id: tpage 1068 2007-04-27 13:33:25Z abw $
+#
+#========================================================================
+
+use strict;
+use Template;
+use AppConfig;
+
+my $NAME     = "tpage";
+my $VERSION  = 2.70;
+my $HOME     = $ENV{ HOME } || '';
+my $RCFILE   = $ENV{"\U${NAME}rc"} || "$HOME/.${NAME}rc";
+my $TTMODULE = 'Template';
+
+# read .tpagerc file and any command line arguments
+my $config   = read_config($RCFILE);
+
+# unshift any perl5lib directories onto front of INC
+unshift(@INC, @{ $config->perl5lib });
+
+# get all template_* options from the config and fold keys to UPPER CASE
+my %ttopts   = $config->varlist('^template_', 1);
+my $ttmodule = delete($ttopts{ module });
+my $ucttopts = {
+    map { my $v = $ttopts{ $_ }; defined $v ? (uc $_, $v) : () }
+    keys %ttopts,
+};
+
+# load custom template module 
+if ($ttmodule) {
+    my $ttpkg = $ttmodule;
+    $ttpkg =~ s[::][/]g;
+    $ttpkg .= '.pm';
+    require $ttpkg;
+}
+else {
+    $ttmodule = $TTMODULE;
+}
+
+# add current directory to INCLUDE_PATH
+unshift(@{ $ucttopts->{ INCLUDE_PATH } }, '.');
+
+# read from STDIN if no files specified
+push(@ARGV, '-') unless @ARGV;
+
+my $template = $ttmodule->new($ucttopts)
+    || die $ttmodule->error();
+
+# process each input file 
+foreach my $file (@ARGV) {
+    $file = \*STDIN if $file eq '-';
+    $template->process($file)
+       || die $template->error();
+}
+
+
+sub read_config {
+    my $file = shift;
+
+    my $config = AppConfig->new(
+        { 
+            ERROR  => sub { die(@_, "\ntry `$NAME --help'\n") }
+        }, 
+        'help|h'      => { ACTION => \&help },
+        'template_absolute|absolute' => { DEFAULT => 1 },
+        'template_relative|relative' => { DEFAULT => 1 },
+        'template_module|module=s',
+        'template_anycase|anycase',
+        'template_eval_perl|eval_perl',
+        'template_load_perl|load_perl',
+        'template_interpolate|interpolate',
+        'template_pre_chomp|pre_chomp|prechomp',
+        'template_post_chomp|post_chomp|postchomp',
+        'template_trim|trim',
+        'template_variables|variables|define=s%',
+        'template_include_path|include_path|include|I=s@',
+        'template_pre_process|pre_process|preprocess=s@',
+        'template_post_process|post_process|postprocess=s@',
+        'template_process|process=s',
+        'template_wrapper|wrapper=s',
+        'template_recursion|recursion',
+        'template_expose_blocks|expose_blocks',
+        'template_default|default=s',
+        'template_error|error=s',
+        'template_debug|debug=s',
+        'template_start_tag|start_tag|starttag=s',
+        'template_end_tag|end_tag|endtag=s',
+        'template_tag_style|tag_style|tagstyle=s',
+        'template_compile_ext|compile_ext=s',
+        'template_compile_dir|compile_dir=s',
+        'template_plugin_base|plugin_base|pluginbase=s@',
+        'perl5lib|perllib=s@'
+    );
+
+    # add the 'file' option now that we have a $config object that we 
+    # can reference in a closure
+    $config->define(
+        'file|f=s@' => { 
+            EXPAND => AppConfig::EXPAND_ALL, 
+            ACTION => sub { 
+                my ($state, $item, $file) = @_;
+                $file = $state->cfg . "/$file" 
+                    unless $file =~ /^[\.\/]|(?:\w:)/;
+                $config->file($file) }  
+        }
+    );
+
+    # process main config file, then command line args
+    $config->file($file) if -f $file;
+    $config->args();
+    return $config;
+}
+
+
+sub help {
+    print<<END_OF_HELP;
+$NAME $VERSION (Template Toolkit version $Template::VERSION)
+
+usage: $NAME [options] [files]
+
+Options:
+   --define var=value       Define template variable
+   --interpolate            Interpolate '\$var' references in text
+   --anycase                Accept directive keywords in any case.
+   --pre_chomp              Chomp leading whitespace 
+   --post_chomp             Chomp trailing whitespace
+   --trim                   Trim blank lines around template blocks
+   --eval_perl              Evaluate [% PERL %] ... [% END %] code blocks
+   --load_perl              Load regular Perl modules via USE directive
+   --absolute               Allow ABSOLUTE directories (enabled by default)
+   --relative               Allow RELATIVE directories (enabled by default)
+   --include_path=DIR       Add directory to INCLUDE_PATH 
+   --pre_process=TEMPLATE   Process TEMPLATE before each main template
+   --post_process=TEMPLATE  Process TEMPLATE after each main template
+   --process=TEMPLATE       Process TEMPLATE instead of main template
+   --wrapper=TEMPLATE       Process TEMPLATE wrapper around main template
+   --default=TEMPLATE       Use TEMPLATE as default
+   --error=TEMPLATE         Use TEMPLATE to handle errors
+   --debug=STRING           Set TT DEBUG option to STRING
+   --start_tag=STRING       STRING defines start of directive tag
+   --end_tag=STRING         STRING defined end of directive tag
+   --tag_style=STYLE        Use pre-defined tag STYLE    
+   --plugin_base=PACKAGE    Base PACKAGE for plugins            
+   --compile_ext=STRING     File extension for compiled template files
+   --compile_dir=DIR        Directory for compiled template files
+   --perl5lib=DIR           Specify additional Perl library directories
+   --template_module=MODULE Specify alternate Template module
+
+See 'perldoc tpage' for further information.  
+
+END_OF_HELP
+
+    exit(0);
+}
+
+__END__
+
+
+#------------------------------------------------------------------------
+# IMPORTANT NOTE
+#   This documentation is generated automatically from source
+#   templates.  Any changes you make here may be lost.
+# 
+#   The 'docsrc' documentation source bundle is available for download
+#   from http://www.template-toolkit.org/docs.html and contains all
+#   the source templates, XML files, scripts, etc., from which the
+#   documentation for the Template Toolkit is built.
+#------------------------------------------------------------------------
+
+=head1 NAME
+
+Template::Tools::tpage - Process templates from command line
+
+=head1 USAGE
+
+    tpage [ --define var=value ] file(s)
+
+=head1 DESCRIPTION
+
+The B<tpage> script is a simple wrapper around the Template Toolkit processor.
+Files specified by name on the command line are processed in turn by the 
+template processor and the resulting output is sent to STDOUT and can be 
+redirected accordingly.  e.g.
+
+    tpage myfile > myfile.out
+    tpage header myfile footer > myfile.html
+
+If no file names are specified on the command line then B<tpage> will read
+STDIN for input.
+
+The C<--define> option can be used to set the values of template variables.
+e.g.
+
+    tpage --define author="Andy Wardley" skeleton.pm > MyModule.pm
+
+See L<Template> for general information about the Perl Template 
+Toolkit and the template language and features.
+
+=head1 AUTHOR
+
+Andy Wardley E<lt>abw@wardley.orgE<gt>
+
+L<http://wardley.org/|http://wardley.org/>
+
+
+
+
+=head1 VERSION
+
+2.68, distributed as part of the
+Template Toolkit version 2.19, released on 27 April 2007.
+
+=head1 COPYRIGHT
+
+  Copyright (C) 1996-2007 Andy Wardley.  All Rights Reserved.
+
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<ttree|Template::Tools::ttree>
+
+=cut
+
+# Local Variables:
+# mode: perl
+# perl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# vim: expandtab shiftwidth=4: