public override object GetParametersInstance() { MungeFileHandlerParameters parms = new MungeFileHandlerParameters(); parms.Files = new List <ModifyFileType>(); ModifyFileType file = new ModifyFileType(); file.Source = @"C:\Temp\file.config"; file.Destination = @"C:\Temp\file2.config"; file.Settings = new List <SettingsPair <string, string> >(); file.Settings.Add(new SettingsPair <string, string>("MyKey", "MyValue")); file.Settings.Add(new SettingsPair <string, string>("MyKey2", "MyValue2")); parms.Files.Add(file); return(parms); }
private void ProcessFile(ModifyFileType file, HandlerStartInfo startInfo) { bool createIfMissing = config.CreateSettingIfNotFound; if (file.CreateSettingIfNotFound.HasValue) { createIfMissing = file.CreateSettingIfNotFound.Value; } bool overwrite = config.OverwriteExisting; if (file.OverwriteExisting.HasValue) { overwrite = file.OverwriteExisting.Value; } ConfigType modifyType = config.Type; if (file.Type != ConfigType.None) { modifyType = file.Type; } if (config.BackupSource) { try { ZephyrFile sourceFile = Utilities.GetZephyrFile(file.Source, clients); ZephyrFile backupFile = Utilities.GetZephyrFile($"{file.Source}_{DateTime.Now.ToString("yyyyMMddHHmmss")}", clients); sourceFile.CopyTo(backupFile); } catch (Exception e) { OnLogMessage("BackupSource", $"Error When Backing Up Source File [{file.Source}].", config.StopOnError ? LogLevel.Error : LogLevel.Warn, e); if (config.StopOnError) { throw; } } } try { Stream settingsFileStream = GetSettingsFileStream(modifyType, file.SettingsFile, startInfo.Crypto); switch (modifyType) { case ConfigType.KeyValue: Munger.KeyValue(PropertyFile.Type.Java, file.Source, file.Destination, settingsFileStream, file.SettingsKvp, createIfMissing, overwrite, clients); break; case ConfigType.INI: Munger.KeyValue(PropertyFile.Type.Ini, file.Source, file.Destination, settingsFileStream, file.SettingsKvp, createIfMissing, overwrite, clients); break; case ConfigType.Regex: Munger.RegexMatch(file.Source, file.Destination, settingsFileStream, file.SettingsKvp, overwrite, clients); break; case ConfigType.XmlTransform: Munger.XMLTransform(file.Source, file.Destination, settingsFileStream, overwrite, clients); break; case ConfigType.XPath: Munger.XPath(file.Source, file.Destination, settingsFileStream, file.SettingsKvp, overwrite, clients); break; default: String message = "Unknown File Type [" + modifyType + "] Received."; OnLogMessage("ProcessFile", message); throw new Exception(message); } if (String.IsNullOrWhiteSpace(file.Destination)) { OnLogMessage("ModifyFileHandler", String.Format(@"Config Type [{0}], Modified [{1}].", modifyType, file.Source)); } else { OnLogMessage("ModifyFileHandler", String.Format(@"Config Type [{0}], Modified [{1}] to [{2}].", modifyType, file.Source, file.Destination)); } } catch (Exception e) { OnLogMessage(config.Type.ToString(), $"Error Modifying File [{file.Source}].", (config.StopOnError == true) ? LogLevel.Error : LogLevel.Warn, e); if (config.StopOnError) { throw; } } }