#!/usr/bin/env python

"""gulp2_sanity_check

Usage:
    gulp2_sanity_check <gulp_directory>

Arguments:
    gulp_directory      Directory where the Gulp-Files are located

"""

from docopt import docopt

from gulpio2.fileio import GulpDirectory
from gulpio2.sanity_utils import (check_meta_file_size_larger_zero,
                                 check_data_file_size_larger_zero,
                                 check_data_file_size,
                                 check_for_duplicate_ids,
                                 check_for_failures,
                                 )


###############################################################################
#                           Execute Tests                                     #
###############################################################################

def run_tests(gulp_directory):
    for test in TESTS:
        test["failures"] = test["check"](gulp_directory)
        check_for_failures(test)


###############################################################################
#                            Define Tests                                     #
###############################################################################

TESTS = [{"message": "Check for empty meta files",
          "check": check_meta_file_size_larger_zero},
         {"message": "Check for empty data files",
          "check": check_data_file_size_larger_zero},
         {"message": "Check data file size equals size in meta file",
          "check": check_data_file_size},
         {"message": "Check presence of duplicate ids",
          "check": check_for_duplicate_ids},
         ]

if __name__ == '__main__':
    arguments = docopt(__doc__)
    results = []
    gulp_directory = GulpDirectory(arguments['<gulp_directory>'])
    results = run_tests(gulp_directory)
