Files
epics-base/src/tools/expandVars.pl
2014-09-25 16:24:23 -05:00

72 lines
1.5 KiB
Perl

#!/usr/bin/env perl
#
# Tool to expand @VAR@ variables while copying a file.
# The file will *not* be copied if it already exists.
#
# Author: Andrew Johnson <anj@aps.anl.gov>
# Date: 10 February 2005
#
# $Revision-Id$
#
use strict;
use FindBin qw($Bin);
use lib ("$Bin/../../lib/perl", $Bin);
use EPICS::Getopts;
use EPICS::Path;
use EPICS::Release;
use EPICS::Copy;
# Process command line options
our ($opt_a, $opt_d, @opt_D, $opt_h, $opt_t);
getopts('a:dD@ht:')
or &HELP_MESSAGE;
# Handle the -h command
&HELP_MESSAGE if $opt_h;
die "Path to TOP not set, use -t option\n"
unless $opt_t;
# Check filename arguments
my $infile = shift
or die "No input filename argument\n";
my $outfile = shift
or die "No output filename argument\n";
# Where are we?
my $top = AbsPath($opt_t);
print "TOP = $top\n" if $opt_d;
# Read RELEASE file into vars
my %vars = (TOP => $top);
my @apps = ('TOP');
readReleaseFiles("$top/configure/RELEASE", \%vars, \@apps, $opt_a);
expandRelease(\%vars);
$vars{'ARCH'} = $opt_a if $opt_a;
while ($_ = shift @opt_D) {
m/^ (\w+) \s* = \s* (.*) $/x;
$vars{$1} = $2;
print "$1 = $2\n" if $opt_d;
}
# Do it!
copyFile($infile, $outfile, \%vars);
##### File contains subroutines only below here
sub HELP_MESSAGE {
print STDERR <<EOF;
Usage:
expandVars.pl -h
Display this Usage message
expandVars.pl -t /path/to/top [-a arch] -D var=val ... infile outfile
Expand vars in infile to generate outfile
EOF
exit $opt_h ? 0 : 1;
}