diff --git a/app/MindWork AI Studio/build.nu b/app/MindWork AI Studio/build.nu index 375f1ed..e725a34 100755 --- a/app/MindWork AI Studio/build.nu +++ b/app/MindWork AI Studio/build.nu @@ -1,42 +1,57 @@ #!/usr/bin/env nu -build +def main [] {} -def build [] { +def are_assets_exist [rid: string]: string -> bool { + $"bin/release/net8.0/($rid)/publish/wwwroot/_content/MudBlazor/MudBlazor.min.css" | path exists +} + +def "main fix_web_assets" []: nothing -> nothing { + + # Get the matching RIDs for the current OS: + let rids = get_rids + + # We chose the first RID to copy the assets from: + let rid = $rids.0 + + if (are_assets_exist $rid) == false { + print $"Web assets do not exist for ($rid). Please build the project first." + return + } + + # Ensure, that the dist directory exists: + mkdir wwwroot/system + + # Copy the web assets from the first RID to the source project: + let source_path: glob = $"bin/release/net8.0/($rid)/publish/wwwroot/_content/*" + cp --recursive --force --update $source_path wwwroot/system/ +} + +def "main publish" []: nothing -> nothing { # Ensure, that the dist directory exists: mkdir bin/dist - - # Define the list of RIDs to build for, cf. https://learn.microsoft.com/en-us/dotnet/core/rid-catalog: - let rids = ["win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-arm64", "osx-x64"] - # Get the current OS: - let current_os = (sys).host.name | str downcase - let current_os_dotnet = match $current_os { - "windows" => "win-", - "linux" => "linux-", - "darwin" => "osx-", - - _ => { - print $"Unsupported OS: ($current_os)" - return - } + # Get the matching RIDs for the current OS: + let rids = get_rids + + if ($rids | length) == 0 { + print "No RIDs to build for." + return } + let current_os = get_os let published_filename_dotnet = match $current_os { "windows" => "mindworkAIStudio.exe", _ => "mindworkAIStudio" } - # Filter the RIDs to build for the current OS: - let rids = $rids | where $it =~ $current_os_dotnet - # Build for each RID: for rid in $rids { print "==============================" print $"Start building for ($rid)..." - ^dotnet publish -c release -r $rid + ^dotnet publish --configuration release --runtime $rid let final_filename = match $rid { "win-x64" => "mindworkAIStudio-x86_64-pc-windows-msvc.exe", @@ -67,4 +82,32 @@ def build [] { } print "==============================" +} + +def get_rids []: nothing -> list { + # Define the list of RIDs to build for, cf. https://learn.microsoft.com/en-us/dotnet/core/rid-catalog: + let rids = ["win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-arm64", "osx-x64"] + + # Get the current OS: + let current_os = get_os + let current_os_dotnet = match $current_os { + "windows" => "win-", + "linux" => "linux-", + "darwin" => "osx-", + + _ => { + print $"Unsupported OS: ($current_os)" + return + } + } + + # Filter the RIDs to build for the current OS: + let rids = $rids | where $it =~ $current_os_dotnet + + # Return the list of RIDs to build for: + $rids +} + +def get_os []: nothing -> string { + (sys).host.name | str downcase } \ No newline at end of file