Content/scripts/unicorn/unicorn.cake (52 lines of code) (raw):

#addin "Cake.Powershell&version=0.4.8" Func<string, string, string> getUnicornSecret = (unicornConfigPath, unicornSecret) => { if (string.IsNullOrEmpty(unicornSecret)) { if (FileExists(unicornConfigPath)) { return XmlPeek( unicornConfigPath, "//configuration/sitecore/unicorn/authenticationProvider/SharedSecret" ); } return null; } else { return unicornSecret; } }; Func<string, string> getSiteUrlFromPublishSettings = (srcRoot) => { var file = $"{srcRoot}/publishsettings.targets"; if (FileExists(file)) { return XmlPeek( $"{srcRoot}/publishsettings.targets", "//*[local-name() = 'publishUrl']" ); } return null; }; Action<string, string, string, string, string> runUnicornSync = (siteUrl, secret, scriptDir, configurations, basicAuth) => { var url = $"{siteUrl.Trim('/')}/unicorn.aspx"; StartPowershellFile( $"{scriptDir}/Sync.ps1", new PowershellSettings() .WithArguments(args => { args.Append("url", url).AppendSecret("secret", secret); if (!string.IsNullOrEmpty(scriptDir)) { args.Append("scriptDir", scriptDir); } if (!string.IsNullOrEmpty(configurations)) { args.Append("Configurations", configurations); } if (!string.IsNullOrEmpty(basicAuth)) { args.AppendSecret("basicAuth", basicAuth); } }) ); };