diff --git a/docs/settings.rst b/docs/settings.rst index e09a90dc..9c73dc04 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -21,6 +21,12 @@ Settings are configured in the form of a Python module (a file). There is an `_ available for reference. +To see a list of current settings in your environment, including both default +and any customized values, run the following command (append a specific +setting name as an argument to see the value for that one setting):: + + pelican --print-settings + All the setting identifiers must be set in all-caps, otherwise they will not be processed. Setting values that are numbers (5, 20, etc.), booleans (True, False, None, etc.), dictionaries, or tuples should *not* be enclosed in @@ -28,10 +34,9 @@ quotation marks. All other values (i.e., strings) *must* be enclosed in quotation marks. Unless otherwise specified, settings that refer to paths can be either absolute -or relative to the configuration file. - -The settings you define in the configuration file will be passed to the -templates, which allows you to use your settings to add site-wide content. +or relative to the configuration file. The settings you define in the +configuration file will be passed to the templates, which allows you to use your +settings to add site-wide content. Here is a list of settings for Pelican: diff --git a/pelican/__init__.py b/pelican/__init__.py index c00bc591..0339681b 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -11,6 +11,7 @@ import re import sys import time import traceback +from pprint import pprint import six @@ -319,6 +320,12 @@ def parse_arguments(): help='Relaunch pelican each time a modification occurs' ' on the content files.') + parser.add_argument('--print-settings', dest='print_settings', + action='append', nargs='?', metavar='SETTING_NAME', + help='Print current configuration settings and exit. ' + 'Append a setting name as argument to see the value ' + 'for that specific setting only.') + parser.add_argument('--relative-urls', dest='relative_paths', action='store_true', help='Use relative urls in output, ' @@ -527,6 +534,21 @@ def main(): try: pelican, settings = get_instance(args) + + if args.print_settings: + # If no argument was given to --print-settings, print all settings + if args.print_settings[0] is None: + pprint(settings) + # An argument was given to --print-settings, so print that setting + else: + try: + pprint(settings[args.print_settings[0]]) + except KeyError: + print("{} is not a recognized setting.".format( + args.print_settings[0])) + return 1 + return 0 + readers = Readers(settings) reader_descs = sorted(set(['%s (%s)' % (type(r).__name__,