CakeAPI.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.CompilerServices;
  5. using Cake.Core;
  6. using Cake.Core.IO;
  7. using Cake.Core.Diagnostics;
  8. using Cake.Core.Tooling;
  9. using Cake.Common.IO;
  10. using Cake.Common.Tools.NuGet;
  11. using Cake.Common.Tools.NuGet.Pack;
  12. using Cake.Common.Tools.MSBuild;
  13. using Cake.Common.Solution.Project;
  14. using Cake.Common.Xml;
  15. using Cake.Core.Configuration;
  16. using static Cake.Core.IO.GlobberExtensions;
  17. #if FILEHELPERS
  18. using Cake.FileHelpers;
  19. #endif
  20. #if INCUBATOR
  21. using Cake.Incubator.Project;
  22. using Cake.Incubator.GlobbingExtensions;
  23. using static Cake.Incubator.Project.ProjectParserExtensions;
  24. #endif
  25. using Cake.Common.Tools.DotNet.Pack;
  26. using Cake.Common.Tools.DotNet.Test;
  27. using Cake.Common.Tools.DotNet.Restore;
  28. using Cake.Common.Tools.DotNet;
  29. using Cake.Common.Tools.DotNet.MSBuild;
  30. using Cake.Common.Tools.NuGet.Restore;
  31. using Cake.Core.Annotations;
  32. using Cake.Common.Tools.DotNet.Build;
  33. namespace CakeScript;
  34. static class CakeAPI
  35. {
  36. private static readonly IGlobber Globber;
  37. private static readonly ICakeContext Context;
  38. static CakeAPI()
  39. {
  40. var env = new CakeEnvironment(new CakePlatform(), new CakeRuntime());
  41. var fileSystem = new FileSystem();
  42. var verbosity = Verbosity.Normal;
  43. if(Startup.HasArgument("cake-verbosity"))
  44. {
  45. verbosity = Enum.Parse<Verbosity>(Startup.Argument("cake-verbosity"));
  46. }
  47. var cakeLog = new CakeBuildLog(new CakeConsole(env), verbosity);
  48. var cakeConfiguration = new CakeConfiguration(new Dictionary<string, string>());
  49. var toolRepos = new ToolRepository(env);
  50. Globber = new Globber(fileSystem, env);
  51. var cakeDataService = new CakeDataService();
  52. var registry = new WindowsRegistry();
  53. var toolLocator = new ToolLocator(env, toolRepos, new ToolResolutionStrategy(fileSystem, env, Globber, cakeConfiguration, cakeLog));
  54. var cakeArgs = new CakeArguments(new List<string>().ToLookup(x => x));
  55. var procRunner = new ProcessRunner(fileSystem, env, cakeLog, toolLocator, cakeConfiguration);
  56. Context = new CakeContext(fileSystem, env, Globber, cakeLog, cakeArgs, procRunner, registry, toolLocator, cakeDataService, cakeConfiguration);
  57. }
  58. public static void MSBuild(FilePath solution, Action<MSBuildSettings> configurator)
  59. => Context.MSBuild(solution, configurator);
  60. public static void MSBuild(FilePath solution, MSBuildSettings settings)
  61. => Context.MSBuild(solution, settings);
  62. public static void DotNetClean(string project)
  63. => Context.DotNetClean(project);
  64. public static void DotNetRestore(string project)
  65. => Context.DotNetRestore(project);
  66. public static void DotNetRestore(string root, DotNetRestoreSettings settings)
  67. => Context.DotNetRestore(root, settings);
  68. public static void DotNetPack(string project, DotNetPackSettings packSettings)
  69. => Context.DotNetPack(project, packSettings);
  70. public static void DotNetBuild(string project, DotNetBuildSettings settings)
  71. => Context.DotNetBuild(project, settings);
  72. public static void DotNetMSBuild(string projectOrDirectory, DotNetMSBuildSettings settings)
  73. => Context.DotNetMSBuild(projectOrDirectory, settings);
  74. public static void DotNetTest(string project, DotNetTestSettings settings)
  75. => Context.DotNetTest(project, settings);
  76. public static void NuGetPack(NuGetPackSettings settings)
  77. => Context.NuGetPack(settings);
  78. public static void NuGetPack(FilePath filePath, NuGetPackSettings settings)
  79. => Context.NuGetPack(filePath, settings);
  80. public static void NuGetRestore(FilePath targetFilePath)
  81. => Context.NuGetRestore(targetFilePath);
  82. public static bool DirectoryExists(DirectoryPath path)
  83. => Context.DirectoryExists(path);
  84. public static void CreateDirectory(DirectoryPath path)
  85. => Context.CreateDirectory(path);
  86. public static void DeleteFiles(GlobPattern pattern)
  87. => Context.DeleteFiles(pattern);
  88. public static void DeleteDirectory(DirectoryPath path, DeleteDirectorySettings settings)
  89. => Context.DeleteDirectory(path, settings);
  90. #if INCUBATOR
  91. public static CustomProjectParserResult ParseProject(FilePath project, string configuration)
  92. => Context.ParseProject(project, configuration);
  93. public static CustomProjectParserResult ParseProject(FilePath project, string configuration, string platform)
  94. => Context.ParseProject(project, configuration, platform);
  95. #endif
  96. public static void CopyFiles(GlobPattern pattern, DirectoryPath targetDirectoryPath)
  97. => Context.CopyFiles(pattern, targetDirectoryPath);
  98. public static void CopyFiles(GlobPattern pattern, DirectoryPath targetDirectoryPath, bool preserveFolderStructure)
  99. => Context.CopyFiles(pattern, targetDirectoryPath, preserveFolderStructure);
  100. public static void MoveFile(FilePath filePath, FilePath targetFilePath)
  101. => Context.MoveFile(filePath, targetFilePath);
  102. public static void MoveFileToDirectory(FilePath filePath, DirectoryPath targetDirectoryPath)
  103. => Context.MoveFileToDirectory(filePath, targetDirectoryPath);
  104. public static void MoveFiles(GlobPattern pattern, DirectoryPath targetDirectoryPath)
  105. => Context.MoveFiles(pattern, targetDirectoryPath);
  106. public static IEnumerable<FilePath> GetFiles(string pattern)
  107. => Globber.GetFiles(pattern);
  108. public static IEnumerable<FilePath> GetFiles(GlobPattern pattern)
  109. => Globber.GetFiles(pattern);
  110. #if INCUBATOR
  111. public static FilePathCollection GetFiles(string[] patterns)
  112. => Context.GetFiles(patterns);
  113. #endif
  114. public static string XmlPeek(FilePath filePath, string xpath)
  115. => Context.XmlPeek(filePath, xpath);
  116. #if FILEHELPERS
  117. public static FilePath[] ReplaceRegexInFiles(string globberPattern, string rxFindPattern, string replaceText)
  118. => Context.ReplaceRegexInFiles(globberPattern, rxFindPattern, replaceText);
  119. public static FilePath[] ReplaceTextInFiles(string globberPattern, string findText, string replaceText)
  120. => Context.ReplaceTextInFiles(globberPattern, findText, replaceText);
  121. #endif
  122. }