diff --git a/Directory/Simplify/FileHash.pm b/Directory/Simplify/FileHash.pm index 1e8db4f..54a0eb8 100644 --- a/Directory/Simplify/FileHash.pm +++ b/Directory/Simplify/FileHash.pm @@ -8,9 +8,9 @@ Object for abstracting management of a hashed filesystem =cut -# :squash-ignore-start: +# :squash-remove-start: require Directory::Simplify::File; -# :squash-ignore-end: +# :squash-remove-end: sub new { my $class = shift; diff --git a/Directory/Simplify/Instruction/CopyTimestamp.pm b/Directory/Simplify/Instruction/CopyTimestamp.pm index 491a4f4..fba95c9 100644 --- a/Directory/Simplify/Instruction/CopyTimestamp.pm +++ b/Directory/Simplify/Instruction/CopyTimestamp.pm @@ -4,9 +4,9 @@ use strict; use warnings; use overload '""' => 'as_string'; -# :squash-ignore-start: +# :squash-remove-start: require Directory::Simplify::Utils; -# :squash-ignore-end: +# :squash-remove-end: sub new { my $class = shift; diff --git a/Directory/Simplify/Instruction/Generator.pm b/Directory/Simplify/Instruction/Generator.pm index 3567d05..d2bab1b 100644 --- a/Directory/Simplify/Instruction/Generator.pm +++ b/Directory/Simplify/Instruction/Generator.pm @@ -6,10 +6,10 @@ use overload '""' => 'as_string'; use File::Basename qw/ dirname /; use File::Compare qw/ compare /; -# :squash-ignore-start: +# :squash-remove-start: require Directory::Simplify::Instruction::CopyTimestamp; require Directory::Simplify::Instruction::Hardlink; -# :squash-ignore-end: +# :squash-remove-end: sub new { my $class = shift; diff --git a/Directory/Simplify/Instruction/Hardlink.pm b/Directory/Simplify/Instruction/Hardlink.pm index 9a7e7c0..24d274e 100644 --- a/Directory/Simplify/Instruction/Hardlink.pm +++ b/Directory/Simplify/Instruction/Hardlink.pm @@ -4,9 +4,9 @@ use strict; use warnings; use overload '""' => 'as_string'; -# :squash-ignore-start: +# :squash-remove-start: require Directory::Simplify::Utils; -# :squash-ignore-end: +# :squash-remove-end: sub new { my $class = shift; diff --git a/simplify_static_dir-main.pl b/simplify_static_dir-main.pl index e69e39a..6e1522d 100755 --- a/simplify_static_dir-main.pl +++ b/simplify_static_dir-main.pl @@ -104,7 +104,7 @@ use File::Find qw/ find /; use Getopt::Std qw/ getopts /; use Pod::Usage qw/ pod2usage /; -# :squash-ignore-start: +# :squash-remove-start: # (this prepends to the load path) use FindBin qw//; use lib $FindBin::RealBin; @@ -113,7 +113,7 @@ require Directory::Simplify::File; require Directory::Simplify::FileHash; require Directory::Simplify::Instruction::Generator; require Directory::Simplify::Utils; -# :squash-ignore-end: +# :squash-remove-end: sub HELP_MESSAGE { my $fh = shift; diff --git a/util/squash b/util/squash index 3403c19..f46e2f8 100755 --- a/util/squash +++ b/util/squash @@ -18,17 +18,35 @@ for my $arg (@ARGV) { warn "Reading $filename\n"; open my $fh, '<', $filename or die "Can't open $filename: $!"; my $in_pod = 0; - my $in_ignore_section = 0; + my $in_section = ''; + my $ignore_lines = 0; while (<$fh>) { if (/#.*:squash-ignore-start:$/) { - $in_ignore_section = 1; - next; + $in_section = 'ignore'; + $ignore_lines = 1; } elsif (/#.*:squash-ignore-end:$/) { - $in_ignore_section = 0; + $in_section = ''; + $ignore_lines = 1; + } + if ($ignore_lines > 0) { + $ignore_lines--; next; } - next if $in_ignore_section; - next if /#.*:squash-ignore-line:$/; + + if ($in_section eq 'ignore') { + $code .= $_; + next; + } + + if (/#.*:squash-remove-start:$/) { + $in_section = 'remove'; + next; + } elsif (/#.*:squash-remove-end:$/) { + $in_section = ''; + next; + } + next if $in_section eq 'remove'; + next if /#.*:squash-remove-line:$/; next if /^\s*1;$/; @@ -49,6 +67,10 @@ for my $arg (@ARGV) { s{\s*##.+critic.*}{}; $code .= $_; } + + # Warn if there were unterminated :squash-*: sections + warn "$filename: Unterminated :squash-$in_section-start: section" if $in_section; + close $fh; }