DotNetBuildSettings SonarBuildAll(DotNetBuildSettings settings) => settings .SetProjectFile(SonarSolutionFile) .SetNoRestore(true) .SetConfiguration(Debug) .SetProcessWorkingDirectory(RootDirectory);
public static int Main(string[] args) => BuildRunner.Execute(args, build => { var codegen = "fsdgenpython"; var dotNetBuildSettings = new DotNetBuildSettings { NuGetApiKey = Environment.GetEnvironmentVariable("NUGET_API_KEY"), DocsSettings = new DotNetDocsSettings { GitLogin = new GitLoginInfo("FacilityApiBot", Environment.GetEnvironmentVariable("BUILD_BOT_PASSWORD") ?? ""), GitAuthor = new GitAuthorInfo("FacilityApiBot", "*****@*****.**"), SourceCodeUrl = "https://github.com/FacilityApi/FacilityPython/tree/master/src", ProjectHasDocs = name => !name.StartsWith("fsdgen", StringComparison.Ordinal), }, Verbosity = DotNetBuildVerbosity.Minimal, CleanSettings = new DotNetCleanSettings { FindDirectoriesToDelete = () => s_directoriesToDelete, }, }; build.AddDotNetTargets(dotNetBuildSettings); build.Target("codegen") .DependsOn("build") .Describe("Generates code from the FSD") .Does(() => CodeGen(verify: false)); build.Target("verify-codegen") .DependsOn("build") .Describe("Ensures the generated code is up-to-date") .Does(() => CodeGen(verify: true)); build.Target("test") .DependsOn("verify-codegen"); build.Target("pip") .DependsOn("clean") .DependsOn("verify-codegen") .Describe("Creates a pip package") .Does(() => CreatePipPackage()); build.Target("pip-publish") .DependsOn("pip") .Describe("Publishes a pip package") .Does(() => PublishPipPackage()); build.Target("try-pip-publish") .DependsOn("pip") .Describe("Publishes a pip package. Ignores failure.") .Does(() => PublishPipPackage(ignoreFailure: true)); void CodeGen(bool verify) { var configuration = dotNetBuildSettings !.BuildOptions !.ConfigurationOption !.Value; var toolPath = FindFiles($"src/{codegen}/bin/{configuration}/netcoreapp3.1/{codegen}.dll").FirstOrDefault(); var verifyOption = verify ? "--verify" : null; RunDotNet("tool", "restore"); RunDotNet("tool", "run", "FacilityConformance", "fsd", "--output", "conformance/ConformanceApi.fsd", verifyOption); RunDotNet(toolPath, "conformance/ConformanceApi.fsd", "conformance/", "--newline", "lf", verifyOption); }
public static DotNetBuildSettings SetTargetPlatform(this DotNetBuildSettings settings, MSBuildTargetPlatform platform) { return(platform is null ? settings : settings.SetProperty("Platform", GetTargetPlatform(platform))); }
DotNetBuildSettings WithGitVersion(DotNetBuildSettings settings) => GitVersion == null ? settings : settings .SetAssemblyVersion(GitVersion.AssemblySemVer) .SetFileVersion(GitVersion.AssemblySemFileVer) .SetInformationalVersion(GitVersion.InformationalVersion);
public static DotNetBuildSettings SetTargetPlatformAnyCPU(this DotNetBuildSettings settings) => settings.SetTargetPlatform(MSBuildTargetPlatform.MSIL);
private static void GenerateDocs(DotNetBuildSettings dotNetBuildSettings, bool verify) { var configuration = dotNetBuildSettings.BuildOptions.ConfigurationOption.Value; var projects = new[]
public static DotNetBuildSettings SetContinuousIntegrationBuild(this DotNetBuildSettings settings, bool value) => settings.SetProcessArgumentConfigurator(a => a.Add($"/p:ContinuousIntegrationBuild={value.ToString().ToLower()}"));
public static int Main(string[] args) => BuildRunner.Execute(args, build => { var conformanceVersion = "2.0.2"; var codegen = "fsdgenaspnet"; var dotNetTools = new DotNetTools(Path.Combine("tools", "bin")).AddSource(Path.Combine("tools", "bin")); var dotNetBuildSettings = new DotNetBuildSettings { NuGetApiKey = Environment.GetEnvironmentVariable("NUGET_API_KEY"), DocsSettings = new DotNetDocsSettings { GitLogin = new GitLoginInfo("FacilityApiBot", Environment.GetEnvironmentVariable("BUILD_BOT_PASSWORD") ?? ""), GitAuthor = new GitAuthorInfo("FacilityApiBot", "*****@*****.**"), GitBranchName = Environment.GetEnvironmentVariable("APPVEYOR_REPO_BRANCH"), SourceCodeUrl = "https://github.com/FacilityApi/FacilityAspNet/tree/master/src", ProjectHasDocs = name => !name.StartsWith("fsdgen", StringComparison.Ordinal), }, DotNetTools = dotNetTools, SourceLinkSettings = new SourceLinkSettings { ShouldTestPackage = name => !name.StartsWith("fsdgen", StringComparison.Ordinal), }, }; build.AddDotNetTargets(dotNetBuildSettings); build.Target("codegen") .DependsOn("build") .Describe("Generates code from the FSD") .Does(() => codeGen(verify: false)); build.Target("verify-codegen") .DependsOn("build") .Describe("Ensures the generated code is up-to-date") .Does(() => codeGen(verify: true)); build.Target("test") .DependsOn("verify-codegen"); void codeGen(bool verify) { string verifyOption = verify ? "--verify" : null; var conformanceToolPath = dotNetTools.GetToolPath($"FacilityConformance/{conformanceVersion}"); RunApp(conformanceToolPath, "fsd", "--output", "conformance/ConformanceApi.fsd", verifyOption); RunApp(conformanceToolPath, "json", "--output", "conformance/ConformanceTests.json", verifyOption); string configuration = dotNetBuildSettings.BuildOptions.ConfigurationOption.Value; string versionSuffix = $"cg{DateTime.UtcNow:yyyyMMddHHmmss}"; RunDotNet("pack", Path.Combine("src", codegen, $"{codegen}.csproj"), "-c", configuration, "--no-build", "--output", Path.GetFullPath(Path.Combine("tools", "bin")), "--version-suffix", versionSuffix); string packagePath = FindFiles($"tools/bin/{codegen}.*-{versionSuffix}.nupkg").Single(); string packageVersion = Regex.Match(packagePath, @"[/\\][^/\\]*\.([0-9]+\.[0-9]+\.[0-9]+(-.+)?)\.nupkg$").Groups[1].Value; string codegenToolPath = dotNetTools.GetToolPath($"{codegen}/{packageVersion}"); RunApp(codegenToolPath, "conformance/ConformanceApi.fsd", "conformance/WebApiControllerServer/Controllers", "--namespace", "WebApiControllerServer.Controllers", "--newline", "lf", verifyOption); RunApp(codegenToolPath, "conformance/ConformanceApi.fsd", "conformance/CoreWebApiShimServer/Controllers", "--namespace", "CoreWebApiShimServer.Controllers", "--target", "core", "--newline", "lf", verifyOption); RunApp(codegenToolPath, "conformance/ConformanceApi.fsd", "conformance/CoreControllerServer/Controllers", "--namespace", "CoreControllerServer.Controllers", "--target", "core", "--newline", "lf", verifyOption); } });
public static DotNetBuildSettings SetMopRuntime(this DotNetBuildSettings s, string runtime) { return(string.IsNullOrEmpty(runtime) ? s : s.SetRuntime(runtime)); }