diff --git a/bin/lesson_check.py b/bin/lesson_check.py index ef69f5e..c123984 100755 --- a/bin/lesson_check.py +++ b/bin/lesson_check.py @@ -8,7 +8,6 @@ import os import glob import json -import yaml import re from optparse import OptionParser @@ -131,8 +130,7 @@ def check_config(reporter, source_dir): """Check configuration file.""" config_file = os.path.join(source_dir, '_config.yml') - with open(config_file, 'r') as reader: - config = yaml.load(reader) + config = load_yaml(config_file) reporter.check_field(config_file, 'configuration', config, 'kind', 'lesson') diff --git a/bin/util.py b/bin/util.py index 975560b..6af0a33 100644 --- a/bin/util.py +++ b/bin/util.py @@ -1,8 +1,12 @@ import sys import json -import yaml from subprocess import Popen, PIPE +try: + import yaml +except ImportError: + print('Unable to import YAML module: please install PyYAML', file=sys.stderr) + sys.exit(1) class Reporter(object): """Collect and report errors.""" @@ -106,3 +110,13 @@ def split_metadata(path, text): sys.exit(1) return metadata_raw, metadata_yaml, text + + +def load_yaml(filename): + """ + Wrapper around YAML loading so that 'import yaml' and error + handling is only needed in one place. + """ + + with open(filename, 'r') as reader: + return yaml.load(reader) diff --git a/bin/workshop_check.py b/bin/workshop_check.py index 3b6f6f2..d018b78 100755 --- a/bin/workshop_check.py +++ b/bin/workshop_check.py @@ -7,7 +7,6 @@ import sys import os import re -import yaml from datetime import date from util import Reporter, split_metadata @@ -373,13 +372,19 @@ def check_config(reporter, filename): Check YAML configuration file. """ - with open(filename, 'r') as reader: - config = yaml.load(reader) + config = load_yaml(filename) - reporter.check(config['kind'] == 'workshop', + kind = config.get('kind', None) + reporter.check(kind == 'workshop', filename, - 'Not configured as a workshop: found "{0}" instead', - config['kind']) + 'Missing or unknown kind of event: {0}', + kind) + + carpentry = config.get('carpentry', None) + reporter.check(carpentry in ('swc', 'dc'), + filename, + 'Missing or unknown carpentry: {0}', + carpentry) def main():