4 # version of "supporting" engine, not mudela conversions.
7 $convert_mudela_version = "0.1";
13 sub version_string_conv
15 my ($from_version, $to_version) = @_;
16 s/\version \"0.0.$from_version\"/\version \"0.0.$to_version\"/g;
19 ################################################################
25 sub convert_0_0_52_to_0_0_53
28 s/include \"/$1\\include \"/g;
32 sub convert_0_0_54_to_0_0_55
38 sub convert_0_0_53_to_0_0_54
40 print STDERR "Not smart enough to convert \\transpose\n" if (/\\transpose/) ;
43 # we-re not at 58 yet, but this is at least one of the rules
44 sub convert_0_0_55_to_0_0_56
49 ###############################################################
59 print STDERR "This is convert-mudela " . $convert_mudela_version .
60 " (up to mudela version 0.0.", last_conversion, ")\n";
66 print STDERR "Usage: convert-mudela [options] [mudela-file]...\n"
67 . "Convert old mudela source from mudela-file or stdin\n\n"
69 . " -e, --edit perform in-place conversion\n"
70 . " -f, --from=PATHLEVEL use source version 0.0.PATCHLEVEL\n"
71 . " -h, --help print this help\n"
72 . " -o, --output=FILE name output file\n"
73 . " -s, --show-rules print all known conversion rules\n"
74 . " -t, --to=PATCHLEVEL convert to version 0.0.PATCHLEVEL\n"
77 # beware of the year 2000
78 my %minor_conversions = (50 => \&no_conv,
79 52 => \&convert_0_0_50_to_0_0_52,
80 53 => \&convert_0_0_52_to_0_0_53,
81 54 => \&convert_0_0_53_to_0_0_54,
82 55 => \&convert_0_0_54_to_0_0_55,
83 56 => \&convert_0_0_55_to_0_0_56
89 return (sort keys %minor_conversions);
95 print "Rules: ", join(", ", sort keys %minor_conversions), "\n";
103 my @applicable_conversion;
106 die "This is too old to convert " if $from < 50;
109 if ($a > $from && $a <= $to ){
110 push @applicable_conversion, $minor_conversions{$a};
111 push @mudela_levels, $a;
115 print STDERR "Applying following rules: ", join(", ", @mudela_levels) , "\n";
118 foreach $subroutine (@applicable_conversion) {
123 version_string_conv $from, $to;
132 open INLY, $fn || die "Can't open";
135 s/^.*\\version \"([^\"]*)\".*$//;
137 print STDERR "Guessing version: ", $1, ".. ";
143 print STDERR "can't determine mudela version in $fn.\n";
156 $outfile = $opt_output if (defined($opt_output));
161 if (( ! -f $infile) && (! $infile =~ /\\.ly$/s ) ){
166 if ($opt_edit && $infile ne "-") {
168 $outfile = "$infile.NEW";
171 print STDERR "Input ", (($infile eq "-") ?"STDIN" : $infile), " .. ";
179 local ($from_version, $to_version);
180 $from_version = $opt_from;
181 $to_version = $opt_to;
183 ($from_version = get_auto_from $infile) unless defined($opt_from);
184 return if (!defined($from_version));
186 ($to_version = last_conversion) unless (defined($opt_to));
189 die "can't open \`$infile\'" unless open INLY,$infile ;
190 die "can't open \`$outfile\'" unless open OUTLY, ">$outfile";
192 do_conversion $from_version, $to_version;
197 rename $infile, "$infile~";
198 rename $outfile, "$infile";
206 GetOptions ("help", "output=s", "from=i", "to=i", "minor=i", "edit", "show-rules");
210 $opt_help = 0; # to extinguish typo check.
214 if ($opt_show_rules) {
216 $opt_show_rules = 0; # to extinguish typo check.
220 local ( $infile,$outfile);
223 while (defined($ARGV[0])) {
228 do_one_arg unless ($processed_one);