private bool UpdateOption( bool verbose, string dir, string option, Func <ConfigurationOption, bool> updateOption) { try { if (verbose) { Logger.EnableVerbose(); } if (!PlugInConfigurationValidation.ValidateElementName(option)) { Logger.Error( "The option name is invalid '{0}'- " + PlugInConfigurationValidation.ValidCharactersMessage, option); return(false); } string file = GetFileName(dir); using var fileStream = File.Open(file, FileMode.Open, FileAccess.ReadWrite); var logger = new BridgeLogger(); var existingConfiguration = PlugInConfigurationSerializer.ReadFromStream(fileStream, logger); if (existingConfiguration == null) { return(false); } var options = new HashSet <ConfigurationOption>(existingConfiguration.Options); var targetOption = options.FirstOrDefault(o => StringComparer.InvariantCulture.Equals(o.Name, option)); if (targetOption == null) { Logger.Error($"Option {option} was not found."); return(false); } if (!updateOption(targetOption)) { return(false); } fileStream.Position = 0; var configuration = new PlugInConfiguration( existingConfiguration.PlugInName, existingConfiguration.Version, options); PlugInConfigurationSerializer.WriteToStream(configuration, fileStream, logger); } catch (Exception e) { _parsingException = e; } return(true); }
private void ProcessesCommandDelAppFromOption( bool verbose, string dir, string option, string name) { if (!PlugInConfigurationValidation.ValidateElementName(name)) { Logger.Error( "The application name is invalid '{0}'- " + PlugInConfigurationValidation.ValidCharactersMessage, option); return; } bool result = UpdateOption( verbose, dir, option, (configurationOption) => { bool updateResult = configurationOption.DelApplication(name); if (!updateResult) { Logger.Warning("Application {0} was not deleted from option {1}", name, option); } return(updateResult); }); if (result) { Logger.Information($"Deleted application {name} to option {option}."); } }
private void ProcessesCommandDelRuntimeFromOption( bool verbose, string dir, string option, string name) { if (!PlugInConfigurationValidation.ValidateElementName(name)) { Logger.Error( "The runtime name is invalid '{0}'- " + PlugInConfigurationValidation.ValidCharactersMessage, option); return; } bool result = UpdateOption( verbose, dir, option, (configurationOption) => { bool deleted = configurationOption.DelRuntime(name); if (!deleted) { Logger.Warning("Runtime '{0}' was not removed from option {1}.", name, option); } return(deleted); }); if (result) { Logger.Information($"Deleted runtime {name} to option {option}."); } }
private void ProcessesCommandAddOption( bool verbose, string dir, string name, string description) { try { if (verbose) { Logger.EnableVerbose(); } if (!PlugInConfigurationValidation.ValidateElementName(name)) { Logger.Error( "The name is invalid '{0}'- " + PlugInConfigurationValidation.ValidCharactersMessage, name); return; } string file = GetFileName(dir); using var fileStream = File.Open(file, FileMode.Open, FileAccess.ReadWrite); var logger = new BridgeLogger(); var existingConfiguration = PlugInConfigurationSerializer.ReadFromStream(fileStream, logger); if (existingConfiguration == null) { return; } ConfigurationOption newOption = new ConfigurationOption(name, description); var options = new HashSet <ConfigurationOption>(existingConfiguration.Options); if (!options.Add(newOption)) { Logger.Error("Option {0} already exists.", name); return; } fileStream.Position = 0; var configuration = new PlugInConfiguration( existingConfiguration.PlugInName, existingConfiguration.Version, options); PlugInConfigurationSerializer.WriteToStream(configuration, fileStream, logger); Logger.Information($"Added option {name}."); } catch (Exception e) { _parsingException = e; } }