Skip to content

Instantly share code, notes, and snippets.

@dcomartin
Created July 28, 2017 01:28
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save dcomartin/3ae493a3f6eadb6bd8e517bf33ba0a16 to your computer and use it in GitHub Desktop.
using System;
using System.Xml;
using Cake.Core;
using Cake.Core.Annotations;
using Cake.Core.Diagnostics;
namespace Cake.AppSettingReplacer
{
public static class Replacer
{
[CakeMethodAlias]
public static void ReplaceAppSetting(this ICakeContext context, string filename, string key, string newValue)
{
var xml = new XmlDocument();
xml.Load(filename);
var node = xml.SelectSingleNode($"/configuration/appSettings/add[@key='{key}']");
if (node == null)
{
throw new InvalidOperationException($"ApplicationSetting Key ({key}) does not exist.");
}
var valueAttribute = node.Attributes["value"];
if (valueAttribute == null)
{
valueAttribute = xml.CreateAttribute("value");
node.Attributes.SetNamedItem(valueAttribute);
}
valueAttribute.Value = newValue;
xml.Save(filename);
context.Log.Write(Verbosity.Normal, LogLevel.Debug, $"Replacing {filename} appSetting key={key} with value={newValue}");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment