winget-cli

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

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 }