File: dir-test.pl

package info (click to toggle)
libvcs-perl 0.14-3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 264 kB
  • ctags: 282
  • sloc: perl: 1,083; makefile: 567
file content (52 lines) | stat: -rwxr-xr-x 910 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/perl

use FindBin;
use lib "$FindBin::Bin/../";
use VCS;
use Getopt::Long;
use File::Basename;

my $opt_recurse = 0;
GetOptions('recurse' => \$opt_recurse);

my $dir = $ARGV[0] || die <<EOF;
Usage: $0 dir
    or $0 -recurse dir
EOF

$dir =~ s#/*$##;
chdir dirname $dir;
$dir = basename $dir;

show($dir, 0);

sub show {
    my($dir, $depth) = @_;
#warn "show: $dir, $depth\n";
    my $d = VCS::Dir->new($dir);
    unless (defined $d) {
        print "Not a VCS::Dir: $dir\n";
        return;
    }
#warn "got: $d\n";
    disp($d, $depth);
    foreach my $x ($d->content) {
        if ($opt_recurse && (ref($x) =~ /::Dir$/)) {
            show($x->path, $depth+1);
        } else {
            disp($x, $depth+1);
        }
    }
}

sub disp {
    my ($obj, $depth) = @_;
#warn "HERE\n";
    print
        "\t" x $depth,
        $obj->path,
        "\t",
        ref($obj),
        "\n",
        ;
}