This is an automated email from the ASF dual-hosted git repository. snagel pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nutch.git
The following commit(s) were added to refs/heads/master by this push: new a20c261 NUTCH-2784 Tool to list Nutch properties and configured values new 2d534d6 Merge pull request #518 from sebastian-nagel/NUTCH-2784-tool-listing-properties a20c261 is described below commit a20c2613c944a8e845632fcc81384abac5dcdf85 Author: Sebastian Nagel <sna...@apache.org> AuthorDate: Wed Mar 25 18:53:34 2020 +0100 NUTCH-2784 Tool to list Nutch properties and configured values --- src/bin/nutch | 3 + .../org/apache/nutch/tools/ShowProperties.java | 72 ++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/src/bin/nutch b/src/bin/nutch index 2b3d2a0..a51a432 100755 --- a/src/bin/nutch +++ b/src/bin/nutch @@ -96,6 +96,7 @@ if [ $# = 0 ]; then echo " updatehostdb update the host db with records from the crawl db" echo " readhostdb read / dump host db" echo " sitemap perform Sitemap processing" + echo " showproperties print Nutch/Hadoop configuration properties to stdout" echo " or" echo " CLASSNAME run the class named CLASSNAME" echo "Most commands print help when invoked w/o parameters." @@ -304,6 +305,8 @@ elif [ "$COMMAND" = "readhostdb" ] ; then CLASS=org.apache.nutch.hostdb.ReadHostDb elif [ "$COMMAND" = "sitemap" ] ; then CLASS=org.apache.nutch.util.SitemapProcessor +elif [ "$COMMAND" = "showproperties" ] ; then + CLASS=org.apache.nutch.tools.ShowProperties else CLASS=$COMMAND fi diff --git a/src/java/org/apache/nutch/tools/ShowProperties.java b/src/java/org/apache/nutch/tools/ShowProperties.java new file mode 100644 index 0000000..d7058d6 --- /dev/null +++ b/src/java/org/apache/nutch/tools/ShowProperties.java @@ -0,0 +1,72 @@ +/** + * 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. + */ +package org.apache.nutch.tools; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map.Entry; + +import org.apache.nutch.util.NutchConfiguration; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +/** + * Tool to list properties and their values set by the current Nutch + * configuration + */ +public class ShowProperties extends Configured implements Tool { + + private String format3cols = "%-32s %24s %20s"; + + @Override + public int run(String[] arg0) { + Configuration conf = getConf(); + List<Entry<String, String>> list = new ArrayList<>(); + conf.iterator().forEachRemaining(list::add); + Collections.sort(list, (a, b) -> a.getKey().compareTo(b.getKey())); + System.out.println( + String.format(format3cols, "conf.name", "conf.value", "substituted.value")); + System.out.println( + "================================================================================"); + for (Entry<String, String> e : list) { + String key = e.getKey(); + String val = e.getValue(); + String substitutedVal = conf.get(key); + if (val.equals(substitutedVal)) { + String format = String.format("%%-%ds %%%ds", key.length(), + (80 - 2 - key.length())); + System.out.println(String.format(format, key, val)); + } else { + String format = String.format("%%-%ds %%%ds %%18s", key.length(), + (60 - 2 - key.length())); + System.out + .println(String.format(format, key, val, substitutedVal)); + } + } + return 0; + } + + public static void main(String[] args) throws Exception { + System.exit(ToolRunner.run(NutchConfiguration.create(), + new ShowProperties(), args)); + } + +}