File: mkconf

package info (click to toggle)
plum 2.33.1-9
  • links: PTS
  • area: main
  • in suites: sarge, woody
  • size: 908 kB
  • ctags: 128
  • sloc: perl: 4,442; makefile: 51
file content (88 lines) | stat: -rwxr-xr-x 1,939 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/perl -w
# $Id: mkconf,v 2.10 1998/11/11 05:47:03 hasegawa Exp $
# copyright (c)1997-1998 Yoshinori Hasegawa <hasegawa@madoka.org>

&main(@ARGV);

sub main {
  local(@args) = @_;
  local($dir);
  if (!@args) {
    &usage();
    exit(1);
  }
  $dir = shift(@args);
  &property("$dir/plum", 'plum');
  print "\n";
  &traverse("$dir/module", '');
}

sub traverse {
  local($base, $dir) = @_;
  local(@files, $file, $prop);
  opendir(DIR, "$base/$dir") || die;
  @files = readdir(DIR);
  closedir(DIR);
  foreach $file (sort(@files)) {
    next if $file =~ /^\./;
    next if $file eq 'SCCS';
    next if $file eq 'RCS';
    next if $file eq 'CVS';
    next if $file =~ /\,v$/;
    if (-d "$base/$dir/$file") {
      if ($dir) {
        &traverse($base, "$dir/$file");
      } else {
        &traverse($base, $file);
      }
    } elsif ($file =~ /\.plm/) {
      $prop = "$dir.$`";
      $prop =~ tr/\//\./;
      if ($dir) {
        print "- $dir/$file\n";
        &property("$base/$dir/$file", $prop);
      } else {
        print "- $file\n";
        &property("$base/$file", $prop);
      }
      print "\n";
    }
  }
}

sub property {
  local($file, $prop) = @_;
  local(@prog, @doc);
  @prog = ();
  @doc = ();
  if (open(FILE, $file)) {
    while (defined($line = <FILE>)) {
      $line =~ tr/\r\n//d;
      while ($line =~ /\&\'property\(.*\,\s*\'([^\']*)\'\)/) {
        push(@prog, "# $prop.$1: ");
        $line = $';
      }
      last if $line eq '__END__';
    }
    while (defined($line = <FILE>)) {
      $line =~ tr/\r\n//d;
      if ($line =~ /^\s*\<DT\>\s+([\w\.]+)/) {
        push(@doc, "# $1: ");
      }
    }
    close(FILE);
  }
  foreach $doc (@doc) {
    print $doc, "\n";
    @prog = grep($_ ne $doc, @prog);
  }
  $last = '';
  foreach $prog (sort(@prog)) {
    print '# ', $prog, "\n" if $prog ne $last;
    $last = $prog;
  }
}

sub usage {
  print 'usage: perl mkconf <plum-top-directory>', "\n";
}