blob: f676aa307ee94b90ef597e34d510aef2eb44f26f [file] [log] [blame]
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from recipe_engine import recipe_api
class YamlApi(recipe_api.RecipeApi):
"""Provides utilities to parse yaml files."""
def read(self, step_name, file_path, json_place_holder):
"""Reads a yaml file.
It currently shells out to a script which converts the yaml to json,
this way it can use vpython to import pyyaml. To achieve the same
from the recipe we need to specify pyyaml at the root file. Please
change this behavior to be inline if it becomes easier to specify
vpython packages dependencies in a recipe module.
Args:
step_name: (str) the name of the step for reading the yaml.
file_path: (str) the path to the yaml file.
json_place_holder: (JsonOutputPlaceholder) for the parsed yaml content.
Returns:
StepData with the result from the step.
"""
with self.m.step.nest(step_name) as presentation:
content = self.m.file.read_text('read', file_path)
presentation.logs['yaml'] = content
return self.m.step(
'parse',
[
'vpython', self.resource('parse_yaml.py'),
'--yaml_file', file_path,
'--json_file', self.m.json.output()
],
infra_step=True
)