Skip to content
Snippets Groups Projects
Commit 8c113148 authored by Steven Chew's avatar Steven Chew
Browse files

rm python3 build.py

parent 20adaa7c
No related branches found
No related tags found
No related merge requests found
Pipeline #161902 passed
# Build script for machine-friendly eval rules
import yaml
import glob
import codecs
from io import StringIO
import json
import os
import traceback
import sys
#import importlib
#importlib.reload(sys)
#sys.setdefaultencoding('utf8')
SOURCE_DIR = os.path.join(os.getcwd(), 'src')
JSON_DIR = os.path.join(os.getcwd(), 'json')
GITBOOK_DIR = os.path.join(os.getcwd(), 'gitbook')
SOURCE_FILES = glob.glob(os.path.join(SOURCE_DIR, '*.yaml'))
def UTFWriter():
buffer = StringIO()
wrapper = codecs.getwriter("utf8")(buffer)
wrapper.buffer = buffer
return wrapper
def read_yaml(yaml_src):
""" Read a yamls file """
print('Reading %s' % yaml_src)
yaml_file = open(yaml_src, 'r')
yaml_data = yaml.load(yaml_file.read(), Loader=yaml.Loader)
yaml_file.close()
return yaml_data
def make_task(task):
""" Create a Markdown fragment for a task """
task_md = UTFWriter()
print('## %s\n' % task['name'], file=task_md)
print(task['description'], file=task_md)
print('### Learning outcomes\n', file=task_md)
for task_outcome in task['outcomes']:
print('* %s' % task_outcome, file=task_md)
print('\n### Have you?\n', file=task_md)
for task_checklist in task['checklist']:
print('* %s' % task_checklist, file=task_md)
return task_md.buffer.getvalue()
def make_book_page(unit_data):
""" Create a Markdown version of a unit """
md_buffer = UTFWriter()
print('# %s\n' % unit_data['unit'], file=md_buffer)
for task in unit_data['tasks']:
print(make_task(task), file=md_buffer)
print('## FAQ\n', file=md_buffer)
print(unit_data['faq'], file=md_buffer)
return md_buffer.buffer.getvalue()
if __name__ == '__main__':
if len(sys.argv) < 2:
print('Usage: build.py [command]\n')
print('Available commands')
print(' test: Check if file syntax is ok')
print(' json: Export rules to nueval-app json')
print(' gitbook: Build markdown pages from YAML source\n\n')
sys.exit(-1)
BUILD_CMD = sys.argv[1]
for source in SOURCE_FILES:
if BUILD_CMD == 'test':
try:
read_yaml(source)
print('Syntax OK')
except Exception as ex:
print('Syntax Error')
traceback.print_exc()
elif BUILD_CMD == 'json':
if not os.path.exists(JSON_DIR):
os.makedirs(JSON_DIR)
try:
data = read_yaml(source)
jsonFile = os.path.basename(source).replace('.yaml', '.json')
jsonData = json.dumps(data, separators=(',', ':'), indent=4)
tmp_file = codecs.open(
os.path.join(JSON_DIR, jsonFile), 'w', encoding='utf-8')
tmp_file.write(jsonData)
tmp_file.close()
except Exception as ex:
print('Syntax Error')
traceback.print_exc()
elif BUILD_CMD == 'gitbook':
if not os.path.exists(GITBOOK_DIR):
os.makedirs(GITBOOK_DIR)
try:
data = read_yaml(source)
md_file = os.path.basename(source).replace('.yaml', '.md')
md_data = make_book_page(data)
tmp_file = codecs.open(
os.path.join(GITBOOK_DIR, md_file), 'w', encoding='utf-8')
tmp_file.write(md_data)
tmp_file.close()
except Exception as ex:
traceback.print_exc()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment