Add ARM files
[dh-make-perl] / dev / arm / libmodule-depends-perl / libmodule-depends-perl-0.14 / debian / libmodule-depends-perl / usr / share / perl5 / Module / Depends.pm
diff --git a/dev/arm/libmodule-depends-perl/libmodule-depends-perl-0.14/debian/libmodule-depends-perl/usr/share/perl5/Module/Depends.pm b/dev/arm/libmodule-depends-perl/libmodule-depends-perl-0.14/debian/libmodule-depends-perl/usr/share/perl5/Module/Depends.pm
new file mode 100644 (file)
index 0000000..41807de
--- /dev/null
@@ -0,0 +1,127 @@
+use strict;
+package Module::Depends;
+use YAML qw( LoadFile );
+use Cwd qw( getcwd );
+use base qw( Class::Accessor::Chained );
+__PACKAGE__->mk_accessors(qw( dist_dir debug libs requires build_requires error ));
+our $VERSION = '0.14';
+
+=head1 NAME
+
+Module::Depends - identify the dependencies of a distribution
+
+=head1 SYNOPSIS
+
+ use YAML;
+ use Module::Depends;
+ my $deps = Module::Depends->new->dist_dir( '.' )->find_modules;
+ print "Our dependencies:\n", Dump $deps->requires;
+
+=head1 DESCRIPTION
+
+Module::Depends extracts module dependencies from an unpacked
+distribution tree.
+
+Module::Depends only evaluates the META.yml shipped with a
+distribution.  This won't be effective until all distributions ship
+META.yml files, so we suggest you take your life in your hands and
+look at Module::Depends::Intrusive.
+
+=head1 METHODS
+
+=head2 new
+
+simple constructor
+
+=cut
+
+sub new {
+    my $self = shift;
+
+    return $self->SUPER::new({
+        libs           => [],
+        requires       => {},
+        build_requires => {},
+        error          => '',
+    });
+}
+
+=head2 dist_dir
+
+Path where the distribution has been extracted to.
+
+=head2 find_modules
+
+scan the C<dist_dir> to populate C<libs>, C<requires>, and C<build_requires>
+
+=cut
+
+sub find_modules {
+    my $self = shift;
+
+    my $here = getcwd;
+    unless (chdir $self->dist_dir) {
+        $self->error( "couldn't chdir to " . $self->dist_dir . ": $!" );
+        return $self; 
+    }
+    eval { $self->_find_modules };
+    chdir $here;
+    die $@ if $@;
+    
+    return $self;
+}
+
+sub _find_modules {
+    my $self = shift;
+
+    my $file = 'META.yml';
+    if (-e $file) {
+        my $meta = LoadFile( $file );
+        $self->requires( $meta->{requires} );
+        $self->build_requires( $meta->{build_requires} );
+    }
+    else {
+        $self->error( "No META.yml found in ". $self->dist_dir );
+    }
+    return $self;
+}
+
+
+1;
+__END__
+
+=head2 libs
+
+an array reference of lib lines
+
+=head2 requires
+
+A reference to a hash enumerating the prerequisite modules for this
+distribution.
+
+=head2 build_requires
+
+A reference to a hash enumerating the modules needed to build the
+distribution.
+
+=head2 error
+
+A reason, if any, for failing to get dependencies.
+
+=head1 AUTHOR
+
+Richard Clamp, based on code extracted from the Fotango build system
+originally by James Duncan and Arthur Bergman.
+
+=head1 COPYRIGHT
+
+Copyright 2004, 2007, 2008 Fotango.  All Rights Reserved.
+
+This module is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<Module::Depends::Intrusive>
+
+=cut