openstack-doc-tools/autogenerate-config-docs/autohelp.py

87 lines
2.9 KiB
Python
Executable File

#!/usr/bin/env python
# Licensed 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.
#
# A collection of tools for working with flags from OpenStack
# packages and documentation.
#
# For an example of usage, run this program with the -h switch.
#
# Must import this before argparse
import oslo.config # NOQA
import argparse
import sys
import common # NOQA
# this is for the internationalisation function in gettext
import __builtin__
__builtin__.__dict__['_'] = lambda x: x
def main():
parser = argparse.ArgumentParser(
description='Manage flag files, to aid in updating documentation.',
usage='%(prog)s <cmd> <package> [options]')
parser.add_argument('subcommand',
help='action (create, update, verify) [REQUIRED]',
choices=['create', 'update', 'docbook'])
parser.add_argument('package',
help='name of the top-level package')
parser.add_argument('-v', '--verbose',
action='count',
default=0,
dest='verbose',
required=False,)
parser.add_argument('-i', '--input',
dest='repo',
help='path to valid git repository [REQUIRED]',
required=True,
type=str,)
args = parser.parse_args()
package_name = common.git_check(args.repo)
sys.path.insert(0, args.repo)
try:
__import__(package_name)
except ImportError as e:
if args.verbose >= 1:
print(str(e))
print("Failed to import: %s (%s)" % (package_name, e))
modules = common.import_modules(args.repo, package_name,
verbose=args.verbose)
options = common.OptionsCache(modules, verbose=args.verbose)
if args.verbose > 0:
print("%s options imported from package %s." % (len(options),
str(package_name)))
if args.subcommand == 'create':
common.create_flagmappings(package_name, options, verbose=args.verbose)
return
if args.subcommand == 'update':
common.update_flagmappings(package_name, options, verbose=args.verbose)
return
if args.subcommand == 'docbook':
common.write_docbook(package_name, options, verbose=args.verbose)
return
if __name__ == "__main__":
main()