Android-cuttlefish cvd tool
fetch_context.h
Go to the documentation of this file.
1//
2// Copyright (C) 2025 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <optional>
19#include <ostream>
20#include <string>
21#include <string_view>
22#include <vector>
23
33
34namespace cuttlefish {
35
37 public:
39 Result<void> DownloadTo(std::string local_path);
40
42
44 Result<void> ExtractAll(const std::string& local_path);
45
46 Result<void> ExtractOne(const std::string& member_name);
47 Result<void> ExtractOneTo(const std::string& member_name,
48 const std::string& local_path);
49
51
52 private:
53 friend class FetchBuildContext;
54
55 FetchArtifact(class FetchBuildContext&, std::string artifact_name);
56
58 std::string artifact_name_;
59 std::string downloaded_path_;
60 std::optional<ReadableZip> zip_;
61};
62
79 public:
80 const cuttlefish::Build& Build() const;
81 std::string GetBuildZipName(const std::string&) const;
82 // The specific filepath the user requested for a particular build. Ignored
83 // for some builds.
84 std::optional<std::string> GetFilepath() const;
85
86 FetchArtifact Artifact(std::string artifact_name);
87
88 private:
89 friend class FetchArtifact;
90 friend class FetchContext;
91
93 std::string_view target_directory, FileSource,
95
96 Result<void> DesparseFiles(std::vector<std::string> files);
97
98 Result<void> AddFileToConfig(std::string file, std::string archive_name = "",
99 std::string archive_path = "");
100
103 std::string target_directory_;
106};
107
108std::ostream& operator<<(std::ostream&, const FetchBuildContext&);
109
115 public:
118
119 std::optional<FetchBuildContext> DefaultBuild();
120 std::optional<FetchBuildContext> SystemBuild();
121 std::optional<FetchBuildContext> KernelBuild();
122 std::optional<FetchBuildContext> BootBuild();
123 std::optional<FetchBuildContext> BootloaderBuild();
124 std::optional<FetchBuildContext> AndroidEfiLoaderBuild();
125 std::optional<FetchBuildContext> OtaToolsBuild();
126 std::optional<FetchBuildContext> TestSuitesBuild();
127
128 private:
129 friend class FetchArtifact;
130 friend class FetchBuildContext;
131
137};
138
139} // namespace cuttlefish
Definition: build_api.h:27
Definition: fetch_context.h:36
std::string downloaded_path_
Definition: fetch_context.h:59
Result< void > DeleteLocalFile()
Definition: fetch_context.cc:157
FetchArtifact(class FetchBuildContext &, std::string artifact_name)
Definition: fetch_context.cc:56
Result< void > Download()
Definition: fetch_context.cc:60
Result< void > ExtractAll()
Definition: fetch_context.cc:104
std::optional< ReadableZip > zip_
Definition: fetch_context.h:60
Result< void > DownloadTo(std::string local_path)
Definition: fetch_context.cc:65
Result< void > ExtractOne(const std::string &member_name)
Definition: fetch_context.cc:125
FetchBuildContext & fetch_build_context_
Definition: fetch_context.h:57
Result< void > ExtractOneTo(const std::string &member_name, const std::string &local_path)
Definition: fetch_context.cc:130
std::string artifact_name_
Definition: fetch_context.h:58
Result< ReadableZip * > AsZip()
Definition: fetch_context.cc:95
Definition: fetch_context.h:78
const cuttlefish::Build & Build() const
Definition: fetch_context.cc:184
Result< void > DesparseFiles(std::vector< std::string > files)
Definition: fetch_context.cc:201
FileSource file_source_
Definition: fetch_context.h:104
FetchBuildContext(class FetchContext &, ::cuttlefish::Build, std::string_view target_directory, FileSource, FetchTracer::Trace)
Definition: fetch_context.cc:173
::cuttlefish::Build build_
Definition: fetch_context.h:102
FetchArtifact Artifact(std::string artifact_name)
Definition: fetch_context.cc:197
Result< void > AddFileToConfig(std::string file, std::string archive_name="", std::string archive_path="")
Definition: fetch_context.cc:218
class FetchContext & fetch_context_
Definition: fetch_context.h:101
std::optional< std::string > GetFilepath() const
Definition: fetch_context.cc:193
std::string target_directory_
Definition: fetch_context.h:103
FetchTracer::Trace trace_
Definition: fetch_context.h:105
std::string GetBuildZipName(const std::string &) const
Definition: fetch_context.cc:186
Definition: fetch_context.h:114
std::optional< FetchBuildContext > AndroidEfiLoaderBuild()
Definition: fetch_context.cc:297
FetcherConfig & fetcher_config_
Definition: fetch_context.h:135
std::optional< FetchBuildContext > BootloaderBuild()
Definition: fetch_context.cc:287
const TargetDirectories & target_directories_
Definition: fetch_context.h:133
const Builds & builds_
Definition: fetch_context.h:134
std::optional< FetchBuildContext > KernelBuild()
Definition: fetch_context.cc:268
std::optional< FetchBuildContext > OtaToolsBuild()
Definition: fetch_context.cc:308
std::optional< FetchBuildContext > DefaultBuild()
Definition: fetch_context.cc:248
std::optional< FetchBuildContext > BootBuild()
Definition: fetch_context.cc:278
FetchContext(BuildApi &, const TargetDirectories &, const Builds &, FetcherConfig &, FetchTracer &)
Definition: fetch_context.cc:238
std::optional< FetchBuildContext > SystemBuild()
Definition: fetch_context.cc:258
FetchTracer & tracer_
Definition: fetch_context.h:136
std::optional< FetchBuildContext > TestSuitesBuild()
Definition: fetch_context.cc:318
BuildApi & build_api_
Definition: fetch_context.h:132
Definition: fetch_tracer.h:38
Definition: fetch_tracer.h:35
Definition: fetcher_config.h:70
Definition: alloc_driver.h:20
FileSource
Definition: file_source.h:31
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30
std::ostream & operator<<(std::ostream &out, DeviceType device_type)
Definition: device_type.cpp:72
std::variant< DeviceBuild, DirectoryBuild > Build
Definition: android_build.h:56
Definition: builds.h:25
Definition: target_directories.h:23