def merge_manifest(parent, child)
      merge = proc do |_, old, new|
        if new.is_a?(Hash) && old.is_a?(Hash)
          old.merge(new, &merge)
        else
          new
        end
      end

      parent.merge(child, &merge)
    end
def merge_manifest(parent, child)
      merge = proc do |_, old, new|
        if new.is_a?(Hash) && old.is_a?(Hash)
          old.merge(new, &merge)
        else
          new
        end
      end

      parent.merge(child, &merge)
    end
deep hash merge