return checksum_dict


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('config_file', nargs='?', type=str, 
                        default='', help="Configuration file.")
    args = parser.parse_args()

    header = """
        # This file was produced by make_file_checksums.py and is used by the
        # test_*_checksums.py unit tests. Don't modify it by hand!
        #
        """

    config = shared.get_configuration(args.config_file, check_input=True, check_output=True)
    md5_path = config['paths']['md5_path']
    obs_path = config['paths']['OBS_ROOT_DIR']
    model_path = config['paths']['MODEL_ROOT_DIR']
    out_path = config['paths']['OUTPUT_DIR']

    case_list = shared.get_test_data_configuration()

    print 'Hashing input observational data'
    checksum_dict = checksum_in_subtree_1(obs_path, case_list['pods'])
    with open(os.path.join(md5_path, 'checksum_obs_data.yml'), 'w') as file_obj:
        file_obj.write(textwrap.dedent(header))
        yaml.dump(checksum_dict, file_obj)

    print 'Hashing input model data'
    checksum_dict = checksum_in_subtree_1(model_path, case_list['models'])
    else:
        import subprocess
from src.util import write_yaml
import shared_test_utils as shared

DOING_TRAVIS = (os.environ.get('TRAVIS', False) == 'true')
DOING_MDTF_DATA_TESTS = ('--data_tests' in sys.argv)
DOING_SETUP = DOING_MDTF_DATA_TESTS and not DOING_TRAVIS
# All this is a workaround because tests are programmatically generated at
# import time, but the tests are skipped at runtime. We're skipping tests
# because we're not in an environment where we have the data to set them up,
# so we just throw everything in an if-block to ensure they don't get generated
# if they're going to be skipped later.

if DOING_SETUP:
    config = shared.get_configuration('', check_input=True)
    out_path = config['paths']['OUTPUT_DIR']

    case_list = shared.get_test_data_configuration()

    # write temp configuration, one for each POD
    temp_config = config.copy()
    temp_config['pod_list'] = []
    temp_config['settings']['make_variab_tar'] = False
    temp_config['settings']['test_mode'] = True

    pod_configs = shared.configure_pods(case_list,
                                        config_to_insert=temp_config)
    for pod in case_list['pods']:
        write_yaml(pod_configs[pod], os.path.join(out_path, pod + '_temp.yml'))