winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

ConfigurationSetSerializer.h (3187B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 #pragma once
      4 #include "ConfigurationSetSerializer.h"
      5 #include "ConfigurationSetUtilities.h"
      6 #include "ConfigurationSet.h"
      7 
      8 #include <winget/Yaml.h>
      9 #include <initializer_list>
     10 #include <string_view>
     11 #include <utility>
     12 
     13 namespace winrt::Microsoft::Management::Configuration::implementation
     14 {
     15     struct ConfigurationSetSerializer
     16     {
     17         using OverrideMap = std::vector<std::pair<ConfigurationField, Windows::Foundation::IInspectable>>;
     18 
     19         static std::unique_ptr<ConfigurationSetSerializer> CreateSerializer(hstring version, bool strictVersionMatching = false);
     20 
     21         virtual ~ConfigurationSetSerializer() noexcept = default;
     22 
     23         ConfigurationSetSerializer(const ConfigurationSetSerializer&) = delete;
     24         ConfigurationSetSerializer& operator=(const ConfigurationSetSerializer&) = delete;
     25         ConfigurationSetSerializer(ConfigurationSetSerializer&&) = default;
     26         ConfigurationSetSerializer& operator=(ConfigurationSetSerializer&&) = default;
     27 
     28         // Serializes a configuration set to the original yaml string.
     29         virtual hstring Serialize(ConfigurationSet*) = 0;
     30 
     31         // Serialize the metadata with the given environment.
     32         virtual std::string SerializeMetadataWithEnvironment(const Windows::Foundation::Collections::ValueSet& metadata, const Configuration::ConfigurationEnvironment& environment) = 0;
     33 
     34         // Serializes a value set only.
     35         std::string SerializeValueSet(const Windows::Foundation::Collections::ValueSet& valueSet);
     36 
     37         // Serializes a value set only.
     38         std::string SerializeStringArray(const Windows::Foundation::Collections::IVector<hstring>& stringArray);
     39 
     40     protected:
     41         ConfigurationSetSerializer() = default;
     42 
     43         static void WriteYamlValueSet(AppInstaller::YAML::Emitter& emitter, const Windows::Foundation::Collections::ValueSet& valueSet, const OverrideMap& overrides = {});
     44         static void WriteYamlValueSetValues(AppInstaller::YAML::Emitter& emitter, const Windows::Foundation::Collections::ValueSet& valueSet, const OverrideMap& overrides = {});
     45         static void WriteYamlValueSetIfNotEmpty(AppInstaller::YAML::Emitter& emitter, ConfigurationField key, const Windows::Foundation::Collections::ValueSet& valueSet, const OverrideMap& overrides = {});
     46         static void WriteYamlValueSetAsArray(AppInstaller::YAML::Emitter& emitter, const Windows::Foundation::Collections::ValueSet& valueSetArray);
     47 
     48         static void WriteYamlStringArray(AppInstaller::YAML::Emitter& emitter, const Windows::Foundation::Collections::IVector<hstring>& values);
     49 
     50         static void WriteYamlValue(AppInstaller::YAML::Emitter& emitter, const winrt::Windows::Foundation::IInspectable& value);
     51         static void WriteYamlValueIfNotEmpty(AppInstaller::YAML::Emitter& emitter, ConfigurationField key, const winrt::Windows::Foundation::IInspectable& value);
     52         static void WriteYamlStringValueIfNotEmpty(AppInstaller::YAML::Emitter& emitter, ConfigurationField key, hstring value);
     53 
     54         std::wstring_view GetSchemaVersionCommentPrefix();
     55     };
     56 }