winget-cli

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

commit 8dab8b73f73ad76730cc8db4b1bf8ccdbd1c1a90
parent cb592ed13b786ddfe02340763129fa5a7f23d121
Author: Luis Chacón <lechacon@users.noreply.github.com>
Date:   Thu,  4 Mar 2021 18:24:01 -0800

Split Import/Export experimental feature setting (#780)


Diffstat:
Mdoc/Settings.md | 6+++---
Mschemas/JSON/settings/settings.schema.0.2.json | 6+++---
Msrc/AppInstallerCLICore/Commands/ExportCommand.h | 2+-
Msrc/AppInstallerCLICore/Commands/ImportCommand.h | 2+-
Msrc/AppInstallerCLIE2ETests/ImportCommand.cs | 3++-
Msrc/AppInstallerCommonCore/ExperimentalFeature.cpp | 12++++++++----
Msrc/AppInstallerCommonCore/Public/winget/ExperimentalFeature.h | 8++++++--
Msrc/AppInstallerCommonCore/Public/winget/UserSettings.h | 6++++--
Msrc/AppInstallerCommonCore/UserSettings.cpp | 10++++++++--
9 files changed, 36 insertions(+), 19 deletions(-)

diff --git a/doc/Settings.md b/doc/Settings.md @@ -98,12 +98,12 @@ While work is in progress on uninstall, the command is hidden behind a feature t }, ``` -### importExport +### import -While work is in progress for import and export, the command is hidden behind a feature toggle. One can enable it as below: +While work is in progress for import, the command is hidden behind a feature toggle. One can enable it as below: ``` "experimentalFeatures": { - "importExport": true + "import": true }, ``` diff --git a/schemas/JSON/settings/settings.schema.0.2.json b/schemas/JSON/settings/settings.schema.0.2.json @@ -63,15 +63,15 @@ "type": "boolean", "default": false }, - "importExport": { - "description": "Enable the import and export commands", + "import": { + "description": "Enable the import command while it is in development", "type": "boolean", "default": false } } } }, - "allOf": [ + "allOf": [ { "properties": { "visual": { "$ref": "#/definitions/Visual" } diff --git a/src/AppInstallerCLICore/Commands/ExportCommand.h b/src/AppInstallerCLICore/Commands/ExportCommand.h @@ -8,7 +8,7 @@ namespace AppInstaller::CLI // Command to get the set of installed packages on the system. struct ExportCommand final : public Command { - ExportCommand(std::string_view parent) : Command("export", parent, Settings::ExperimentalFeature::Feature::ExperimentalImportExport) {} + ExportCommand(std::string_view parent) : Command("export", parent, Settings::ExperimentalFeature::Feature::ExperimentalExport) {} std::vector<Argument> GetArguments() const override; diff --git a/src/AppInstallerCLICore/Commands/ImportCommand.h b/src/AppInstallerCLICore/Commands/ImportCommand.h @@ -8,7 +8,7 @@ namespace AppInstaller::CLI // Command to install a set of packages from a list. struct ImportCommand final : public Command { - ImportCommand(std::string_view parent) : Command("import", parent, Settings::ExperimentalFeature::Feature::ExperimentalImportExport) {} + ImportCommand(std::string_view parent) : Command("import", parent, Settings::ExperimentalFeature::Feature::ExperimentalImport) {} std::vector<Argument> GetArguments() const override; diff --git a/src/AppInstallerCLIE2ETests/ImportCommand.cs b/src/AppInstallerCLIE2ETests/ImportCommand.cs @@ -12,7 +12,8 @@ namespace AppInstallerCLIE2ETests public void Setup() { InitializeAllFeatures(false); - ConfigureFeature("importExport", true); + ConfigureFeature("import", true); + ConfigureFeature("export", true); CleanupTestExe(); } diff --git a/src/AppInstallerCommonCore/ExperimentalFeature.cpp b/src/AppInstallerCommonCore/ExperimentalFeature.cpp @@ -27,8 +27,10 @@ namespace AppInstaller::Settings return User().Get<Setting::EFExperimentalUpgrade>(); case Feature::ExperimentalUninstall: return User().Get<Setting::EFUninstall>(); - case Feature::ExperimentalImportExport: - return User().Get<Setting::EFImportExport>(); + case Feature::ExperimentalImport: + return User().Get<Setting::EFImport>(); + case Feature::ExperimentalExport: + return User().Get<Setting::EFExport>(); default: THROW_HR(E_UNEXPECTED); } @@ -50,8 +52,10 @@ namespace AppInstaller::Settings return ExperimentalFeature{ "Upgrade Command", "upgrade", "https://aka.ms/winget-settings", Feature::ExperimentalUpgrade }; case Feature::ExperimentalUninstall: return ExperimentalFeature{ "Uninstall Command", "uninstall", "https://aka.ms/winget-settings", Feature::ExperimentalUninstall }; - case Feature::ExperimentalImportExport: - return ExperimentalFeature{ "Import & Export Commands", "importExport", "https://aka.ms/winget-settings", Feature::ExperimentalImportExport }; + case Feature::ExperimentalImport: + return ExperimentalFeature{ "Import Command", "import", "https://aka.ms/winget-settings", Feature::ExperimentalImport }; + case Feature::ExperimentalExport: + return ExperimentalFeature{ "Export Command", "export", "https://aka.ms/winget-settings", Feature::ExperimentalExport }; default: THROW_HR(E_UNEXPECTED); } diff --git a/src/AppInstallerCommonCore/Public/winget/ExperimentalFeature.h b/src/AppInstallerCommonCore/Public/winget/ExperimentalFeature.h @@ -25,8 +25,12 @@ namespace AppInstaller::Settings ExperimentalList = 0x8, ExperimentalUpgrade = 0x10, ExperimentalUninstall = 0x20, - ExperimentalImportExport = 0x40, - Max, // This MUST always be last + ExperimentalImport = 0x40, + Max, // This MUST always be after all experimental features + + // Features listed after Max will not be shown with the features command + // This can be used to hide highly experimental features + ExperimentalExport = 0x80 }; using Feature_t = std::underlying_type_t<ExperimentalFeature::Feature>; diff --git a/src/AppInstallerCommonCore/Public/winget/UserSettings.h b/src/AppInstallerCommonCore/Public/winget/UserSettings.h @@ -52,7 +52,8 @@ namespace AppInstaller::Settings EFList, EFExperimentalUpgrade, EFUninstall, - EFImportExport, + EFImport, + EFExport, Max }; @@ -88,7 +89,8 @@ namespace AppInstaller::Settings SETTINGMAPPING_SPECIALIZATION(Setting::EFList, bool, bool, false, ".experimentalFeatures.list"sv); SETTINGMAPPING_SPECIALIZATION(Setting::EFExperimentalUpgrade, bool, bool, false, ".experimentalFeatures.upgrade"sv); SETTINGMAPPING_SPECIALIZATION(Setting::EFUninstall, bool, bool, false, ".experimentalFeatures.uninstall"sv); - SETTINGMAPPING_SPECIALIZATION(Setting::EFImportExport, bool, bool, false, ".experimentalFeatures.importExport"sv); + SETTINGMAPPING_SPECIALIZATION(Setting::EFImport, bool, bool, false, ".experimentalFeatures.import"sv); + SETTINGMAPPING_SPECIALIZATION(Setting::EFExport, bool, bool, false, ".experimentalFeatures.export"sv); // Used to deduce the SettingVariant type; making a variant that includes std::monostate and all SettingMapping types. template <size_t... I> diff --git a/src/AppInstallerCommonCore/UserSettings.cpp b/src/AppInstallerCommonCore/UserSettings.cpp @@ -217,8 +217,14 @@ namespace AppInstaller::Settings return value; } - std::optional<SettingMapping<Setting::EFImportExport>::value_t> - SettingMapping<Setting::EFImportExport>::Validate(const SettingMapping<Setting::EFImportExport>::json_t& value) + std::optional<SettingMapping<Setting::EFImport>::value_t> + SettingMapping<Setting::EFImport>::Validate(const SettingMapping<Setting::EFImport>::json_t& value) + { + return value; + } + + std::optional<SettingMapping<Setting::EFExport>::value_t> + SettingMapping<Setting::EFExport>::Validate(const SettingMapping<Setting::EFExport>::json_t& value) { return value; }