| #!/usr/bin/perl |
| # |
| # This script can be used to fix up paths that were moved as a result |
| # of the structural changes committed as part of SOLR-2452. |
| # |
| # Input is on STDIN, output is to STDOUT |
| # |
| # Example use: |
| # |
| # perl SOLR-2452.patch.hack.pl <my.pre-SOLR-2452.patch >my.post-SOLR-2452.patch |
| # |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| use strict; |
| use warnings; |
| |
| my @moves = ( |
| 'solr/contrib/analysis-extras/src/test-files/solr-analysis-extras' |
| => 'solr/contrib/analysis-extras/src/test-files/analysis-extras/solr', |
| |
| 'solr/contrib/analysis-extras/src/test-files' |
| => 'solr/contrib/analysis-extras/src/test-files/analysis-extras', |
| |
| 'solr/contrib/clustering/src/test/java' |
| => 'solr/contrib/clustering/src/test', |
| |
| 'solr/contrib/clustering/src/test/resources/solr-clustering' |
| => 'solr/contrib/clustering/src/test-files/clustering/solr', |
| |
| 'solr/contrib/clustering/src/test/resources' |
| => 'solr/contrib/clustering/src/test-files/clustering', |
| |
| 'solr/contrib/clustering/src/main/java' |
| => 'solr/contrib/clustering/src/java', |
| |
| 'solr/contrib/dataimporthandler/src/test/java' |
| => 'solr/contrib/dataimporthandler/src/test', |
| |
| 'solr/contrib/dataimporthandler/src/test/resources/solr-dih' |
| => 'solr/contrib/dataimporthandler/src/test-files/dih/solr', |
| |
| 'solr/contrib/dataimporthandler/src/test/resources' |
| => 'solr/contrib/dataimporthandler/src/test-files/dih', |
| |
| 'solr/contrib/dataimporthandler/src/main/java' |
| => 'solr/contrib/dataimporthandler/src/java', |
| |
| 'solr/contrib/dataimporthandler/src/main/webapp' |
| => 'solr/contrib/dataimporthandler/src/webapp', |
| |
| 'solr/contrib/dataimporthandler/src/extras/test/java' |
| => 'solr/contrib/dataimporthandler-extras/src/test', |
| |
| 'solr/contrib/dataimporthandler/src/extras/test/resources/solr-dihextras' |
| => 'solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr', |
| |
| 'solr/contrib/dataimporthandler/src/extras/test/resources' |
| => 'solr/contrib/dataimporthandler-extras/src/test-files/dihextras', |
| |
| 'solr/contrib/dataimporthandler/src/extras/main/java' |
| => 'solr/contrib/dataimporthandler-extras/src/java', |
| |
| 'solr/contrib/extraction/src/test/java' |
| => 'solr/contrib/extraction/src/test', |
| |
| 'solr/contrib/extraction/src/test/resources/solr-extraction' |
| => 'solr/contrib/extraction/src/test-files/extraction/solr', |
| |
| 'solr/contrib/extraction/src/test/resources' |
| => 'solr/contrib/extraction/src/test-files/extraction', |
| |
| 'solr/contrib/extraction/src/main/java' |
| => 'solr/contrib/extraction/src/java', |
| |
| 'solr/src/test-files/books.csv' |
| => 'solr/solrj/src/test-files/solrj/books.csv', |
| |
| 'solr/src/test-files/sampleDateFacetResponse.xml' |
| => 'solr/solrj/src/test-files/solrj/sampleDateFacetResponse.xml', |
| |
| 'solr/src/test-files/solr/shared' |
| => 'solr/solrj/src/test-files/solrj/solr/shared', |
| |
| 'solr/src/solrj' |
| => 'solr/solrj/src/java', |
| |
| 'solr/src/common' |
| => 'solr/solrj/src/java', |
| |
| 'solr/src/test/org/apache/solr/common' |
| => 'solr/solrj/src/test/org/apache/solr/common', |
| |
| 'solr/src/test/org/apache/solr/client/solrj/SolrJettyTestBase.java' |
| => 'solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java', |
| |
| 'solr/src/test/org/apache/solr/client/solrj' |
| => 'solr/solrj/src/test/org/apache/solr/client/solrj', |
| |
| 'solr/src/test-framework' |
| => 'solr/test-framework/src/java', |
| |
| 'solr/src/test/org/apache/solr/util/ExternalPaths.java' |
| => 'solr/test-framework/src/java/org/apache/solr/util/ExternalPaths.java', |
| |
| 'solr/src/java' |
| => 'solr/core/src/java', |
| |
| 'solr/src/test' |
| => 'solr/core/src/test', |
| |
| 'solr/src/test-files' |
| => 'solr/core/src/test-files', |
| |
| 'solr/src/webapp/src' |
| => 'solr/core/src/java', |
| |
| 'solr/src/webapp/web' |
| => 'solr/webapp/web', |
| |
| 'solr/src/scripts' |
| => 'solr/scripts', |
| |
| 'solr/src/dev-tools' |
| => 'solr/dev-tools', |
| |
| 'solr/src/site' |
| => 'solr/site-src', |
| |
| 'dev-tools/maven/solr/src/pom.xml.template' |
| => 'dev-tools/maven/solr/core/pom.xml.template', |
| |
| 'dev-tools/maven/solr/src/test-framework/pom.xml.template' |
| => 'dev-tools/maven/solr/test-framework/pom.xml.template', |
| |
| 'dev-tools/maven/solr/src/solrj/pom.xml.template' |
| => 'dev-tools/maven/solr/solrj/pom.xml.template', |
| |
| 'dev-tools/maven/solr/src/webapp/pom.xml.template' |
| => 'dev-tools/maven/solr/webapp/pom.xml.template', |
| ); |
| |
| my @copies = ( |
| 'solr/core/src/test-files/README' |
| => 'solr/solrj/src/test-files/solrj/README', |
| |
| 'solr/core/src/test-files/solr/crazy-path-to-schema.xml' |
| => 'solr/solrj/src/test-files/solrj/solr/crazy-path-to-schema.xml', |
| |
| 'solr/core/src/test-files/solr/conf/schema.xml' |
| => 'solr/solrj/src/test-files/solrj/solr/conf/schema.xml', |
| |
| 'solr/core/src/test-files/solr/conf/schema-replication1.xml' |
| => 'solr/solrj/src/test-files/solrj/solr/conf/schema-replication1.xml', |
| |
| 'solr/core/src/test-files/solr/conf/solrconfig-slave1.xml' |
| => 'solr/solrj/src/test-files/solrj/solr/conf/solrconfig-slave1.xml', |
| ); |
| |
| my $diff; |
| |
| while (<>) { |
| if (/^Index/) { |
| my $next_diff = $_; |
| &fixup_paths if ($diff); |
| $diff = $next_diff; |
| } else { |
| $diff .= $_; |
| } |
| } |
| |
| &fixup_paths; # Handle the final diff |
| |
| sub fixup_paths { |
| for (my $move_pos = 0 ; $move_pos < $#moves ; $move_pos += 2) { |
| my $source = $moves[$move_pos]; |
| my $target = $moves[$move_pos + 1]; |
| if ($diff =~ /^Index: \Q$source\E/) { |
| $diff =~ s/^Index: \Q$source\E/Index: $target/; |
| $diff =~ s/\n--- \Q$source\E/\n--- $target/; |
| $diff =~ s/\n\+\+\+ \Q$source\E/\n+++ $target/; |
| $diff =~ s/\nProperty changes on: \Q$source\E/\nProperty changes on: $target/; |
| last; |
| } |
| } |
| print $diff; |
| |
| for (my $copy_pos = 0 ; $copy_pos < $#copies ; $copy_pos += 2) { |
| my $source = $copies[$copy_pos]; |
| my $target = $copies[$copy_pos + 1]; |
| if ($diff =~ /^Index: \Q$source\E/) { |
| my $new_diff = $diff; |
| $new_diff =~ s/^Index: \Q$source\E/Index: $target/; |
| $new_diff =~ s/\n--- \Q$source\E/\n--- $target/; |
| $new_diff =~ s/\n\+\+\+ \Q$source\E/\n+++ $target/; |
| $new_diff =~ s/\nProperty changes on: \Q$source\E/\nProperty changes on: $target/; |
| print $new_diff; |
| last; |
| } |
| } |
| } |