pelican/plugin_paths.py (18 lines of code) (raw):

#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # vim: encoding=utf-8 # # 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 # # https://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. # """ Append a path to PLUGIN_PATHS and generate the appropriate JSON output for use with the -e/--extra-settings pelican CLI override flag USAGE: $ plugin_paths.py path-to-add [PELICAN-CONFIGURATION-FILE] If the file is not specified, "pelicanconf.py" is used (read from the current working directory. """ import sys import json DEFAULT_PELCONF = 'pelicanconf.py' # in current dir def main(): """ Parse the file and generate the JSON output """ path = sys.argv[1] # path to append if len(sys.argv) > 2: file = sys.argv[2] # the file to parse else: file = DEFAULT_PELCONF with open(file, 'r', encoding='utf-8') as infile: contents = infile.read() # This will contain the "globals" after executing the peliconconf.py. # Note: allow all builtins (by virtue of NOT inserting a __builtins__ # value into this dictionary. We have no concerns about builtin usage. values = { } # Run the pelicanconf.py code into VALUES. We do not want to import # this as a module, as we're only going for the variable values. exec(contents, values) # pylint: disable=exec-used plugdir = values.get('PLUGIN_PATHS', []) plugdir.append(path) print(f"PLUGIN_PATHS={json.dumps(plugdir)}") if __name__ == '__main__': main()