fix: Add bun to devcontainer and format .build

This commit is contained in:
Moritz Jörg
2025-07-06 10:02:43 +02:00
parent 11f6c6b30c
commit e80f77b7d4
3 changed files with 37 additions and 47 deletions

View File

@@ -5,68 +5,53 @@ open Farmer.Builders
open Helpers
initializeContext()
initializeContext ()
let srcPath = Path.getFullName "src"
let srcPath = Path.getFullName "src"
let testPath = Path.getFullName "test"
let libPath = None
let libPath = None
let distPath = Path.getFullName "dist"
let packPath = Path.getFullName "packages"
let distPath = Path.getFullName "dist"
let packPath = Path.getFullName "packages"
let versionFile = Path.getFullName ".version"
Target.create "Clean" (fun _ -> Shell.cleanDir distPath)
Target.create "InstallClient" (fun _ ->
run npm "install" "."
run dotnet "tool restore" "."
)
run bun "install" "."
run dotnet "tool restore" ".")
Target.create "Bundle" (fun _ ->
run dotnet $"publish -c Release -o {distPath}" srcPath
)
Target.create "Bundle" (fun _ -> run dotnet $"publish -c Release -o {distPath}" srcPath)
Target.create "BundleDebug" (fun _ ->
run dotnet $"publish -c Debug -o {distPath}" srcPath
)
Target.create "BundleDebug" (fun _ -> run dotnet $"publish -c Debug -o {distPath}" srcPath)
Target.create "Pack" (fun _ ->
match libPath with
| Some p -> run dotnet $"pack -c Release -o {packPath}" p
| None -> ()
)
| None -> ())
Target.create "Run" (fun _ -> run dotnet "watch run" srcPath)
Target.create "Format" (fun _ ->
run dotnet "fantomas . -r" "src"
)
Target.create "Format" (fun _ -> run dotnet "fantomas . -r" "src")
Target.create "Test" (fun _ ->
if System.IO.Directory.Exists testPath then
run dotnet "run" testPath
else ()
)
else
())
open Fake.Core.TargetOperators
let dependencies = [
"Clean"
==> "InstallClient"
==> "Bundle"
"Clean" ==> "InstallClient" ==> "Bundle"
"Clean"
==> "BundleDebug"
"Clean" ==> "BundleDebug"
"Clean"
==> "Test"
"Clean" ==> "Test"
"Clean"
==> "InstallClient"
==> "Run"
"Clean" ==> "InstallClient" ==> "Run"
"Clean"
==> "Pack"
"Clean" ==> "Pack"
]
[<EntryPoint>]

View File

@@ -72,16 +72,16 @@ let createProcess exe arg dir =
|> CreateProcess.ensureExitCode
let dotnet = createProcess "dotnet"
let npm =
let npmPath =
match ProcessUtils.tryFindFileOnPath "npm" with
let bun =
let bunPath =
match ProcessUtils.tryFindFileOnPath "bun" with
| Some path -> path
| None ->
"npm was not found in path. Please install it and make sure it's available from your path. " +
"bun was not found in path. Please install it and make sure it's available from your path. " +
"See https://safe-stack.github.io/docs/quickstart/#install-pre-requisites for more info"
|> failwith
createProcess npmPath
createProcess bunPath
let run proc arg dir =
proc arg dir

View File

@@ -1,15 +1,20 @@
FROM mcr.microsoft.com/dotnet/sdk:9.0
# Add keys and sources lists
RUN apt-get update && apt-get install -y ca-certificates gnupg
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
ENV NODE_MAJOR=20
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
# Bun version
ARG BUN_INSTALL=/usr/local
ARG BUN_VERSION=bun-v1.2.16
# Install node, 7zip, yarn, git, process tools
RUN apt-get update \
&& apt-get install -y nodejs p7zip-full git procps ssh-client libsqlite3-dev gcc-multilib libnetcdf19 libnetcdf-dev
&& apt-get install -y p7zip-full git procps ssh-client unzip libsqlite3-dev gcc-multilib libnetcdf19 libnetcdf-dev
# Install Bun
RUN set -eux; \
curl -fsSL https://bun.sh/install > /usr/local/bin/install-bun \
&& chmod +x /usr/local/bin/install-bun \
&& /usr/local/bin/install-bun $BUN_VERSION debug-info
ENV BUN_INSTALL=/usr/local
# Clean up
RUN apt-get autoremove -y \
@@ -19,9 +24,9 @@ RUN apt-get autoremove -y \
# Trouble brewing
RUN rm /etc/ssl/openssl.cnf
# add dotnet tools to path to pick up fake and paket installation
# Add dotnet tools to path to pick up fake and paket installation
ENV PATH="/root/.dotnet/tools:${PATH}"
# Copy endpoint specific user settings into container to specify
# .NET Core should be used as the runtime.
COPY settings.vscode.json /root/.vscode-remote/data/Machine/settings.json
COPY settings.vscode.json /root/.vscode-remote/data/Machine/settings.json