root/trunk/bin/k2-make-src

Revision 206, 1.3 kB (checked in by ingy, 1 year ago)
 r3749@skinny-2:  ingy | 2007-04-04 18:04:20 +0900
 refo
  • Property svn:executable set to *
Line 
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Cwd qw(abs_path);
6 use lib abs_path('lib');
7 use IO::All;
8 use XXX;
9
10 # Get a list of all dists in system.
11 XXX my @dists = map {
12     $_->name;
13 } grep {
14     -e "$_/lib";
15 } io('src')->All_Dirs;
16
17
18 # For each dist, find all modules in dist
19 # For each module:
20 #   Extract doc into src/docs
21 #   Extract files into src/
22 #   Extract a template version of the module into src/lib
23 #   Create a src/Makefile to rebuild modules
24 #   Link all src files into the base/ tree
25 #   Report all collisions
26
27 __END__
28
29 @ARGV == 1 or die usage();
30 my $dist_path = shift;
31 $dist_path =~ s/\/*$//;
32 my $lib = io("$dist_path/lib");
33 $lib->is_dir or die usage();
34 my @modules = grep {$_->name =~ /\.pm$/} $lib->All_Files;
35
36 my $dist = io->dir("$dist_path/src")->assert->chdir;
37
38 for my $module (@modules) {
39     my $module_name = $module->name;
40     $module_name =~ s/.*\/lib\/(.*)\.pm$/$1/ or die $module_name;
41     $module_name =~ s/\//::/g;
42     print ">> $module_name\n";
43     eval "require $module_name";
44     die $@ if $@ and $@ !~ /HTTP\/BrowserDetect/;
45     next unless $module_name->can('get_packed_files_from_classes');
46     my $instance = $module_name->new;
47     $instance->extract_files;
48 }
49
50 sub usage {
51     <<'...';
52 usage: k2-make-src module-path
53
54 examples:
55     k2-make-src src/plugins/ingy/Kwiki-BreadCrumbs
56 ...
57 }
Note: See TracBrowser for help on using the browser.