21 std::ifstream file(filename, std::ios::binary | std::ios::ate);
26 file.seekg(0, std::ios::end);
27 return (
size_t)file.tellg();
30inline std::vector<uint8_t>
read_file(
const std::string& filename,
size_t bytes = 0)
33 if (filename ==
"-") {
37 std::ifstream file(filename, std::ios::binary);
39 THROW std::runtime_error(
"Unable to open file: " + filename);
43 if (!file.seekg(0, std::ios::end)) {
49 auto size =
static_cast<size_t>(file.tellg());
50 file.seekg(0, std::ios::beg);
53 auto to_read = bytes == 0 ? size : bytes;
54 std::vector<uint8_t> fileData(to_read);
55 file.read(
reinterpret_cast<char*
>(fileData.data()), (
std::streamsize)to_read);
59inline void write_file(
const std::string& filename, std::vector<uint8_t>
const&
data)
62 if (stat(filename.c_str(), &st) == 0 && S_ISFIFO(st.st_mode)) {
64 int fd = open(filename.c_str(), O_WRONLY);
66 THROW std::runtime_error(
"Failed to open file descriptor: " + filename);
69 size_t total_written = 0;
70 size_t data_size =
data.size();
71 while (total_written < data_size) {
72 ssize_t written =
::write(fd,
data.data() + total_written, data_size - total_written);
75 THROW std::runtime_error(
"Failed to write to file descriptor: " + filename);
77 total_written +=
static_cast<size_t>(written);
81 std::ofstream file(filename, std::ios::binary);
83 THROW std::runtime_error(
"Failed to open data file for writing: " + filename +
" (" + strerror(errno) +
95 for (
size_t i = 0; i < fields.size(); ++i) {
96 ss <<
'"' << fields[i] <<
'"';
97 if (i != fields.size() - 1) {
112inline std::vector<uint8_t>
read_vk_file(
const std::filesystem::path& vk_path)
116 }
catch (
const std::runtime_error&) {
117 THROW std::runtime_error(
"Unable to open file: " + vk_path.string() +
118 "\nGenerate a vk during proving by running `bb prove` with an additional `--write_vk` "
119 "flag, or run `bb write_vk` to generate a standalone vk."
120 "\nIf you already have a vk file, specify its path with `--vk_path <path>`.");
const std::vector< MemoryValue > data
Entry point for Barretenberg command-line interface.
std::vector< uint8_t > read_vk_file(const std::filesystem::path &vk_path)
Read a verification key file with an actionable error message if not found.
void write(B &buf, field2< base_field, Params > const &value)
std::vector< uint8_t > read_file(const std::string &filename, size_t bytes=0)
void write_file(const std::string &filename, std::vector< uint8_t > const &data)
std::string field_elements_to_json(const std::vector< Fr > &fields)
size_t get_file_size(std::string const &filename)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept