blob: 86f621f36aa14f5bffff32d4461191e9806780de [file] [log] [blame]
// Copyright 2019 The Fuchsia 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 COBALT_SRC_LIB_UTIL_FILE_UTIL_H_
#define COBALT_SRC_LIB_UTIL_FILE_UTIL_H_
#include <string>
#include "src/lib/util/named_type.h"
#include "src/lib/util/status_builder.h"
#include "src/public/lib/statusor/statusor.h"
namespace cobalt::util {
using Path = util::NamedType<std::string, struct PathTag>;
lib::statusor::StatusOr<std::string> ReadTextFile(const Path& file_path);
lib::statusor::StatusOr<std::string> ReadNonEmptyTextFile(const Path& file_path);
lib::statusor::StatusOr<std::string> ReadHexFile(const Path& file_path);
std::string ReadHexFileOrDefault(const Path& file_path, const std::string& default_string);
// DEPRECATED: TODO(fxbug.dev/85571): Remove once not used in Fuchsia
std::string ReadHexFileOrDefault(const std::string& file_path, const std::string& default_string);
template <>
class ContextFormatter<Path> {
public:
explicit ContextFormatter(const Path& v) : v_(v) {}
inline static std::string default_key() { return "Path"; }
inline void write_value(std::ostream& stream) { stream << v_; }
private:
const Path& v_;
};
} // namespace cobalt::util
#endif // COBALT_SRC_LIB_UTIL_FILE_UTIL_H_