Source

shlomi-fish-homepage / bin / find-deps.pl

#!/usr/bin/perl

use strict;
use warnings;

use File::Find::Object;

my $ff = File::Find::Object->new({}, "t2");

my @deps;
while (defined(my $result = $ff->next_obj()))
{
    if (   $result->is_dir()
        && @{$result->dir_components()}
        && $result->dir_components()->[-1] eq ".svn"
       )
    {
        $ff->prune();
    }
    elsif ((! $result->is_dir()) && $result->basename() =~ m{\.wml\z})
    {
        open my $in, "<", $result->path()
            or die "Cannot open " . $result->path() . "$!";
        while (my $line = <$in>)
        {
            my $string = qq{#include "../lib/};
            if ($line =~ s{\A\Q$string\E}{})
            {
                $line =~ s{".*}{}ms;
                push @deps, { file => $result->path(), dep => $line };
            }
        }
        close($in);
    }
}

open my $deps_mak, ">", "deps.mak";
print {$deps_mak} "# Extra dependencies\n\n";
foreach my $dep (@deps)
{
    my $file = $dep->{'file'};
    my $depends_on = $dep->{'dep'};
    $file =~ s{\At2/}{};
    $file =~ s{\.wml\z}{};

    print {$deps_mak} qq{\$(T2_DEST)/$file :  lib/$depends_on\n\n},
}
close($deps_mak);
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.