chiark / gitweb /
air-hockey-puck: wip
[reprap-play.git] / toplevel-find
1 #!/usr/bin/perl -w
2 use strict;
3 use IO::File;
4
5 @ARGV==1 or die;
6 my $base = $ARGV[0];
7 $base =~ m/^\-/ and die;
8
9 sub read_file ($);
10 sub read_file ($) {
11   my ($fn) = @_;
12   my $f = new IO::File "$fn", '<' or die "$fn $!";
13   while (<$f>) {
14     if (m#^//// toplevels-from:#) {
15       defined($_ = <$f>) or die $!;
16       m#^include\s+\<(\S+)>\s*$# or die;
17       read_file($1);
18       next;
19     }
20     next unless m#^\s*(?:////\s?)?module\s+(\w+)\b.*////toplevel\b#;
21     print "$base,$1\n" or die $!;
22   }
23   $f->error and die "$fn $!";
24 }
25
26 read_file("$base.scad");
27 close STDOUT or die $!;
28