#!/usr/bin/perl -w
use lib '.';
use Getopt::Long;
use P4::Modules;
($CLIENT, $ROOT, $MODULES, $EXTRAS) = ('', '', '', '');
($OPTIONS, $BRANCH, $file) = ('rmdir', 'main', '');
my $help = 0;
(my $cmd = $0) =~ s/.*\///;
sub usage {
print <<_EOF_;
Usage: $cmd -f file configfile
$cmd -b branch -c client -e 'extra' -f file -m 'modules' -o 'options' -r root
$cmd -h
-b branch the default branch to use (def. $BRANCH)
-c client create/update this client (no default)
-e extra one extra client view mapping (no default)
-f file the modules file to use (def. system installed)
-h show usage
-m modules modules to map from the perforce depots (def. all of them)
-o options perforce client options (def. $OPTIONS)
-r root perforce client root directory (no default)
_EOF_
exit $_[0] || 0;
}
usage(0) unless @ARGV;
GetOptions('branch=s' => \$BRANCH,
'client=s' => \$CLIENT,
'extra=s' => \$EXTRAS,
'file=s' => \$file,
'help' => \$help,
'modules=s' => \$MODULES,
'options=s' => \$OPTIONS,
'root=s' => \$ROOT) || usage(1);
usage(0) if $help;
my $config = shift;
require $config if $config;
my $mod = P4::Modules->new($file);
my %map = $mod->client($BRANCH, $MODULES, $CLIENT);
$client_spec = <<_EOF_;
Client: $CLIENT
Description:
Automatically generated client
OPTIONS: $OPTIONS
BRANCH: $BRANCH
MODULES: $MODULES
Root: $ROOT
Options: $OPTIONS
View:
_EOF_
$client_spec .= join("\n", map { "\t$_ $map{$_}" } keys %map) . "\n";
$client_spec .= join("\n", map { "\t$_" } split /\n+/, $EXTRAS) . "\n";
print "$client_spec";