Subversion Repositories DevTools

Rev

Rev 5710 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#! perl
########################################################################
# COPYRIGHT - VIX IP PTY LTD ("VIX"). ALL RIGHTS RESERVED.
#
# Module name   : jats.sh
# Module type   : Makefile system
# Compiler(s)   : n/a
# Environment(s): jats
#
# Description   : Get package dependancies and sub-dependancies
#                 for a package name and version as specified on the
#                 command line.
#
#                 No formatting of the output
#
# Usage:
#
# Version   Who      Date        Description
#
#......................................................................#

require 5.006_001;
use strict;
use warnings;
#use Data::Dumper;
use Cwd;
use DeployUtils::RmPkgInfo;
my  %Package;


my $ONLY_DISPLAY_ONCE = 1;
my $DISPLAY_SUB_DEPEND = 1;

#
#   Determine root package
#
unless ( $ARGV[0] && $ARGV[1] )
{
    print "Specify a package as 'name' 'version'\n";
    exit;
}

#
#   Test the RM Interface
#
GetDepends (0, $ARGV[0], $ARGV[1] );

#-------------------------------------------------------------------------------
# Function        : GetDepends
#
# Description     :
#
# Inputs          : pkg_name
#                   pkg_ver
#
# Returns         :
#
sub GetDepends
{
    my ($level, $pkg_name, $pkg_ver ) = @_;

#    return
#        if ( defined($Package{$pkg_name}) );

    displayName( $level, $pkg_name, $pkg_ver );
    return if ( !$DISPLAY_SUB_DEPEND && $level > 0 );
    
    my $pkgInfo = $Package{$pkg_name}{$pkg_ver};
    unless ( defined $pkgInfo )
    {
        $pkgInfo = DeployUtils::RmPkgInfo->new( { PKG_NAME => $pkg_name , PKG_VERSION => $pkg_ver } );
        $Package{$pkg_name}{$pkg_ver} = $pkgInfo;
        if ( ! $pkgInfo->foundDetails() )
        {
            print "PACKAGE DETAILS NOT FOUND: $pkg_name $pkg_ver\n";
        }
    }
    else
    {
        return if ( $ONLY_DISPLAY_ONCE );
    }

    foreach my $depName ( $pkgInfo->getDependencyNames() )
    {
        my $depPkg = $pkgInfo->getDependencyObject($depName);
        my $depVer = $depPkg->pkg_version();

#        next if ( exists( $Package{$depName}{$depVer} ) );

#        print ' ' x ($level * 4), "Depends: Name $depName $depVer, \n";
        GetDepends( $level + 1, $depName, $depVer );

    }
}

sub displayName
{
    my ($level, $name, $ver ) = @_;
    if ( $ONLY_DISPLAY_ONCE )
    {
        print  "Package $name $ver\n" unless $Package{$name};
    }
    else
    {
        print  ' ' x ($level * 4), "Package $name $ver\n";
    }

}


#-------------------------------------------------------------------------------
# Function        : StorePackage
#
# Description     : Store Package information
#
# Inputs          : $pkg_name
#                   $pkg_ver
#                   $pkg_info
#
# Returns         :
#



#DebugDumpData("PackageData2", \$pkgInfo );