root/honeyclient/tags/exp/DOWN2-mbriggs-db/create_pkg_makefile.pl

Revision 13, 1.5 kB (checked in by kindlund, 2 years ago)

Initialized public repository with 0.9 release.

Line 
1 #!/usr/bin/perl
2 # Remember to add $name to this, or else it will not work
3 use warnings;
4 use strict;
5
6 use File::Spec 0.82;
7 use lib File::Spec->catdir('lib');
8 use lib File::Spec->catdir('t','lib');
9 use File::Find;
10
11 my %requires;
12 my $package;
13 my $name = $ARGV[0];
14 open(FILE,'>Makefile.PL');
15
16 sub process{
17     if( /\.pm$/ ){
18         open TEMP, "<", $_;
19         foreach (grep( /^use /, <TEMP> )){
20             my @elements = split;
21             my $name = $elements[1];
22             unless( $name =~ /strict|warnings|\d\.\d+|$package/ ){
23                 $name =~ s/;//;
24                 my $version =
25                     (/(\b[\d\.]+)\b/) &&
26                     (!defined($requires{$name}) ||
27                      $requires{$name} == 0) ?   
28                     "$1":0;   
29                 $requires{$name} = $version;
30             }
31         }
32     }
33 }
34
35 sub get_dependencies{
36     $package = shift;
37     find(\&process,'lib');
38     foreach( sort keys %requires){
39         printf FILE "requires\t%s => %s;\n",$_,$requires{$_};
40     }
41 }
42
43 my @name = split(/-/,$name);
44
45 print   FILE "# Load the Module::Install bundled in ./inc/\n";
46 printf  FILE "%s;\n\n","use inc::Module::Install";
47 print   FILE "# Define metadata\n";
48 printf  FILE "%s\t\t'%s';\n","name",join("-",@name);
49 print   FILE "license\t\t'gpl';\n";
50 print   FILE "perl_version\t'5.006';\n";
51
52
53 my $file = 'lib/'.join("/",@name).'.pm';
54 if( -f $file ){
55     printf  FILE "%s\t\t'%s';\n","all_from",'lib/'.join("/",@name).'.pm';
56 }else{
57     print   FILE "version\t\t'0.01';\n";
58 }
59 print   FILE "clean_files\t't/';\n";
60 print   FILE "\n";
61 get_dependencies(join("::",@name));
62 print   FILE "\n";
63 print   FILE "auto_install;\n";
64 print   FILE "WriteAll;\n";
65
Note: See TracBrowser for help on using the browser.