// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LOGIN_MANAGER_CONTAINER_CONFIG_PARSER_H_
#define LOGIN_MANAGER_CONTAINER_CONFIG_PARSER_H_

#include <string>
#include <memory>

#include <libcontainer/libcontainer.h>
#include <base/files/file_path.h>
#include <base/values.h>

namespace login_manager {

using ContainerConfigPtr = std::unique_ptr<container_config,
                                           decltype(&container_config_destroy)>;

// Parses container configuration from the config.json and runtime.json data as
// specified in https://github.com/opencontainers/runtime-spec/tree/v0.2.0
//  |config_json_data| - The text from config.json.
//  |runtime_json_data| - The text from runtime.json.
//  |container_name| - Unique name for the container.
//  |named_container_path| - Path to the base of the container data and rootfs.
//  |config_out| - Filled with the configuration, defined in libcontainer.
bool ParseContainerConfig(const std::string& config_json_data,
                          const std::string& runtime_json_data,
                          const std::string& container_name,
                          const base::FilePath& named_container_path,
                          ContainerConfigPtr* config_out);

}  // namespace login_manager

#endif  // LOGIN_MANAGER_CONTAINER_CONFIG_PARSER_H_
