docs: def get_recipes_in_cookbook(name):
      """Gets the name of all recipes present in a cookbook
      Returns a list of dictionaries
  
      """
      recipes = {}
      path = None
      cookbook_exists = False
      metadata_exists = False
      for cookbook_path in cookbook_paths:
          path = os.path.join(cookbook_path, name)
          path_exists = os.path.exists(path)
          # cookbook exists if present in any of the cookbook paths
          cookbook_exists = cookbook_exists or path_exists
          if not path_exists:
              continue
  
          _generate_metadata(path, cookbook_path, name)
  
          # Now try to open metadata.json
          try:
              with open(os.path.join(path, 'metadata.json'), 'r') as f:
                  try:
                      cookbook = json.loads(f.read())
                  except ValueError as e:
                      msg = "Little Chef found the following error in your"
                      msg += " {0} file:\n  {1}".format(
                          os.path.join(path, 'metadata.json'), e)
                      abort(msg)
                  # Add each recipe defined in the cookbook
                  metadata_exists = True
                  recipe_defaults = {
                      'description': '',
                      'version': cookbook.get('version'),
                      'dependencies': cookbook.get('dependencies', {}).keys(),
                      'attributes': cookbook.get('attributes', {})
                  }
                  for recipe in cookbook.get('recipes', []):
                      recipes[recipe] = dict(
                          recipe_defaults,
                          name=recipe,
                          description=cookbook['recipes'][recipe]
                      )
              # Cookbook metadata.json was found, don't try next cookbook path
              # because metadata.json in site-cookbooks has preference
              break
          except IOError:
              # metadata.json was not found, try next cookbook_path
              pass
      if not cookbook_exists:
          abort('Unable to find cookbook "{0}"'.format(name))
      elif not metadata_exists:
          abort('Cookbook "{0}" has no metadata.json'.format(name))
      # Add recipes found in the 'recipes' directory but not listed
      # in the metadata
      for cookbook_path in cookbook_paths:
          recipes_dir = os.path.join(cookbook_path, name, 'recipes')
          if not os.path.isdir(recipes_dir):
              continue
          for basename in os.listdir(recipes_dir):
              fname, ext = os.path.splitext(basename)
              if ext != '.rb':
                  continue
              if fname != 'default':
                  recipe = '%s::%s' % (name, fname)
              else:
                  recipe = name
              if recipe not in recipes:
                  recipes[recipe] = dict(recipe_defaults, name=recipe)
      # When a recipe has no default recipe (libraries?),
      # add one so that it is listed
      if not recipes:
          recipes[name] = dict(
              recipe_defaults,
              name=name,
              description='This cookbook has no default recipe'
          )
      return recipes.values()