Flutter Engine
 
Loading...
Searching...
No Matches
data.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6#include <filesystem>
7namespace {
8const char* kIncludeFilename = "include.txt";
9const char* kExcludeFilename = "exclude.txt";
10} // namespace
11
12namespace fs = std::filesystem;
13
14absl::StatusOr<Data> Data::Open(std::string_view data_dir) {
15 fs::path data_path = fs::path(data_dir);
16 fs::path include_path = data_path / kIncludeFilename;
17 absl::StatusOr<Filter> include_filter = Filter::Open(include_path.string());
18 if (!include_filter.ok()) {
19 return absl::InvalidArgumentError("Can't open include.txt at " +
20 include_path.string() + ": " +
21 include_filter.status().ToString());
22 }
23 fs::path exclude_path = fs::path(data_dir) / kExcludeFilename;
24 absl::StatusOr<Filter> exclude_filter = Filter::Open(exclude_path.string());
25 if (!exclude_filter.ok()) {
26 return absl::InvalidArgumentError("Can't open exclude.txt at " +
27 exclude_path.string() + ": " +
28 include_filter.status().ToString());
29 }
30 absl::StatusOr<Catalog> catalog = Catalog::Open(data_dir);
31 if (!catalog.ok()) {
32 return absl::InvalidArgumentError("Can't open catalog at " +
33 exclude_path.string() + ": " +
34 catalog.status().ToString());
35 }
36
37 fs::path secondary_dir = data_path / "secondary";
38
39 return Data{
40 .include_filter = std::move(*include_filter),
41 .exclude_filter = std::move(*exclude_filter),
42 .catalog = std::move(*catalog),
43 .secondary_dir = fs::exists(secondary_dir) ? secondary_dir : fs::path()};
44}
static absl::StatusOr< Catalog > Open(std::string_view data_dir)
Definition catalog.cc:98
static absl::StatusOr< Filter > Open(std::string_view path)
Definition filter.cc:9
Definition data.h:17
Catalog catalog
Definition data.h:21
Filter include_filter
Definition data.h:19
static absl::StatusOr< Data > Open(std::string_view data_dir)
Definition data.cc:14
std::filesystem::path secondary_dir
Definition data.h:22
Filter exclude_filter
Definition data.h:20