#!@PERL@ # Copyright (C) 2005 Stanislav Sinyagin # # 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 2 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. # $Id: ttproclist.in,v 1.1 2010-12-27 00:04:03 ivan Exp $ # Stanislav Sinyagin use strict; use Template; use Getopt::Long; my $template; my $outfile; my $nodelist; my $parameters; my $creator = "Torrus version @VERSION@\n" . "This file was generated by command:\n" . $0 . " \\\n"; foreach my $arg ( @ARGV ) { if( $arg =~ /^--/ ) { $creator .= ' ' . $arg . ' '; } else { $creator .= "\'" . $arg . "\'\\\n"; } } $creator .= "\nOn " . scalar(localtime(time)); my $ok = GetOptions( 'tmpl=s' => \$template, 'out=s' => \$outfile, 'nodes=s' => \$nodelist, 'param=s' => \$parameters ); if( not $ok or not $template or not $outfile or not $nodelist) { print STDERR "Process a template with a nodelist\n\n"; print STDERR "Usage: $0 options...\n", "Mandatory options:\n", " --tmpl=filename template file name\n", " --out=filename output file\n", " --nodes=filename file with nodes\n", "Options:\n", " --param=NAME:VALUE,NAME:VALUE... parameters passed to template\n"; exit 1; } my @rawnodes; if( not open( NODES, $nodelist ) ) { print STDERR "Cannot open $nodelist: $!\n"; exit 1; } while() { s/^\s+//; s/\s+$//; push( @rawnodes, split( /\s+/ ) ); } close( NODES ); my %nodes; foreach my $node ( @rawnodes ) { my $symname = $node; if( $node =~ /([^:]+):(.+)/ ) { $node = $1; $symname = $2; } $nodes{$node} = $symname; } my %params; if( defined( $parameters ) ) { foreach my $pair ( split( '\s*,\s*', $parameters ) ) { my ($name, $val) = split( '\s*:\s*', $pair ); $params{$name} = $val; } } my $tt = new Template( INCLUDE_PATH => '@tmpluserdir@', ABSOLUTE => 1, RELATIVE => 1, TRIM => 1 ); my $vars = { 'nodes' => \%nodes, 'param' => \%params, 'nodesfile' => $nodelist, 'creator' => $creator, 'lc' => sub{ return lc $_[0] }, 'uc' => sub{ return uc $_[0] } }; my $result = $tt->process($template, $vars, $outfile); if( not $result ) { print STDERR "Error while processing template: ".$tt->error()."\n"; } exit( $result ? 0:1 ); # Local Variables: # mode: perl # indent-tabs-mode: nil # perl-indent-level: 4 # End: