import re
from optparse import OptionParser
-from util import Reporter, read_markdown, load_yaml
+from util import Reporter, read_markdown, load_yaml, check_unwanted_files, require, IMAGE_FILE_SUFFIX
__version__ = '0.2'
check_config(args.reporter, args.source_dir)
docs = read_all_markdown(args.source_dir, args.parser)
check_fileset(args.source_dir, args.reporter, docs.keys())
+ check_unwanted_files(args.source_dir, args.reporter)
for filename in docs.keys():
checker = create_checker(args, filename, docs[filename])
checker.check()
config_file = os.path.join(source_dir, '_config.yml')
config = load_yaml(config_file)
reporter.check_field(config_file, 'configuration', config, 'kind', 'lesson')
+ reporter.check_field(config_file, 'configuration', config, 'carpentry', ('swc', 'dc'))
+ reporter.check_field(config_file, 'configuration', config, 'title')
+ reporter.check_field(config_file, 'configuration', config, 'email')
+ reporter.check_field(config_file, 'configuration', config, 'repo')
+ reporter.check_field(config_file, 'configuration', config, 'root')
+ if ('repo' in config) and ('root' in config):
+ reporter.check(config['repo'].endswith(config['root']),
+ config_file,
+ 'Repository name "{0}" not consistent with root "{1}"',
+ config['repo'], config['root'])
def read_all_markdown(source_dir, parser):
'File not found')
return
- # Get actual files.
+ # Get actual image files (ignore non-image files).
fig_dir_path = os.path.join(source_dir, 'fig')
- actual = [f for f in os.listdir(fig_dir_path) if not f.startswith('.')]
+ actual = [f for f in os.listdir(fig_dir_path) if os.path.splitext(f)[1] in IMAGE_FILE_SUFFIX]
# Report differences.
unexpected = set(actual) - set(referenced)
return cls(args, filename, **info)
-def require(condition, message):
- """Fail if condition not met."""
-
- if not condition:
- print(message, file=sys.stderr)
- sys.exit(1)
-
-
class CheckBase(object):
"""Base class for checking Markdown files."""