build/scripts/ReposTooling.fs (47 lines of code) (raw):
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
namespace Scripts
open System
open System.IO
open Fake.IO
open Commandline
module ReposTooling =
let LaunchCluster args =
let clusterName = Option.defaultValue "" <| match args.CommandArguments with | Cluster c -> Some c.Name | _ -> None
let clusterVersion = Option.defaultValue "" <|match args.CommandArguments with | Cluster c -> c.Version | _ -> None
let testsProjectDirectory = Path.GetFullPath(Paths.InplaceBuildTestOutput "Tests.ClusterLauncher" "net6.0")
let tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
printfn "%s" testsProjectDirectory
Shell.copyDir tempDir testsProjectDirectory (fun _ -> true)
let command = sprintf "%s %s" clusterName clusterVersion
let timeout = TimeSpan.FromMinutes(120.)
let dll = Path.Combine(tempDir, "Tests.ClusterLauncher.dll");
Tooling.DotNet.ExecInWithTimeout tempDir [dll; command] timeout |> ignore
Shell.deleteDir tempDir
let GenerateApi args =
let branch = match args.CommandArguments with | CodeGen a -> a.Branch | _ -> raise <| Exception("Branch is required")
let folder = Path.getDirectory (Paths.ProjFile "ApiGenerator")
let timeout = TimeSpan.FromMinutes(120.)
Tooling.DotNet.ExecInWithTimeout folder
(["run"; "-c"; " Release"; "--"; "--branch"; branch; "--download"] @ args.RemainingArguments) timeout
|> ignore
let RestSpecTests args =
let folder = Path.getDirectory (Paths.TestProjFile "Tests.YamlRunner")
let timeout = TimeSpan.FromMinutes(120.)
Tooling.DotNet.ExecInWithTimeout folder (["run"; "--" ] @ args) timeout |> ignore
let restoreOnce = lazy(Tooling.DotNet.Exec ["tool"; "restore"])
let private differ = "assembly-differ"
let Differ args =
restoreOnce.Force()
let args = args |> String.concat " "
let command = sprintf @"%s %s -o ../../%s" differ args Paths.BuildOutput
Tooling.DotNet.ExecIn Paths.TargetsFolder [command] |> ignore
let private assemblyRewriter = "assembly-rewriter"
let Rewriter args =
restoreOnce.Force()
Tooling.DotNet.ExecIn "." (List.append [assemblyRewriter] (List.ofSeq args)) |> ignore
let private packageValidator = "nupkg-validator"
let PackageValidator args =
restoreOnce.Force()
Tooling.DotNet.ExecIn "." (List.append [packageValidator] (List.ofSeq args)) |> ignore