#!/usr/bin/env bash
# vim: ts=4 sw=4 et
export MIN_BYTES=512
annex find --format='${key} ${file}\n' --include '*' "$@" |
perl -E '
    sub fmt_key {
        my ($key) = @_;
        #return "\e[m$key\e[m";
        return (-t STDOUT) ? "\e[38;5;208m$key\e[m" : "$key";
    }
    sub fmt_path {
        my ($path) = @_;
        my ($head, $tail) = ($path =~ m!^(.+)/(.+?)$!);
        $head //= ".";
        $tail //= $path;
        return (-t STDOUT) ? "$head/\e[2m$tail\e[m" : "$head/$tail";
    }
    my $min = int($ENV{MIN_BYTES} // "0");
    my %keys;
    while (<>) {
        chomp;
        my ($key, $file) = split(/ /, $_, 2);
        next if $min && ($key =~ /-s(\d+)--/) && ($1 < $min);
        push @{$keys{$key}}, $file;
    }
    for my $key (sort {$keys{$a}[0] cmp $keys{$b}[0]} keys %keys) {
        my @files = @{$keys{$key}};
        if (@files > 1) {
            print fmt_key($key), "\n";
            print "  ", fmt_path($_), "\n" for sort @files;
            print "\n";
        }
    }
'
