From 0eb7659d80aa5294a34656bffa9a6494b811c78d Mon Sep 17 00:00:00 2001 From: Jimmy Byrd Date: Mon, 4 Mar 2024 09:27:28 -0500 Subject: [PATCH] Add dotenv --- .gitignore | 3 +++ build/DotEnv.fs | 21 +++++++++++++++++++++ build/build.fs | 40 ++++++++++++++++++++++++---------------- build/build.fsproj | 1 + 4 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 build/DotEnv.fs diff --git a/.gitignore b/.gitignore index a59cb5e..764be2b 100644 --- a/.gitignore +++ b/.gitignore @@ -271,3 +271,6 @@ coverage.*.xml .ionide docs/coverage + +# Environment file +.env diff --git a/build/DotEnv.fs b/build/DotEnv.fs new file mode 100644 index 0000000..767b114 --- /dev/null +++ b/build/DotEnv.fs @@ -0,0 +1,21 @@ +namespace BuildHelper + +module DotEnv = + open Fake.Core + open System + open System.IO + + let private parseLine (line: string) = + match line.Split('=', StringSplitOptions.RemoveEmptyEntries) with + | args when args.Length = 2 -> Environment.SetEnvironmentVariable(args.[0], args.[1]) + | _ -> () + + let load (rootDir) = + let filePath = Path.Combine(rootDir, ".env") + + if File.Exists filePath then + filePath + |> File.ReadAllLines + |> Seq.iter parseLine + else + Trace.traceImportantfn "No .env file found. %s" rootDir diff --git a/build/build.fs b/build/build.fs index 98f9378..57bb7e3 100644 --- a/build/build.fs +++ b/build/build.fs @@ -10,6 +10,7 @@ open Fake.Core.TargetOperators open Fake.Api open Fake.BuildServer open Argu +open BuildHelper let environVarAsBoolOrDefault varName defaultValue = let truthyConsts = [ @@ -30,36 +31,42 @@ let environVarAsBoolOrDefault varName defaultValue = //----------------------------------------------------------------------------- let productName = "FSharp.Control.WebSockets" -let sln = __SOURCE_DIRECTORY__ ".." "FSharp.Control.Websockets.sln" + +let rootDir = + __SOURCE_DIRECTORY__ + ".." + + +let sln = rootDir "FSharp.Control.Websockets.sln" let srcCodeGlob = - !! (__SOURCE_DIRECTORY__ ".." "src/**/*.fs") - ++ (__SOURCE_DIRECTORY__ ".." "src/**/*.fsx") - -- (__SOURCE_DIRECTORY__ ".." "src/**/obj/**/*.fs") + !! (rootDir "src/**/*.fs") + ++ (rootDir "src/**/*.fsx") + -- (rootDir "src/**/obj/**/*.fs") let testsCodeGlob = - !! (__SOURCE_DIRECTORY__ ".." "tests/**/*.fs") - ++ (__SOURCE_DIRECTORY__ ".." "tests/**/*.fsx") - -- (__SOURCE_DIRECTORY__ ".." "tests/**/obj/**/*.fs") + !! (rootDir "tests/**/*.fs") + ++ (rootDir "tests/**/*.fsx") + -- (rootDir "tests/**/obj/**/*.fs") -let srcGlob =__SOURCE_DIRECTORY__ ".." "src/**/*.??proj" -let testsGlob = __SOURCE_DIRECTORY__ ".." "tests/**/*.??proj" +let srcGlob =rootDir "src/**/*.??proj" +let testsGlob = rootDir "tests/**/*.??proj" let srcAndTest = !! srcGlob ++ testsGlob -let distDir = __SOURCE_DIRECTORY__ ".." "dist" +let distDir = rootDir "dist" let distGlob = distDir "*.nupkg" let coverageThresholdPercent = 60 -let coverageReportDir = __SOURCE_DIRECTORY__ ".." "docs" "coverage" +let coverageReportDir = rootDir "docs" "coverage" -let docsDir = __SOURCE_DIRECTORY__ ".." "docs" -let docsSrcDir = __SOURCE_DIRECTORY__ ".." "docsSrc" -let docsToolDir = __SOURCE_DIRECTORY__ ".." "docsTool" +let docsDir = rootDir "docs" +let docsSrcDir = rootDir "docsSrc" +let docsToolDir = rootDir "docsTool" let gitOwner = "TheAngryByrd" let gitRepoName = "FSharp.Control.WebSockets" @@ -70,7 +77,7 @@ let releaseBranch = "master" let tagFromVersionNumber versionNumber = sprintf "v%s" versionNumber -let changelogFilename = __SOURCE_DIRECTORY__ ".." "CHANGELOG.md" +let changelogFilename = rootDir "CHANGELOG.md" let changelog = Fake.Core.Changelog.load changelogFilename let mutable latestEntry = if Seq.isEmpty changelog.Entries @@ -404,7 +411,7 @@ let fsharpAnalyzers _ = |> Seq.iter(fun proj -> let args = [ - FSharpAnalyzers.Analyzers_Path (__SOURCE_DIRECTORY__ ".." "packages/analyzers") + FSharpAnalyzers.Analyzers_Path (rootDir "packages/analyzers") FSharpAnalyzers.Arguments.Project proj FSharpAnalyzers.Arguments.Fail_On_Warnings [ "BDH0002" @@ -647,6 +654,7 @@ let releaseDocs ctx = let initTargets () = + DotEnv.load rootDir BuildServer.install [ GitHubActions.Installer ] diff --git a/build/build.fsproj b/build/build.fsproj index 1f50f0b..269b10b 100644 --- a/build/build.fsproj +++ b/build/build.fsproj @@ -9,6 +9,7 @@ +