Commit 7e40a6ed authored by Raniere Silva's avatar Raniere Silva
Browse files

Validator should check for required files

parent e0771954
Loading
Loading
Loading
Loading
+48 −10
Original line number Diff line number Diff line
@@ -667,6 +667,45 @@ def command_line():

    return parser.parse_args()

def check_required_files(dir_to_validate):
    """Check if required files exists."""
    REQUIRED_FILES = ["01-*.md",
                      "discussion.md",
                      "index.md",
                      "instructors.md",
                      "LICENSE.md",
                      "motivation.md",
                      "README.md",
                      "reference.md"]
    valid = True

    for required in REQUIRED_FILES:
        req_fn = os.path.join(dir_to_validate, required)
        if not glob.glob(req_fn):
            logging.error(
                "Missing file {0}.".format(required))
            valid = False

    return valid

def get_files_to_validate(file_or_path):
    """Generate list of files to validate."""
    files_to_validate = []
    dir_to_validate = None

    for fn in file_or_path:
        if os.path.isdir(fn):
            search_str = os.path.join(fn, "*.md")
            files_to_validate.extend(glob.glob(search_str))
            dir_to_validate = fn
        elif os.path.isfile(fn):
            files_to_validate.append(fn)
        else:
            logging.error(
                "The specified file or folder {0} does not exist; "
                "could not perform validation".format(fn))

    return files_to_validate, dir_to_validate

def main(parsed_args_obj):
    if parsed_args_obj.debug:
@@ -678,16 +717,15 @@ def main(parsed_args_obj):
    template = parsed_args_obj.template

    all_valid = True
    for fn in parsed_args_obj.file_or_path:
        if os.path.isdir(fn):
            res = validate_folder(fn, template=template)
        elif os.path.isfile(fn):

    files_to_validate, dir_to_validate = get_files_to_validate(parsed_args_obj.file_or_path)

    # If user ask to validate only one file don't check for required files.
    if dir_to_validate:
        all_valid = all_valid and check_required_files(dir_to_validate)

    for fn in files_to_validate:
        res = validate_single(fn, template=template)
        else:
            res = False
            logging.error(
                "The specified file or folder {0} does not exist; "
                "could not perform validation".format(fn))

        all_valid = all_valid and res