X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=pm2pl;h=b62a6ef152f7384c5069294ceed089381bf4ad02;hb=7c0d255b169928db839da1118c162ab226bc3161;hp=5c492606e88b13e5dd3cd34519885469f71e0c28;hpb=b2d8cef8551aa63c2718732e53392e7ebdd6c75f;p=perltidy.git diff --git a/pm2pl b/pm2pl index 5c49260..b62a6ef 100755 --- a/pm2pl +++ b/pm2pl @@ -1,38 +1,58 @@ #!/usr/bin/env perl use strict; -# This script will recombine the perltidy binary script and all of its -# modules into a single, monolithic script, which is how it was -# originally distributed. It might be useful for users who have -# difficulty installing modules, or prefer not to. +# This script will recombine the perltidy binary script and all of its modules +# into a single, monolithic script. I use it for making a temporary "sandbox" +# for debugging. + +# This is also useful for making a copy of previous versions for parallel +# debugging sessions. # usage: # perl pm2pl # Run this from the perltidy main installation directory. It reads -# bin/perltidy and lib/*.pm and writes a file 'perltidy' in the +# bin/perltidy and lib/*.pm and writes a file 'perltidy-VERSION.pl' in the # current directory. -# Then, put the file 'perltidy' in your path and it should work (You -# will also need to put the batch file 'perltidy.bat' in your path -# under msdos/windows) - -# For unix systems, a sample Makefile is included as Makefile.npm - # This should work for a system with File::Spec, # and for older Windows/Unix systems without File::Spec. -my $script = 'bin/perltidy'; -my $module = 'lib/Perl/Tidy.pm'; +my $script = 'bin/perltidy'; +my @modules = qw( + lib/Perl/Tidy.pm + lib/Perl/Tidy/Debugger.pm + lib/Perl/Tidy/DevNull.pm + lib/Perl/Tidy/Diagnostics.pm + lib/Perl/Tidy/FileWriter.pm + lib/Perl/Tidy/Formatter.pm + lib/Perl/Tidy/HtmlWriter.pm + lib/Perl/Tidy/IOScalar.pm + lib/Perl/Tidy/IOScalarArray.pm + lib/Perl/Tidy/IndentationItem.pm + lib/Perl/Tidy/LineBuffer.pm + lib/Perl/Tidy/LineSink.pm + lib/Perl/Tidy/LineSource.pm + lib/Perl/Tidy/Logger.pm + lib/Perl/Tidy/Tokenizer.pm + lib/Perl/Tidy/VerticalAligner.pm + lib/Perl/Tidy/VerticalAligner/Alignment.pm + lib/Perl/Tidy/VerticalAligner/Line.pm +); + +# try to make the pathnames system independent eval "use File::Spec;"; my $missing_file_spec = $@; unless ($missing_file_spec) { - $script = File::Spec->catfile( 'bin', 'perltidy' ); - $module = File::Spec->catfile( 'lib', 'Perl', 'Tidy.pm' ); + $script = File::Spec->catfile( split '/', $script ); + foreach my $module (@modules) { + $module = File::Spec->catfile( split '/', $module ); + } } -my $outfile = "perltidy"; +my $VERSION = get_version("lib/Perl/Tidy.pm"); +my $outfile = "perltidy-$VERSION.pl"; open OUTFILE, "> $outfile" or die "can't open file '$outfile' : $!\n"; -print "Creating file '$outfile' ....\n "; +print "Creating standalone formatter script '$outfile' ....\n "; # first, open the script and copy the first (hash-bang) line # (Note: forward slashes in file names here will work in Windows) @@ -40,45 +60,52 @@ open SCRIPT, "< $script" or die "can't open script file '$script' : $!\n"; my $hash_bang =