1 package CatalystX::HelpText::Script::SearchUndocumentedHelpText;
4 use MooseX::Types::Path::Class qw/ Dir /;
5 use MooseX::Types::Moose qw/Str Undef/;
8 use Getopt::Long::Descriptive; # Force GLD as we override bits..
9 use MooseX::Types::LoadableClass qw/ LoadableClass /;
11 use Capture::Tiny qw/capture/;
12 use namespace::autoclean;
14 has help_files_path => (
24 has template_search_dir => (
30 has filename_pattern => (
33 default => '\.(html|tt)$',
36 has help_files_ext => (
44 my $file_vs_keys = {};
45 my $undocumented_keys = {};
46 foreach my $fn ($self->find_files->flatten) {
47 $file_vs_keys->{$fn} = $self->find_helptext_keys($fn);
48 foreach my $key ($file_vs_keys->{$fn}->flatten) {
49 unless ($self->is_there_helptext_file_for_key($key)) {
50 $undocumented_keys->{$key} = 1;
54 $self->print_result([ keys %$undocumented_keys ], $file_vs_keys);
59 my $filename_pattern = $self->filename_pattern;
64 my $filename = $File::Find::name;
65 return unless -f $filename;
66 return unless $filename =~ /$filename_pattern/;
67 push @files, $filename;
70 }, $self->template_search_dir->flatten);
74 sub find_helptext_keys {
76 my $dir = $self->template_search_dir;
78 my $t = Template->new({
79 INCLUDE_PATH => [ $self->template_search_dir ],
82 my ($stdout, $stderr) = capture {
83 $t->process($fn, { help_text => sub { push @keys, shift } });
88 sub is_there_helptext_file_for_key {
89 my ($self, $key) = @_;
90 my $file = $self->_get_file($key);
91 $file .= "." . $self->help_files_ext if defined($self->help_files_ext);
96 my ($self, $undocumented_keys, $file_vs_keys) = @_;
97 if (scalar @$undocumented_keys) {
98 print "Undocumented help text keys: \n";
99 print " - $_" for ($undocumented_keys->flatten);
107 __PACKAGE__->meta->make_immutable;
108 __PACKAGE__->new_with_options->run unless caller;
114 CatalystX::HelpText::Script::SearchUndocumentedHelpText
118 search_undocumented_templates.pl
124 =item L<CatalystX::HelpText>
130 Toomas Doran, C<< t0m at state51.co.uk >>
132 Cinxgler Mariaca Minda, C<< cinxgler at ci-info.com >>
136 Copyright Oscar Music and Media 2011.
140 This sofware is free software, and is licensed under the same terms as perl itself.