public async Task InstallSdk(VirtualFile packedSdk, VirtualDirectory destination, ChangeObservable observable, bool force) { using (IEditableSettings editableSettings = settingsProvider.StartSettingTransaction()) { if (!force && destination.Files(searchRecursive: true).Any()) { throw new FileExistsException(destination.FullName); } using (IProgressNotifier progressNotifier = Console.IsInputRedirected || Console.IsOutputRedirected ? null : progressVisualizer.Spawn(1, "Install SDK.", null)) { await fileUnpackService.Unpack(packedSdk, destination, progressNotifier, observable).ConfigureAwait(false); } editableSettings.AddSetting(Constants.SdkPathsKey, $"{destination.FullName}"); } }
protected override int Execute(SetSettingsCommandArgs args, ChangeObservable observable) { using (IEditableSettings editableSettings = settingsProvider.StartSettingTransaction()) { if (args.Add) { editableSettings.AddSetting(args.Key, args.Value); } else if (args.Clear) { editableSettings.ClearSetting(args.Key); } else if (args.Remove) { editableSettings.RemoveSetting(args.Key, args.Value); } else { editableSettings.SetSetting(args.Key, args.Value); } } return(0); }