ConfigureExportCommand.cpp (3710B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 #include "pch.h" 4 #include "ConfigureExportCommand.h" 5 #include "Workflows/ConfigurationFlow.h" 6 #include "Workflows/MSStoreInstallerHandler.h" 7 #include "ConfigurationCommon.h" 8 9 using namespace AppInstaller::CLI::Workflow; 10 11 namespace AppInstaller::CLI 12 { 13 std::vector<Argument> ConfigureExportCommand::GetArguments() const 14 { 15 return { 16 Argument{ Execution::Args::Type::OutputFile, Resource::String::OutputFileArgumentDescription, true }, 17 Argument{ Execution::Args::Type::ConfigurationExportPackageId, Resource::String::ConfigureExportPackageId }, 18 Argument{ Execution::Args::Type::ConfigurationExportModule, Resource::String::ConfigureExportModule }, 19 Argument{ Execution::Args::Type::ConfigurationExportResource, Resource::String::ConfigureExportResource }, 20 Argument{ Execution::Args::Type::ConfigurationModulePath, Resource::String::ConfigurationModulePath }, 21 Argument{ Execution::Args::Type::ConfigurationProcessorPath, Resource::String::ConfigurationProcessorPath, ArgumentType::Standard, Argument::Visibility::Help }, 22 Argument{ Execution::Args::Type::Source, Resource::String::ExportSourceArgumentDescription, ArgumentType::Standard }, 23 Argument{ Execution::Args::Type::IncludeVersions, Resource::String::ExportIncludeVersionsArgumentDescription, ArgumentType::Flag }, 24 Argument{ Execution::Args::Type::ConfigurationExportAll, Resource::String::ConfigureExportAll, ArgumentType::Flag }, 25 Argument::ForType(Execution::Args::Type::AcceptSourceAgreements), 26 }; 27 } 28 29 Resource::LocString ConfigureExportCommand::ShortDescription() const 30 { 31 return { Resource::String::ConfigureExportCommandShortDescription }; 32 } 33 34 Resource::LocString ConfigureExportCommand::LongDescription() const 35 { 36 return { Resource::String::ConfigureExportCommandLongDescription }; 37 } 38 39 Utility::LocIndView ConfigureExportCommand::HelpLink() const 40 { 41 return "https://aka.ms/winget-command-configure#export"_liv; 42 } 43 44 void ConfigureExportCommand::ExecuteInternal(Execution::Context& context) const 45 { 46 context << 47 VerifyIsFullPackage << 48 CreateConfigurationProcessorWithoutFactory << 49 CreateOrOpenConfigurationSet{ "0.3", context.Args.Contains(Execution::Args::Type::ConfigurationExportAll) } << 50 CreateConfigurationProcessor << 51 PopulateConfigurationSetForExport << 52 WriteConfigFile; 53 } 54 55 void ConfigureExportCommand::ValidateArgumentsInternal(Execution::Args& execArgs) const 56 { 57 Configuration::ValidateCommonArguments(execArgs); 58 59 if (!execArgs.Contains(Execution::Args::Type::ConfigurationExportModule, Execution::Args::Type::ConfigurationExportResource) && 60 !execArgs.Contains(Execution::Args::Type::ConfigurationExportPackageId) && 61 !execArgs.Contains(Execution::Args::Type::ConfigurationExportAll)) 62 { 63 throw CommandException(Resource::String::ConfigureExportArgumentRequiredError); 64 } 65 66 if (execArgs.Contains(Execution::Args::Type::ConfigurationExportAll) && 67 (execArgs.Contains(Execution::Args::Type::ConfigurationExportPackageId) || 68 execArgs.Contains(Execution::Args::Type::ConfigurationExportModule) || 69 execArgs.Contains(Execution::Args::Type::ConfigurationExportResource))) 70 { 71 throw CommandException(Resource::String::ConfigureExportArgumentConflictWithAllError); 72 } 73 } 74 }