office-gobmx/solenv/bin/mkout.pl
Rüdiger Timm c753404001 INTEGRATION: CWS buildstatushtml2 (1.4.292); FILE MERGED
2005/11/07 12:58:09 vg 1.4.292.2: RESYNC: (1.4-1.5); FILE MERGED
2005/09/16 13:31:03 vg 1.4.292.1: #125903#
2005-12-14 11:06:34 +00:00

172 lines
4.2 KiB
Perl
Executable file

:
eval 'exec perl -wS $0 ${1+"$@"}'
if 0;
#*************************************************************************
#
# OpenOffice.org - a multi-platform office productivity suite
#
# $RCSfile: mkout.pl,v $
#
# $Revision: 1.6 $
#
# last change: $Author: rt $ $Date: 2005-12-14 12:06:34 $
#
# The Contents of this file are made available subject to
# the terms of GNU Lesser General Public License Version 2.1.
#
#
# GNU Lesser General Public License Version 2.1
# =============================================
# Copyright 2005 by Sun Microsystems, Inc.
# 901 San Antonio Road, Palo Alto, CA 94303, USA
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 2.1, as published by the Free Software Foundation.
#
# This library 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
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
#*************************************************************************
#
# mkout.pl - create output tree
#
use Cwd;
use Getopt::Std;
use File::Path;
#### script id #####
( $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
$id_str = ' $Revision: 1.6 $ ';
$id_str =~ /Revision:\s+(\S+)\s+\$/
? ($script_rev = $1) : ($script_rev = "-");
print "$script_name -- version: $script_rev\n";
#### globals ####
$is_debug = 0;
$base_dir = 0; # path to module base directory
$dir_mode = 0755; # default directory creation mode
$envpath = 0; # platform/product combination
$opt_r = 0; # create 'remote' subdirs
%sub_dirs = (
# dirname remote(yes/no)
'bin' => 1,
'class' => 0,
'inc' => 0,
'lib' => 1,
'misc/logs' => 1,
'obj' => 1,
'res' => 1,
'slb' => 1,
'slo' => 1,
'srs' => 1
);
#### main ####
parse_options();
init_globals();
create_dirs();
exit(0);
#### subroutines #####
sub parse_options {
my $rc;
$rc = getopts('r');
if ( !$rc || $#ARGV > 0 ) {
usage();
exit(1);
}
$envpath = $ARGV[0] if defined($ARGV[0]);
}
sub init_globals {
my $umask;
$base_dir = get_base();
print "Base_Diri=$base_dir\n" if $is_debug;
$umask = umask();
if ( defined($umask) ) {
$dir_mode = 0777 - $umask;
}
$envpath = $ENV{INPATH} unless $envpath;
if ( !$envpath ) {
print_error("can't determine platform/environment");
exit(3);
}
print "Platform/Environment: $envpath\n" if $is_debug;
}
sub get_base {
# a module base dir contains a subdir 'prj'
# which in turn contains a file 'd.lst'
my (@field, $base, $dlst);
my $path = cwd();
print $path;
@field = split(/\//, $path);
while ( $#field != -1 ) {
$base = join('/', @field);
$dlst = $base . '/prj/d.lst';
last if -e $dlst;
pop @field;
}
if ( $#field == -1 ) {
print_error("can't determine module");
exit(2);
}
else {
return $base;
}
}
sub create_dirs {
foreach $dir ( keys %sub_dirs ) {
$path = $base_dir . '/' . $envpath . '/' . $dir;
if ( $opt_r && $sub_dirs{$dir} ) {
$path .= "/remote";
}
eval { mkpath($path, 0, $dir_mode) };
if ( $@ ) {
print_error( "$@" );
}
print "Create path: $path\n" if $is_debug;
}
}
sub print_error {
my $message = shift;
print STDERR "$script_name: ERROR: $message\n";
}
sub usage {
print STDERR "Usage:\n$script_name [-r] [platform/environment]\n";
print STDERR "Options:\n -r create 'remote' directories\n";
}
# vim: set ts=4 shiftwidth=4 expandtab syntax=perl: