App-CSE
view release on metacpan or search on metacpan
lib/App/CSE/Command/Index.pm view on Meta::CPAN
my $SIZE_LOOKEDAT = 0;
my $TOTAL_SIZE = 0;
my $wanted = sub{
my ($file_name, $stat) = @_;
unless( -d $file_name.'' ){
$SIZE_LOOKEDAT += $stat->size();
$PROGRESS_BAR->update($SIZE_LOOKEDAT);
}
my $mime_type = $cse->valid_mime_type($file_name);
unless( $mime_type ){
return;
}
my $file_class = App::CSE::File->class_for_mime($mime_type, $file_name.'');
unless( $file_class ){
return;
}
## Build a file instance.
my $file = $file_class->new({cse => $cse,
mime_type => $mime_type,
stat => $stat,
file_path => $file_name.'' })->effective_object();
$LOGGER->debug("Indexing ".$file->file_path().' as '.$file->mime_type());
my $content = $file->content();
$indexer->add_doc({
path => $file->file_path(),
'path.raw' => $file->file_path(),
decl => join(' ', @{$file->decl()}),
call => join(' ', @{$file->call()}),
dir => $file->dir(),
mime => $file->mime_type(),
mtime => $file->mtime->iso8601(),
$content ? ( content => $content ) : ()
});
$NUM_INDEXED++;
$TOTAL_SIZE+= $file->stat->size();
};
File::Find::find({ wanted => &$wanted_wrapper($wanted),
no_chdir => 1,
follow => 0,
}, $dir_index );
$indexer->commit();
$PROGRESS_BAR->update($ESTIMATED_SIZE);
rmtree $cse->index_dir()->stringify();
rename $index_dir , $self->cse->index_dir()->stringify();
$self->cse->index_meta->{index_time} = DateTime->now()->iso8601();
# Also inject the right version
$self->cse->index_meta->{version} = $self->cse->version();;
$self->cse->save_index_meta();
my $END_TIME = Time::HiRes::time();
$LOGGER->info($self->cse->colorizer->colored("Index is ".$self->cse()->index_dir()->stringify(), 'green bold'));
$LOGGER->info("$NUM_INDEXED files ($TOTAL_SIZE Bytes) indexed in ".sprintf('%.03f', ( $END_TIME - $START_TIME )).' seconds');
return 0;
}
__PACKAGE__->meta->make_immutable();
=head1 NAME
App::CSE::Command::Index - Indexes a directory
=cut
( run in 0.663 second using v1.01-cache-2.11-cpan-39bf76dae61 )