sregistry/utils/recipes.py
def find_recipes(folders, pattern=None, base=None):
    '''find recipes will use a list of base folders, files,
       or patterns over a subset of content to find recipe files
       (indicated by Starting with Singularity
    
       Parameters
       ==========
        base: if defined, consider folders recursively below this level.

    '''    
    # If the user doesn't provide a list of folders, use $PWD
    if folders is None:
        folders = os.getcwd()

    if not isinstance(folders,list):
        folders = [folders]

    manifest = dict()
    for base_folder in folders:

        # If we find a file, return the one file
        custom_pattern = None
        if os.path.isfile(base_folder):  # updates manifest
            manifest = find_single_recipe(filename=base_folder,
                                          pattern=pattern,
                                          manifest=manifest)
            continue

        # The user likely provided a custom pattern
        elif not os.path.isdir(base_folder):
            custom_pattern = base_folder.split('/')[-1:][0]
            base_folder = "/".join(base_folder.split('/')[0:-1])
        
        # If we don't trigger loop, we have directory
        manifest = find_folder_recipes(base_folder=base_folder,
                                       pattern=custom_pattern or pattern,
                                       manifest=manifest,
                                       base=base)
        
    return manifest
def find_recipes(folders, pattern=None, base=None):
    '''find recipes will use a list of base folders, files,
       or patterns over a subset of content to find recipe files
       (indicated by Starting with Singularity
    
       Parameters
       ==========
        base: if defined, consider folders recursively below this level.

    '''    
    # If the user doesn't provide a list of folders, use $PWD
    if folders is None:
        folders = os.getcwd()

    if not isinstance(folders,list):
        folders = [folders]

    manifest = dict()
    for base_folder in folders:

        # If we find a file, return the one file
        custom_pattern = None
        if os.path.isfile(base_folder):  # updates manifest
            manifest = find_single_recipe(filename=base_folder,
                                          pattern=pattern,
                                          manifest=manifest)
            continue

        # The user likely provided a custom pattern
        elif not os.path.isdir(base_folder):
            custom_pattern = base_folder.split('/')[-1:][0]
            base_folder = "/".join(base_folder.split('/')[0:-1])
        
        # If we don't trigger loop, we have directory
        manifest = find_folder_recipes(base_folder=base_folder,
                                       pattern=custom_pattern or pattern,
                                       manifest=manifest,
                                       base=base)
        
    return manifest
def find_recipes ( folders , pattern = None , base = None ) : # If the user doesn't provide a list of folders, use $PWD if folders is None : folders = os . getcwd ( ) if not isinstance ( folders , list ) : folders = [ folders ] manifest = dict ( ) for base_folder in folders : # If we find a file, return the one file custom_pattern = None if os . path . isfile ( base_folder ) : # updates manifest manifest = find_single_recipe ( filename = base_folder , pattern = pattern , manifest = manifest ) continue # The user likely provided a custom pattern elif not os . path . isdir ( base_folder ) : custom_pattern = base_folder . split ( '/' ) [ - 1 : ] [ 0 ] base_folder = "/" . join ( base_folder . split ( '/' ) [ 0 : - 1 ] ) # If we don't trigger loop, we have directory manifest = find_folder_recipes ( base_folder = base_folder , pattern = custom_pattern or pattern , manifest = manifest , base = base ) return manifest
find recipes will use a list of base folders, files,
       or patterns over a subset of content to find recipe files
       (indicated by Starting with Singularity
    
       Parameters
       ==========
        base: if defined, consider folders recursively below this level.
find recipes will use a list of base folders files or patterns over a subset of content to find recipe files ( indicated by Starting with Singularity Parameters ========== base : if defined consider folders recursively below this level .