Пример #1
0
def make_group_workflow_map(group_name, base_dir=None):
    group_workflow_map = {}
    workflow_group_dir = get_workflow_group_dir(group_name, base_dir)
    for project_dir in workflow_group_dir.iterdir():
        workflow_project_map = make_project_workflow_map(
            group_name, project_dir.name, base_dir)
        no_clobber_update(group_workflow_map, workflow_project_map)
    return group_workflow_map
Пример #2
0
def combine_yaml_files_into_dict(file_path, *file_paths):
    # make a 'master map' that contains all file
    combined_dict = {}
    with file_path.open('r') as f:
        no_clobber_update(combined_dict, safe_load(f))
    for file in file_paths:
        with file.open('r') as f:
            no_clobber_update(combined_dict, safe_load(f))
    return combined_dict
Пример #3
0
def make_project_workflow_map(group_name, project_name, base_dir=None):
    workflow_project_map = {}
    workflow_project_dir = get_workflow_project_dir(group_name, project_name,
                                                    base_dir)
    for version_dir in workflow_project_dir.iterdir():
        version_map = make_workflow_map(group_name, project_name,
                                        version_dir.name, base_dir)
        no_clobber_update(workflow_project_map, version_map)
    return workflow_project_map
Пример #4
0
def make_group_script_map(group_name, base_dir=None):
    group_script_map = {}
    script_group_dir = get_script_group_dir(group_name, base_dir=base_dir)
    for project_dir in script_group_dir.iterdir():
        script_project_map = make_project_script_map(group_name,
                                                     project_dir.name,
                                                     base_dir=base_dir)
        no_clobber_update(group_script_map, script_project_map)
    return group_script_map
Пример #5
0
def make_scripts_map_dict(base_dir=None):
    scripts_dir = get_root_scripts_dir(base_dir=base_dir)

    scripts_map = {}
    for group_dir in scripts_dir.iterdir():
        group_script_map = make_group_script_map(group_dir.name,
                                                 base_dir=base_dir)
        no_clobber_update(scripts_map, group_script_map)
    return scripts_map
Пример #6
0
def make_project_script_map(group_name, project_name, base_dir=None):
    script_project_map = {}
    script_project_dir = get_script_project_dir(group_name,
                                                project_name,
                                                base_dir=base_dir)
    for version_dir in script_project_dir.iterdir():
        version_map = make_script_version_map(group_name,
                                              project_name,
                                              version_dir.name,
                                              base_dir=base_dir)
        no_clobber_update(script_project_map, version_map)
    return script_project_map
Пример #7
0
def make_main_tool_map(tool_name, base_dir=None):
    """
    Make a yaml file that specifies paths and attributes of tools in a single tool directory. If outfile is provided, dump contents to outfile.

    """
    main_tool_map = {}
    tool_dir = get_main_tool_dir(tool_name, base_dir=base_dir)
    for version_dir in tool_dir.iterdir():
        no_clobber_update(
            main_tool_map,
            make_tool_version_dir_map(tool_name,
                                      version_dir.name,
                                      base_dir=base_dir))
    return main_tool_map
Пример #8
0
def make_tools_map_dict(base_dir=None, specify_exists=False):
    tools_dir = get_root_tools_dir(base_dir=base_dir)
    tools_map = {}

    for tool_dir in tools_dir.iterdir():
        if tool_dir.name == '.DS_Store':
            continue
        assert tool_dir.is_dir()
        for version_dir in tool_dir.iterdir():
            if version_dir.name == '.DS_Store':
                continue
            assert version_dir.is_dir()
            tool_map = make_tool_version_dir_map(tool_dir.name,
                                                 version_dir.name,
                                                 base_dir=base_dir,
                                                 specify_exists=specify_exists)
            no_clobber_update(tools_map, tool_map)
    return tools_map
Пример #9
0
def make_script_version_map(group_name,
                            project_name,
                            version_name,
                            base_dir=None):
    script_version_map = {}
    script_version_dir = get_script_version_dir(group_name,
                                                project_name,
                                                version_name,
                                                base_dir=base_dir)
    for script_dir in script_version_dir.iterdir():
        if script_dir.name == 'common':
            continue
        script_map = make_script_map(group_name,
                                     project_name,
                                     version_name,
                                     script_dir.name,
                                     base_dir=base_dir)
        no_clobber_update(script_version_map, script_map)
    return script_version_map
Пример #10
0
def make_tool_version_dir_map(tool_name,
                              tool_version,
                              base_dir=None,
                              specify_exists=False):
    tool_version_map = {}

    tool_version_dir = get_tool_version_dir(tool_name,
                                            tool_version,
                                            base_dir=base_dir)
    parent_metadata_path = get_tool_metadata(tool_name,
                                             tool_version,
                                             parent=True,
                                             base_dir=base_dir)
    parent_metadata = ParentToolMetadata.load_from_file(parent_metadata_path,
                                                        check_index=False)
    parent_rel_path = get_relative_path(parent_metadata_path,
                                        base_path=base_dir)
    tool_version_map[parent_metadata.identifier] = {
        'metadataPath': str(parent_rel_path),
        'metadataStatus': parent_metadata.metadataStatus,
        'name': parent_metadata.name,
        'versionName': parent_metadata.softwareVersion.versionName,
        'type': 'parent'
    }
    for subtool_dir in tool_version_dir.iterdir():
        if subtool_dir.name in ['.DS_Store', 'common']:
            continue
        assert subtool_dir.is_dir(
        ), subtool_dir.name + " is not a directory. You likely have an extra file."
        tool_name_length = len(
            tool_name
        )  # Use to get directory name string after 'tool_name'. In case there are underscores in tool_name.
        subtool_name = subtool_dir.name[tool_name_length + 1:]
        if subtool_name == '':
            subtool_name = None
        subdir_map = make_subtool_map(tool_name,
                                      tool_version,
                                      subtool_name,
                                      base_dir=base_dir,
                                      specify_exists=specify_exists)
        no_clobber_update(tool_version_map, subdir_map)
    return tool_version_map
Пример #11
0
def make_workflow_maps_dict(base_dir=None):
    workflows_dir = get_workflows_root_dir(base_dir=base_dir)
    master_workflow_map = {}
    for group_dir in workflows_dir.iterdir():
        if group_dir.name == '.DS_Store':
            continue
        assert group_dir.is_dir()
        for project_dir in group_dir.iterdir():
            if project_dir.name == '.DS_Store':
                continue
            assert project_dir.is_dir()
            for version_dir in project_dir.iterdir():
                if version_dir.name == '.DS_Store':
                    continue
                assert version_dir.is_dir()
                workflow_dict = make_workflow_map(group_dir.name,
                                                  project_dir.name,
                                                  version_dir.name,
                                                  base_dir=base_dir)
                no_clobber_update(master_workflow_map, workflow_dict)
    return master_workflow_map
Пример #12
0
 def test_no_clobber_update_fail(self):
     with self.assertRaises(ValueError):
         no_clobber_update(test_dict_1, test_dict_2)
     return
Пример #13
0
 def test_no_clobber_update(self):
     updated_dict = no_clobber_update(test_dict_1, test_dict_2)
     self.assertEqual(updated_dict, test_dict_1.update(test_dict_2))
     return