2020-05-15 - Web.config transforms
(original .ipynb)
Update: I ended up writing my own version of a Web/App.config transform tool that does what I want: tpt
I found myself having to mess around with a lot of Web.config transforms recently, I was using ctt to check they worked as expected. I don't really like the tool though - the command line parameters are weird (PS> ctt s:"Web.config" t:"Web.Production.config" d:"test.config" pw
- that {switch}:"value"
format instead of --switch=value
is weird) and I dislike that destination:
is a mandatory param and that I can't just omit it to cause the transformed output to print to stdout.
The second issue is easy to fix - I can change ctt
to do what I want by applying the following quick-n-hacky diff:
diff --git a/source/ConfigTransformationTool/ArgumentsLoader.cs b/source/ConfigTransformationTool/ArgumentsLoader.cs index 3009413..275dc8d 100644 --- a/source/ConfigTransformationTool/ArgumentsLoader.cs +++ b/source/ConfigTransformationTool/ArgumentsLoader.cs @@ -12,9 +12,13 @@ namespace OpenSource.ConfigTransformationTool { get { + /* return !string.IsNullOrWhiteSpace(SourceFilePath) && !string.IsNullOrWhiteSpace(TransformFilePath) && !string.IsNullOrWhiteSpace(DestinationFilePath); + */ + return !string.IsNullOrWhiteSpace(SourceFilePath) + && !string.IsNullOrWhiteSpace(TransformFilePath); } } diff --git a/source/ConfigTransformationTool/TransformationTask.cs b/source/ConfigTransformationTool/TransformationTask.cs index 2f40aaa..fb84f1f 100644 --- a/source/ConfigTransformationTool/TransformationTask.cs +++ b/source/ConfigTransformationTool/TransformationTask.cs @@ -110,12 +110,12 @@ namespace OpenSource.ConfigTransformationTool ///Return true if transformation finish successfully, otherwise false. public bool Execute(string destinationFilePath, bool forceParametersTask = false) { - if (string.IsNullOrWhiteSpace(destinationFilePath)) - { - throw new ArgumentException("Destination file can't be empty.", "destinationFilePath"); - } + //if (string.IsNullOrWhiteSpace(destinationFilePath)) + //{ + // throw new ArgumentException("Destination file can't be empty.", "destinationFilePath"); + //} - _log.WriteLine("Start tranformation to '{0}'.", destinationFilePath); + //_log.WriteLine("Start tranformation to '{0}'.", destinationFilePath); if (string.IsNullOrWhiteSpace(SourceFilePath) || !File.Exists(SourceFilePath)) { @@ -180,7 +180,15 @@ namespace OpenSource.ConfigTransformationTool outerXml = outerXml.Replace(" ", "\r").Replace(" ", "\n"); } - File.WriteAllText(destinationFilePath, outerXml, encoding); + if (string.IsNullOrEmpty(destinationFilePath)) + { + Console.Write(outerXml); + } + else + { + File.WriteAllText(destinationFilePath, outerXml, encoding); + } return result; }
I could submit a PR but really I wouldn't mind just writing my own from scratch that does exactly what I want.