ConfigurationFlow.h (6346B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 #pragma once 4 #include "ExecutionContext.h" 5 6 namespace AppInstaller::CLI::Workflow 7 { 8 // Creates a configuration processor with a processor factory for full functionality. 9 // Required Args: None 10 // Inputs: None 11 // Outputs: ConfigurationProcessor 12 void CreateConfigurationProcessor(Execution::Context& context); 13 14 // Creates a configuration processor without a processor factory for reduced functionality. 15 // Required Args: None 16 // Inputs: None 17 // Outputs: ConfigurationProcessor 18 void CreateConfigurationProcessorWithoutFactory(Execution::Context& context); 19 20 // Opens the configuration set. 21 // Required Args: ConfigurationFile 22 // Inputs: ConfigurationProcessor 23 // Outputs: ConfigurationSet 24 void OpenConfigurationSet(Execution::Context& context); 25 26 // Creates or opens the configuration set. 27 // Required Args: OutputFile 28 // Inputs: ConfigurationProcessor 29 // Outputs: ConfigurationSet 30 struct CreateOrOpenConfigurationSet : public WorkflowTask 31 { 32 CreateOrOpenConfigurationSet(std::string defaultSchemaVersion, bool createAlways = false) : 33 WorkflowTask("CreateOrOpenConfigurationSet"), m_defaultSchemaVersion(std::move(defaultSchemaVersion)), m_createAlways(createAlways) {} 34 35 void operator()(Execution::Context& context) const override; 36 37 private: 38 std::string m_defaultSchemaVersion; 39 bool m_createAlways = false; 40 }; 41 42 // Outputs the configuration set. 43 // Required Args: None 44 // Inputs: ConfigurationSet 45 // Outputs: None 46 void ShowConfigurationSet(Execution::Context& context); 47 48 // Outputs the configuration set. 49 // Required Args: None 50 // Inputs: ConfigurationProcessor, ConfigurationSet 51 // Outputs: None 52 void ShowConfigurationSetConflicts(Execution::Context& context); 53 54 // Handles confirming the configuration set processing should proceed. 55 // Required Args: None 56 // Inputs: None 57 // Outputs: None 58 struct ConfirmConfigurationProcessing : public WorkflowTask 59 { 60 ConfirmConfigurationProcessing(bool isApply) : WorkflowTask("ConfirmConfigurationProcessing"), m_isApply(isApply) {} 61 62 void operator()(Execution::Context& context) const override; 63 64 private: 65 bool m_isApply; 66 }; 67 68 // Applies the configuration set, showing progress as it proceeds. 69 // Required Args: None 70 // Inputs: ConfigurationProcessor, ConfigurationSet 71 // Outputs: None 72 void ApplyConfigurationSet(Execution::Context& context); 73 74 // Tests the configuration set state, showing progress as it proceeds. 75 // Required Args: None 76 // Inputs: ConfigurationProcessor, ConfigurationSet 77 // Outputs: None 78 void TestConfigurationSet(Execution::Context& context); 79 80 // Validates the configuration set semantically. 81 // Required Args: None 82 // Inputs: ConfigurationProcessor, ConfigurationSet 83 // Outputs: None 84 void ValidateConfigurationSetSemantics(Execution::Context& context); 85 86 // Validates that the unit processors referenced by the set are valid/available/etc. 87 // Required Args: None 88 // Inputs: ConfigurationProcessor, ConfigurationSet 89 // Outputs: None 90 void ValidateConfigurationSetUnitProcessors(Execution::Context& context); 91 92 // Validates that specific unit contents referenced by the set are valid/available/etc. 93 // Required Args: None 94 // Inputs: ConfigurationProcessor, ConfigurationSet 95 // Outputs: None 96 void ValidateConfigurationSetUnitContents(Execution::Context& context); 97 98 // Outputs the final message stating that no issues were found. 99 // Required Args: None 100 // Inputs: None 101 // Outputs: None 102 void ValidateAllGoodMessage(Execution::Context& context); 103 104 // Search source for package(s) to be exported in configuration file. 105 // Required Args: None 106 // Inputs: None 107 // Outputs: PackageCollection 108 void SearchSourceForPackageExport(Execution::Context& context); 109 110 // Adds configuration unit(s) with the winget package and/or exports resource given to configuration set. 111 // Required Args: None 112 // Inputs: ConfigurationProcessor, ConfigurationSet 113 // Outputs: None 114 void PopulateConfigurationSetForExport(Execution::Context& context); 115 116 // Write the configuration file. 117 // Required Args: OutputFile 118 // Inputs: ConfigurationProcessor, ConfigurationSet 119 // Outputs: None 120 void WriteConfigFile(Execution::Context& context); 121 122 // Gets the configuration set history. 123 // Required Args: None 124 // Inputs: ConfigurationProcessor 125 // Outputs: ConfigurationSetHistory 126 void GetConfigurationSetHistory(Execution::Context& context); 127 128 // Outputs the configuration set history. 129 // Required Args: None 130 // Inputs: ConfigurationSetHistory 131 // Outputs: None 132 void ShowConfigurationSetHistory(Execution::Context& context); 133 134 // Selects a specific configuration set history item. 135 // Required Args: ConfigurationHistoryItem 136 // Inputs: ConfigurationSetHistory 137 // Outputs: ConfigurationSet 138 void SelectSetFromHistory(Execution::Context& context); 139 140 // Removes the configuration set from history. 141 // Required Args: None 142 // Inputs: ConfigurationSet 143 // Outputs: None 144 void RemoveConfigurationSetHistory(Execution::Context& context); 145 146 // Write the configuration set history item to a file. 147 // Required Args: OutputFile 148 // Inputs: ConfigurationSet 149 // Outputs: None 150 void SerializeConfigurationSetHistory(Execution::Context& context); 151 152 // Outputs a single configuration set (from history). 153 // Required Args: None 154 // Inputs: ConfigurationSet 155 // Outputs: None 156 void ShowSingleConfigurationSetHistory(Execution::Context& context); 157 158 // Completes the configuration history item. 159 // Required Args: None 160 // Inputs: None 161 // Outputs: None 162 void CompleteConfigurationHistoryItem(Execution::Context& context); 163 164 // Monitors configuration status. 165 // Required Args: None 166 // Inputs: None 167 // Outputs: None 168 void MonitorConfigurationStatus(Execution::Context& context); 169 }