add manage.py update_config_documentation
This commit is contained in:
parent
c7bb3c3d0e
commit
4c35340f38
2 changed files with 65 additions and 0 deletions
41
pandora/app/documentation.py
Normal file
41
pandora/app/documentation.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vi:si:et:sw=4:sts=4:ts=4
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import re
|
||||||
|
import ox.jsonc
|
||||||
|
|
||||||
|
|
||||||
|
def get(config_jsonc='config.pandora.jsonc'):
|
||||||
|
with open(config_jsonc, 'rb') as fd:
|
||||||
|
data = fd.read().decode('utf-8')
|
||||||
|
config = ox.jsonc.loads(data)
|
||||||
|
docs = {}
|
||||||
|
for m in re.compile('( \/\*.*?\*\/)\W+"([^\W]+?)":', re.DOTALL).findall(data):
|
||||||
|
docs[m[1]] = m[0].strip()
|
||||||
|
'''
|
||||||
|
for key in config:
|
||||||
|
if key not in docs:
|
||||||
|
print(config_jsonc, 'missing', key)
|
||||||
|
'''
|
||||||
|
for key in docs.keys():
|
||||||
|
if key not in config:
|
||||||
|
print('parse error, invalid config key:', key)
|
||||||
|
del docs[key]
|
||||||
|
return docs
|
||||||
|
|
||||||
|
def update(config_jsonc='config.jsonc', base='config.pandora.jsonc'):
|
||||||
|
with open(config_jsonc, 'rb') as fd:
|
||||||
|
config = data = fd.read().decode('utf-8')
|
||||||
|
docs = get(base)
|
||||||
|
current_docs = get(config_jsonc)
|
||||||
|
for key in docs:
|
||||||
|
if key in current_docs:
|
||||||
|
match = re.escape(' '+docs[key]) + '\W+"' + re.escape(key) + '":'
|
||||||
|
else:
|
||||||
|
match = ' "' + re.escape(key) + '":'
|
||||||
|
data = re.sub(match, ' %s\n "%s":' % (docs[key], key), data)
|
||||||
|
if data != config:
|
||||||
|
print('updating config documentation', config_jsonc)
|
||||||
|
with open('%s' % config_jsonc, 'wb') as fd:
|
||||||
|
fd.write(data.encode('utf-8'))
|
|
@ -0,0 +1,24 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vi:si:et:sw=4:sts=4:ts=4
|
||||||
|
from __future__ import print_function
|
||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
from django.conf import settings
|
||||||
|
from ... import documentation
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
help = 'update config.jsonc documentation'
|
||||||
|
args = '[config.jsonc] [baseconfig.jsonc]'
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
target = settings.SITE_CONFIG
|
||||||
|
base = settings.DEFAULT_CONFIG
|
||||||
|
if len(args) == 1:
|
||||||
|
target = args[0]
|
||||||
|
elif len(args) == 2:
|
||||||
|
target = args[0]
|
||||||
|
base = args[1]
|
||||||
|
print('update docs', target, 'base', base)
|
||||||
|
documentation.update(target, base)
|
Loading…
Reference in a new issue