sample/build.cake (109 lines of code) (raw):
// //////////////////////////////////////////////////
// Dependencies
// //////////////////////////////////////////////////
#tool nuget:?package=Cake.Sitecore
#load nuget:?package=Cake.Sitecore
using System;
using System.Text.RegularExpressions
// //////////////////////////////////////////////////
// Arguments
// //////////////////////////////////////////////////
var Target = ArgumentOrEnvironmentVariable("target", "", "Default");
// //////////////////////////////////////////////////
// Prepare
// //////////////////////////////////////////////////
Sitecore.Constants.SetNames();
Sitecore.Parameters.InitParams(
context: Context,
msBuildToolVersion: MSBuildToolVersion.Default,
solutionName: "Habitat",
scSiteUrl: "https://sc9.local",
rootDir: "./",
libsDir: "./lib",
srcDir: "./src",
solutionFilePath: "./Habitat.sln",
unicornConfigPath: "./src/Foundation/Serialization/code/App_Config/Include/Unicorn.SharedSecret.config",
xUnitTestsRunInParallel: "None"
);
// //////////////////////////////////////////////////
// Tasks
// //////////////////////////////////////////////////
Task("Helix")
.Does(() => {
var line1 = "The Habitat source code, tools and processes are examples of Sitecore Helix.";
var line2 = "Habitat is not supported by Sitecore and should be used at your own risk.";
Warning("O---o _____ _ _ _ _ _ _ ");
Warning(" O-o / ___(_) | | | | | | (_) ");
Warning(" O \\ `--. _| |_ ___ ___ ___ _ __ ___ | |_| | ___| |___ __");
Warning(" o-O `--. \\ | __/ _ \\/ __/ _ \\| '__/ _ \\ | _ |/ _ \\ | \\ \\/ /");
Warning("o---O /\\__/ / | || __/ (_| (_) | | | __/ | | | | __/ | |> < ");
Warning("O---o \\____/|_|\\__\\___|\\___\\___/|_| \\___| \\_| |_/\\___|_|_/_/\\_\\");
Warning(" O-o ");
Warning(" O -------------------- helix.sitecore.net ------------------");
Warning(" o-O ");
Warning("o---O " + line1);
Warning("O---o " + line2);
Warning(" O-o ");
Warning(" O ----------------------------------------------------------");
Warning(" o-O ");
Warning("o---O ");
})
.IsDependentOn(Sitecore.Tasks.CleanWildcardFoldersTaskName)
.IsDependentOn(Sitecore.Tasks.ConfigureToolsTaskName)
;
Task("Copy-Sitecore-License")
.Does(() => {
Warning("Please, put Sitecore license in ./lib manually");
})
;
Task("Copy-Sitecore-Lib")
.Does(() => {
Warning("Please, put Sitecore dlls in ./lib/Sitecore manually");
})
;
Task("Restore")
.IsDependentOn(Sitecore.Tasks.RestoreNuGetPackagesTask)
.IsDependentOn(Sitecore.Tasks.RestoreNpmPackagesTaskName)
;
Task("Publish-All-Projects")
.IsDependentOn(Sitecore.Tasks.PublishFoundationTaskName)
.IsDependentOn(Sitecore.Tasks.PublishFeatureTaskName)
.IsDependentOn(Sitecore.Tasks.PublishProjectTaskName)
;
Task("Apply-Xml-Transform")
.Does(() => {
// Equivalent of gulp "Apply-Xml-Transform"
Func<IFileSystemInfo, bool> exclude_bin_obj =
fileSystemInfo => !fileSystemInfo.Path.FullPath.Contains("/bin/")
&& !fileSystemInfo.Path.FullPath.Contains("/obj/");
var _files = new List<FilePath>();
_files.AddRange(GetFiles($"{Sitecore.Parameters.SrcDir}/Foundation/**/*.xdt", exclude_bin_obj));
_files.AddRange(GetFiles($"{Sitecore.Parameters.SrcDir}/Feature/**/*.xdt", exclude_bin_obj));
_files.AddRange(GetFiles($"{Sitecore.Parameters.SrcDir}/Project/**/*.xdt", exclude_bin_obj));
foreach(var _file in _files){
Verbose($"Found file: {_file.ToString()}");
var rgx = new Regex(".+code/(.+)\\.xdt");
var _fileToTransform = rgx.Replace(_file.ToString(), "$1");
Verbose($"Applying configuration transform: {_fileToTransform}");
var _settings = new MSBuildSettings()
.SetConfiguration(Sitecore.Parameters.BuildConfiguration)
.SetVerbosity(Verbosity.Minimal)
.UseToolVersion(Sitecore.Parameters.MsBuildToolVersion)
.WithTarget("ApplyTransform")
.WithProperty("WebConfigToTransform", Sitecore.Parameters.PublishingTargetDir)
.WithProperty("TransformFile", _file.ToString())
.WithProperty("FileToTransform", _fileToTransform);
MSBuild($"{Sitecore.Parameters.RootDir}/scripts/applytransform.targets", _settings);
}
})
;
Task("Sync-Unicorn")
.IsDependentOn(Sitecore.Tasks.SyncAllUnicornItemsName)
;
Task("Publish-Transforms")
.Does(() => {
// Equivalent of gulp "Publish-Transforms"
EnsureDirectoryExists($"{Sitecore.Parameters.PublishingTargetDir}/temp/transforms");
CopyFiles($"{Sitecore.Parameters.SrcDir}/**/code/**/*.xdt", $"{Sitecore.Parameters.PublishingTargetDir}/temp/transforms");
})
;
// //////////////////////////////////////////////////
// Targets
// //////////////////////////////////////////////////
Task("Default") // LocalDev
.IsDependentOn("Helix")
.IsDependentOn("Copy-Sitecore-License")
.IsDependentOn("Copy-Sitecore-Lib")
.IsDependentOn("Restore")
.IsDependentOn("Publish-All-Projects")
.IsDependentOn("Apply-Xml-Transform")
.IsDependentOn("Sync-Unicorn")
.IsDependentOn("Publish-Transforms")
;
// //////////////////////////////////////////////////
// Execution
// //////////////////////////////////////////////////
RunTarget(Target);