`autohelp update` can create the flags file

If the flagmappings file doesn't exist the function will create it,
with all the sections set to Unknown. This mimics the behavior of the
`create`, not needed anymore.

Change-Id: I7a920300b784aa8fca6412c292d807beb4d5c8e5
This commit is contained in:
Gauvain Pocentek 2016-01-08 09:01:27 +01:00
parent 69c7c929c7
commit e3c42a269d
4 changed files with 21 additions and 48 deletions

View File

@ -51,16 +51,6 @@ names as arguments:
$ ./autohelp-wrapper rst cinder heat
Creating mappings for a new project
-----------------------------------
Run the wrapper with the create subcommand:
.. code-block:: console
$ ./autohelp-wrapper create zaqar
Flagmappings files
------------------

View File

@ -29,11 +29,10 @@ FAST=0
usage() {
echo "Wrapper for autohelp.py"
echo "Usage:"
echo " $(basename $0) [ OPTIONS ] create|update|docbook|rst|setup [ project1 ... ]"
echo " $(basename $0) [ OPTIONS ] update|docbook|rst|setup [ project1 ... ]"
echo
echo "Subcommands:"
echo " create: Create an initial flagmapping file"
echo " update: Update the flagmapping files"
echo " update: Update or create the flagmapping files"
echo " docbook: Generate the options tables in docbook format"
echo " rst: Generate the options tables in RST format"
echo " setup: Install the environment only"
@ -140,7 +139,7 @@ ACTION=$1
shift
case $ACTION in
create|update|docbook|rst|setup) ;;
update|docbook|rst|setup) ;;
*)
usage
exit 1
@ -230,15 +229,6 @@ for project in $PROJECTS; do
cd $MANUALSREPO/tools/autogenerate-config-flagmappings
case $ACTION in
create)
[ "$project" = "swift" ] && continue
file=$MANUALSREPO/tools/autogenerate-config-flagmappings/$project.flagmappings
if [ -e $file ]; then
echo "$project.flagmappings already exists, ignoring."
continue
fi
$AUTOHELP create $project -i $SOURCESDIR/$project/$project $AUTOOPT
;;
update)
[ "$project" = "swift" ] && continue
$AUTOHELP update $project -i $SOURCESDIR/$project/$project $extra_flags $AUTOOPT

View File

@ -459,17 +459,6 @@ def write_files(package_name, options, target, output_format):
fd.write(output)
def create_flagmappings(package_name, options, verbose=0):
"""Create a flagmappings file.
Create a flagmappings file. This will create a new file called
$package_name.flagmappings with all the categories set to Unknown.
"""
with open(package_name + '.flagmappings', 'w') as f:
for opt in options.get_option_names():
f.write(opt + ' Unknown\n')
def update_flagmappings(package_name, options, verbose=0):
"""Update flagmappings file.
@ -478,14 +467,18 @@ def update_flagmappings(package_name, options, verbose=0):
category information merged from the existing $package_name.flagmappings.
"""
original_flags = {}
with open(package_name + '.flagmappings') as f:
for line in f:
try:
flag, category = line.split(' ', 1)
except ValueError:
flag = line.strip()
category = "Unknown"
original_flags.setdefault(flag, []).append(category.strip())
try:
with open(package_name + '.flagmappings') as f:
for line in f:
try:
flag, category = line.split(' ', 1)
except ValueError:
flag = line.strip()
category = "Unknown"
original_flags.setdefault(flag, []).append(category.strip())
except IOError:
# If the flags file doesn't exist we'll create it
pass
updated_flags = []
for opt in options.get_option_names():
@ -519,8 +512,8 @@ def main():
description='Manage flag files, to aid in updating documentation.',
usage='%(prog)s <cmd> <package> [options]')
parser.add_argument('subcommand',
help='Action (create, update, verify, dump).',
choices=['create', 'update', 'docbook', 'rst', 'dump'])
help='Action (update, docbook, rst, dump).',
choices=['update', 'docbook', 'rst', 'dump'])
parser.add_argument('package',
help='Name of the top-level package.')
parser.add_argument('-v', '--verbose',
@ -572,10 +565,7 @@ def main():
print("%s options imported from package %s." % (len(options),
str(package_name)))
if args.subcommand == 'create':
create_flagmappings(args.package, options, verbose=args.verbose)
elif args.subcommand == 'update':
if args.subcommand == 'update':
update_flagmappings(args.package, options, verbose=args.verbose)
elif args.subcommand in ('docbook', 'rst'):

View File

@ -0,0 +1,3 @@
---
other:
- ``autohelp.py update`` will create the flagmappings file if it doesn't exist yet.