1 #pragma once 2 3 #include <string> 4 // 5 #include <fruit/fruit.h> 6 7 #include "host/libs/config/cuttlefish_config.h" 8 #include "host/libs/config/feature.h" 9 10 namespace cuttlefish { 11 12 class DataImagePath { 13 public: 14 virtual ~DataImagePath() = default; 15 virtual const std::string& Path() const = 0; 16 }; 17 18 class InitializeDataImage : public SetupFeature {}; 19 20 fruit::Component<DataImagePath> FixedDataImagePathComponent( 21 const std::string* path); 22 fruit::Component<fruit::Required<const CuttlefishConfig, DataImagePath>, 23 InitializeDataImage> 24 InitializeDataImageComponent(); 25 26 class InitializeEspImage : public SetupFeature {}; 27 28 fruit::Component<fruit::Required<const CuttlefishConfig>, 29 InitializeEspImage> InitializeEspImageComponent( 30 const std::string* esp_image, const std::string* kernel_path, 31 const std::string* initramfs_path, const std::string* root_fs, 32 const CuttlefishConfig* config); 33 34 bool CreateBlankImage( 35 const std::string& image, int num_mb, const std::string& image_fmt); 36 37 class MiscImagePath { 38 public: 39 virtual ~MiscImagePath() = default; 40 virtual const std::string& Path() const = 0; 41 }; 42 43 class InitializeMiscImage : public SetupFeature {}; 44 45 fruit::Component<MiscImagePath> FixedMiscImagePathComponent( 46 const std::string* path); 47 fruit::Component<fruit::Required<MiscImagePath>, InitializeMiscImage> 48 InitializeMiscImageComponent(); 49 50 } // namespace cuttlefish 51