From 5d98d7fed4e69b7baaee81ba663a06e78b02857a Mon Sep 17 00:00:00 2001 From: David Maas Date: Wed, 14 May 2025 15:33:40 -0500 Subject: [PATCH 1/2] Normalize license file formatting --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index b6d4367..a0432fd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2011-2024 Bonsai Foundation CIC and Contributors +Copyright (c) Bonsai Foundation CIC and Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From ec4fa0a7ae6aead10e8c0be21c1aa3e1e4b53d3b Mon Sep 17 00:00:00 2001 From: David Maas Date: Fri, 16 May 2025 23:21:21 -0500 Subject: [PATCH 2/2] Add CI/CD and brought repository into compliance with modern standards --- .bonsai/Bonsai.config | 59 +++ .bonsai/NuGet.config | 5 + .bonsai/Setup.cmd | 4 + .bonsai/Setup.ps1 | 21 ++ .config/dotnet-tools.json | 13 + .editorconfig | 51 ++- .gitattributes | 4 +- .../workflows/Bonsai.Scripting.IronPython.yml | 344 ++++++++++++++++++ .gitignore | 10 +- .gitmodules | 3 + .../Properties/launchSettings.json | 9 - Bonsai.Scripting.IronPython.sln | 13 +- .../Properties/launchSettings.json | 9 - Directory.Build.props | 22 +- Directory.Build.targets | 3 + NuGet.config | 6 - build/Common.Tests.csproj.props | 6 + build/Common.csproj.props | 80 ++++ build/Common.csproj.targets | 46 +++ build/Package.props | 9 + build/Project.csproj.props | 5 + build/icon.png | Bin 0 -> 4224 bytes README.md => docs/README.md | 0 docs/bonsai-docfx | 1 + docs/build.ps1 | 19 + docs/docfx.json | 84 +++++ docs/export-images.ps1 | 44 +++ docs/filter.yml | 4 + docs/index.md | 5 + docs/template/public/main.css | 1 + docs/template/public/main.js | 13 + docs/toc.yml | 2 + docs/workflows/.gitignore | 2 + global.json | 6 + icon.png | Bin 6661 -> 0 bytes .../Bonsai.Scripting.IronPython.Design.csproj | 5 +- .../Properties/launchSettings.json | 10 + .../PythonScriptEditor.cs | 0 .../PythonScriptEditorDialog.Designer.cs | 0 .../PythonScriptEditorDialog.cs | 0 .../PythonScriptEditorDialog.resx | 0 .../Bonsai.Scripting.IronPython.csproj | 4 +- .../IScriptingElement.cs | 0 .../Properties/AssemblyInfo.cs | 0 .../Properties/launchSettings.json | 10 + .../PythonEngine.cs | 0 .../PythonHelper.cs | 0 .../PythonProcessor.cs | 0 .../PythonSelectMany.cs | 0 .../PythonSource.cs | 0 .../PythonTransform.cs | 0 .../ScriptingElementTypeDescriptor.cs | 0 52 files changed, 854 insertions(+), 78 deletions(-) create mode 100644 .bonsai/Bonsai.config create mode 100644 .bonsai/NuGet.config create mode 100644 .bonsai/Setup.cmd create mode 100644 .bonsai/Setup.ps1 create mode 100644 .config/dotnet-tools.json create mode 100644 .github/workflows/Bonsai.Scripting.IronPython.yml create mode 100644 .gitmodules delete mode 100644 Bonsai.Scripting.IronPython.Design/Properties/launchSettings.json delete mode 100644 Bonsai.Scripting.IronPython/Properties/launchSettings.json create mode 100644 Directory.Build.targets delete mode 100644 NuGet.config create mode 100644 build/Common.Tests.csproj.props create mode 100644 build/Common.csproj.props create mode 100644 build/Common.csproj.targets create mode 100644 build/Package.props create mode 100644 build/Project.csproj.props create mode 100644 build/icon.png rename README.md => docs/README.md (100%) create mode 160000 docs/bonsai-docfx create mode 100644 docs/build.ps1 create mode 100644 docs/docfx.json create mode 100644 docs/export-images.ps1 create mode 100644 docs/filter.yml create mode 100644 docs/index.md create mode 100644 docs/template/public/main.css create mode 100644 docs/template/public/main.js create mode 100644 docs/toc.yml create mode 100644 docs/workflows/.gitignore create mode 100644 global.json delete mode 100644 icon.png rename {Bonsai.Scripting.IronPython.Design => src/Bonsai.Scripting.IronPython.Design}/Bonsai.Scripting.IronPython.Design.csproj (79%) create mode 100644 src/Bonsai.Scripting.IronPython.Design/Properties/launchSettings.json rename {Bonsai.Scripting.IronPython.Design => src/Bonsai.Scripting.IronPython.Design}/PythonScriptEditor.cs (100%) rename {Bonsai.Scripting.IronPython.Design => src/Bonsai.Scripting.IronPython.Design}/PythonScriptEditorDialog.Designer.cs (100%) rename {Bonsai.Scripting.IronPython.Design => src/Bonsai.Scripting.IronPython.Design}/PythonScriptEditorDialog.cs (100%) rename {Bonsai.Scripting.IronPython.Design => src/Bonsai.Scripting.IronPython.Design}/PythonScriptEditorDialog.resx (100%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/Bonsai.Scripting.IronPython.csproj (77%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/IScriptingElement.cs (100%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/Properties/AssemblyInfo.cs (100%) create mode 100644 src/Bonsai.Scripting.IronPython/Properties/launchSettings.json rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/PythonEngine.cs (100%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/PythonHelper.cs (100%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/PythonProcessor.cs (100%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/PythonSelectMany.cs (100%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/PythonSource.cs (100%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/PythonTransform.cs (100%) rename {Bonsai.Scripting.IronPython => src/Bonsai.Scripting.IronPython}/ScriptingElementTypeDescriptor.cs (100%) diff --git a/.bonsai/Bonsai.config b/.bonsai/Bonsai.config new file mode 100644 index 0000000..ac40c8a --- /dev/null +++ b/.bonsai/Bonsai.config @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.bonsai/NuGet.config b/.bonsai/NuGet.config new file mode 100644 index 0000000..aa5beec --- /dev/null +++ b/.bonsai/NuGet.config @@ -0,0 +1,5 @@ + + + + + diff --git a/.bonsai/Setup.cmd b/.bonsai/Setup.cmd new file mode 100644 index 0000000..92d983d --- /dev/null +++ b/.bonsai/Setup.cmd @@ -0,0 +1,4 @@ +@echo off +pushd %~dp0 +powershell -ExecutionPolicy Bypass -File ./Setup.ps1 +popd \ No newline at end of file diff --git a/.bonsai/Setup.ps1 b/.bonsai/Setup.ps1 new file mode 100644 index 0000000..01cfba6 --- /dev/null +++ b/.bonsai/Setup.ps1 @@ -0,0 +1,21 @@ +Push-Location $PSScriptRoot +if (!(Test-Path "./Bonsai.exe")) { + $release = "https://github.com/bonsai-rx/bonsai/releases/latest/download/Bonsai.zip" + $configPath = "./Bonsai.config" + if (Test-Path $configPath) { + [xml]$config = Get-Content $configPath + $bootstrapper = $config.PackageConfiguration.Packages.Package.where{$_.id -eq 'Bonsai'} + if ($bootstrapper) { + $version = $bootstrapper.version + $release = "https://github.com/bonsai-rx/bonsai/releases/download/$version/Bonsai.zip" + } + } + Invoke-WebRequest $release -OutFile "temp.zip" + Move-Item -Path "NuGet.config" "temp.config" -ErrorAction SilentlyContinue + Expand-Archive "temp.zip" -DestinationPath "." -Force + Move-Item -Path "temp.config" "NuGet.config" -Force -ErrorAction SilentlyContinue + Remove-Item -Path "temp.zip" + Remove-Item -Path "Bonsai32.exe" +} +& .\Bonsai.exe --no-editor +Pop-Location \ No newline at end of file diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 0000000..d32441d --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "docfx": { + "version": "2.78.3", + "commands": [ + "docfx" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig index 3fa1254..c9a9d0d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,31 +1,46 @@ -# To learn more about .editorconfig see https://aka.ms/editorconfigdocs -############################### -# Core EditorConfig Options # -############################### -# All files +root = true + [*] indent_style = space -# XML project files -[*.{csproj,vcxproj,vcxproj.filters,proj,projitems,shproj,wxs}] +#-------------------------------------------------------------------------------------------------- +# XML, JSON, and web files +#-------------------------------------------------------------------------------------------------- +[*.{xml,csproj,vcxproj,vcxproj.filters,shproj,props,targets,config,nuspec,resx,vsixmanifest,wxs,vstemplate,slnx}] indent_size = 2 -# XML config files -[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vstemplate,vsct}] +[*.json] indent_size = 2 -# HTML / CSS files [*.{html,css}] indent_size = 2 -# Code files -[*.{cs,csx}] +#-------------------------------------------------------------------------------------------------- +# C++ +#-------------------------------------------------------------------------------------------------- +[*.{c,cpp,h,hpp,ixx}] indent_size = 4 +charset = utf-8-bom +trim_trailing_whitespace = true insert_final_newline = true + +#-------------------------------------------------------------------------------------------------- +# C# +#-------------------------------------------------------------------------------------------------- +[*.{cs,csx}] +indent_size = 4 charset = utf-8-bom -############################### -# .NET Coding Conventions # -############################### -[*.{cs}] -# Organize usings -dotnet_sort_system_directives_first = true \ No newline at end of file +trim_trailing_whitespace = true +insert_final_newline = true + +# Language keyword vs full type name +# Predefined for members, etc does not create a message because the explicitly sized types are conveient in interop scenarios where the bit size matters. +dotnet_style_predefined_type_for_locals_parameters_members = true:none +dotnet_style_predefined_type_for_member_access = true:suggestion + +# Instantiate argument exceptions correctly +dotnet_diagnostic.CA2208.severity = warning + +# Don't complain about not using modern collection syntax +dotnet_style_prefer_collection_expression = never +csharp_style_prefer_range_operator = false diff --git a/.gitattributes b/.gitattributes index 03051dc..601a4e2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,6 +8,7 @@ # Config *.gitignore text *.gitattributes text +*.gitmodules text eol=lf *.editorconfig text *.git-blame-ignore-revs text *.sln text @@ -38,4 +39,5 @@ LICENSE text # Graphics *.png binary *.ico binary -*.svg text \ No newline at end of file +*.gif binary +*.svg text diff --git a/.github/workflows/Bonsai.Scripting.IronPython.yml b/.github/workflows/Bonsai.Scripting.IronPython.yml new file mode 100644 index 0000000..3e7307e --- /dev/null +++ b/.github/workflows/Bonsai.Scripting.IronPython.yml @@ -0,0 +1,344 @@ +# ======================================================================================================================================================================= +# Bonsai.Scripting.IronPython CI/CD +# ======================================================================================================================================================================= +# Index: +# * Build, test, and package .NET +# * Build documentation +# * Render workflow images +# * Publish packages to GitHub +# * Publish packages to NuGet.org +# * Publish documentation +# ======================================================================================================================================================================= +# Note that this is a generic workflow meant for all Bonsai packages. Minor local modifications are fine, see https://github.com/bonsai-rx/prefect for more information. +# ======================================================================================================================================================================= +name: Bonsai.Scripting.IronPython +on: + push: + # This prevents tag pushes from triggering this workflow + branches: ['*'] + pull_request: + release: + types: [published] + workflow_dispatch: +env: + DOTNET_NOLOGO: true + DOTNET_CLI_TELEMETRY_OPTOUT: true + DOTNET_GENERATE_ASPNET_CERTIFICATE: false + ContinuousIntegrationBuild: true +jobs: + # ===================================================================================================================================================================== + # Build, test, and package .NET + # ___ _ _ _ _ _ _ _ _ _ ___ _____ + # | _ )_ _(_) |__| | | |_ ___ __| |_ __ _ _ _ __| | _ __ __ _ __| |____ _ __ _ ___ | \| | __|_ _| + # | _ \ || | | / _` |_ | _/ -_|_-< _|_ / _` | ' \/ _` | | '_ \/ _` / _| / / _` / _` / -_) _| .` | _| | | + # |___/\_,_|_|_\__,_( ) \__\___/__/\__( ) \__,_|_||_\__,_| | .__/\__,_\__|_\_\__,_\__, \___| (_)_|\_|___| |_| + # |/ |/ |_| |___/ + # ===================================================================================================================================================================== + build: + strategy: + fail-fast: false + matrix: + platform: + - name: Windows x64 + os: windows-latest + rid: win-x64 + - name: Linux x64 + os: ubuntu-22.04 + rid: linux-x64 + configuration: ['debug', 'release'] + include: + - platform: + rid: win-x64 + configuration: release + collect-packages: true + name: ${{matrix.platform.name}} ${{matrix.configuration}} + runs-on: ${{matrix.platform.os}} + outputs: + need-workflow-image-render: ${{steps.configure-build.outputs.need-workflow-image-render}} + steps: + # ----------------------------------------------------------------------- Checkout + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + # ----------------------------------------------------------------------- Set up tools + - name: Set up .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.x + + # ----------------------------------------------------------------------- Configure build + - name: Configure build + id: configure-build + uses: bonsai-rx/configure-build@v1 + + # ----------------------------------------------------------------------- Build + - name: Restore + run: dotnet restore + + - name: Build + run: dotnet build --no-restore --configuration ${{matrix.configuration}} + + # ----------------------------------------------------------------------- Pack + - name: Pack + id: pack + run: dotnet pack --no-restore --no-build --configuration ${{matrix.configuration}} + + # ----------------------------------------------------------------------- Test + - name: Test .NET Framework 4.7.2 + run: dotnet test --no-restore --no-build --configuration ${{matrix.configuration}} --verbosity normal --framework net472 + - name: Test .NET 8 + run: dotnet test --no-restore --no-build --configuration ${{matrix.configuration}} --verbosity normal --framework net8.0 + - name: Test .NET 8 Windows + if: matrix.platform.rid == 'win-x64' + run: dotnet test --no-restore --no-build --configuration ${{matrix.configuration}} --verbosity normal --framework net8.0-windows + + # ----------------------------------------------------------------------- Collect artifacts + - name: Collect NuGet packages + uses: actions/upload-artifact@v4 + if: matrix.collect-packages && steps.pack.outcome == 'success' && always() + with: + name: Packages + if-no-files-found: error + path: artifacts/package/${{matrix.configuration}}/** + + # ===================================================================================================================================================================== + # Build documentation + # ___ _ _ _ _ _ _ _ + # | _ )_ _(_) |__| | __| |___ __ _ _ _ __ ___ _ _| |_ __ _| |_(_)___ _ _ + # | _ \ || | | / _` | / _` / _ \/ _| || | ' \/ -_) ' \ _/ _` | _| / _ \ ' \ + # |___/\_,_|_|_\__,_| \__,_\___/\__|\_,_|_|_|_\___|_||_\__\__,_|\__|_\___/_||_| + # ===================================================================================================================================================================== + build-documentation: + name: Build documentation + runs-on: ubuntu-latest + steps: + # ----------------------------------------------------------------------- Checkout + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + # ----------------------------------------------------------------------- Set up tools + - name: Set up .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.x + + - name: Set up .NET tools + run: dotnet tool restore + + # ----------------------------------------------------------------------- Restore + - name: Restore + run: dotnet restore + + # ----------------------------------------------------------------------- Build metadata + - name: Build metadata + id: build-metadata + run: dotnet docfx metadata docs/docfx.json --noRestore + + # ----------------------------------------------------------------------- Build documentation + - name: Build documentation + id: build-documentation + run: dotnet docfx build docs/docfx.json + + # ----------------------------------------------------------------------- Collect artifacts + - name: Collect documentation metadata + uses: actions/upload-artifact@v4 + if: steps.build-metadata.outcome == 'success' && always() + with: + name: DocumentationMetadata + if-no-files-found: error + path: artifacts/docs/api/ + + - name: Collect documentation artifact + uses: actions/upload-artifact@v4 + if: steps.build-documentation.outcome == 'success' && always() + with: + name: DocumentationWebsite + if-no-files-found: error + path: artifacts/docs/site/ + + # ===================================================================================================================================================================== + # Render workflow images + # ___ _ _ __ _ _ + # | _ \___ _ _ __| |___ _ _ __ __ _____ _ _| |__/ _| |_____ __ __ (_)_ __ __ _ __ _ ___ ___ + # | / -_) ' \/ _` / -_) '_| \ V V / _ \ '_| / / _| / _ \ V V / | | ' \/ _` / _` / -_|_-< + # |_|_\___|_||_\__,_\___|_| \_/\_/\___/_| |_\_\_| |_\___/\_/\_/ |_|_|_|_\__,_\__, \___/__/ + # |___/ + # ===================================================================================================================================================================== + workflow-images: + name: Render workflow images + runs-on: windows-latest + needs: build + if: needs.build.outputs.need-workflow-image-render == 'true' + steps: + # ----------------------------------------------------------------------- Checkout + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + # ----------------------------------------------------------------------- Download built packages + - name: Download packages for rendering + uses: actions/download-artifact@v4 + with: + name: Packages + path: artifacts/packages/ + + # ----------------------------------------------------------------------- Set up Bonsai environments + - name: Set up Bonsai environments + uses: bonsai-rx/setup-bonsai@v1 + with: + environment-paths: '**/.bonsai/' + inject-packages: artifacts/packages/*.nupkg + + # ----------------------------------------------------------------------- Render + - name: Render images + id: render + run: pwsh ./docs/export-images.ps1 -OutputFolder artifacts/docs/site/ -Verbose + + # ----------------------------------------------------------------------- Collect artifacts + - name: Collect images + uses: actions/upload-artifact@v4 + if: steps.render.outcome == 'success' && always() + with: + name: DocumentationWorkflowImages + if-no-files-found: error + path: artifacts/docs/site/ + + # ===================================================================================================================================================================== + # Publish packages to GitHub + # ___ _ _ _ _ _ _ ___ _ _ _ _ _ + # | _ \_ _| |__| (_)__| |_ _ __ __ _ __| |____ _ __ _ ___ ___ | |_ ___ / __(_) |_| || |_ _| |__ + # | _/ || | '_ \ | (_-< ' \ | '_ \/ _` / _| / / _` / _` / -_|_-< | _/ _ \ | (_ | | _| __ | || | '_ \ + # |_| \_,_|_.__/_|_/__/_||_| | .__/\__,_\__|_\_\__,_\__, \___/__/ \__\___/ \___|_|\__|_||_|\_,_|_.__/ + # |_| |___/ + # ===================================================================================================================================================================== + publish-github: + name: Publish packages to GitHub + runs-on: ubuntu-latest + needs: build + permissions: + # Needed to attach files to releases + contents: write + # Needed to upload to GitHub Packages + packages: write + if: github.event_name == 'push' || github.event_name == 'release' + steps: + # ----------------------------------------------------------------------- Set up .NET + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.x + + # ----------------------------------------------------------------------- Download built packages + - name: Download built packages + uses: actions/download-artifact@v4 + with: + name: Packages + path: artifacts/packages/ + + # ----------------------------------------------------------------------- Upload release assets + - name: Upload release assets + if: github.event_name == 'release' + run: gh release upload --repo ${{github.repository}} ${{github.event.release.tag_name}} artifacts/packages/* --clobber + env: + GH_TOKEN: ${{github.token}} + + # ----------------------------------------------------------------------- Push to GitHub Packages + - name: Push to GitHub Packages + run: dotnet nuget push "artifacts/packages/*.nupkg" --skip-duplicate --no-symbols --api-key ${{secrets.GITHUB_TOKEN}} --source https://nuget.pkg.github.com/${{github.repository_owner}} + env: + # This is a workaround for https://github.com/NuGet/Home/issues/9775 + DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER: 0 + + # ===================================================================================================================================================================== + # Publish packages to NuGet.org + # ___ _ _ _ _ _ _ _ _ ___ _ + # | _ \_ _| |__| (_)__| |_ _ __ __ _ __| |____ _ __ _ ___ ___ | |_ ___ | \| |_ _ / __|___| |_ ___ _ _ __ _ + # | _/ || | '_ \ | (_-< ' \ | '_ \/ _` / _| / / _` / _` / -_|_-< | _/ _ \ | .` | || | (_ / -_) _|_/ _ \ '_/ _` | + # |_| \_,_|_.__/_|_/__/_||_| | .__/\__,_\__|_\_\__,_\__, \___/__/ \__\___/ |_|\_|\_,_|\___\___|\__(_)___/_| \__, | + # |_| |___/ |___/ + # ===================================================================================================================================================================== + publish-packages-nuget-org: + name: Publish packages to NuGet.org + runs-on: ubuntu-latest + environment: public-release + needs: build + if: github.event_name == 'release' + steps: + # ----------------------------------------------------------------------- Set up .NET + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.x + + # ----------------------------------------------------------------------- Download built packages + - name: Download built packages + uses: actions/download-artifact@v4 + with: + name: Packages + path: artifacts/packages/ + + # ----------------------------------------------------------------------- Push to NuGet.org + - name: Push to NuGet.org + run: dotnet nuget push "artifacts/packages/*.nupkg" --api-key ${{secrets.NUGET_API_KEY}} --source ${{vars.NUGET_API_URL}} + env: + # This is a workaround for https://github.com/NuGet/Home/issues/9775 + DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER: 0 + + + # ===================================================================================================================================================================== + # Publish documentation + # ___ _ _ _ _ _ _ _ _ + # | _ \_ _| |__| (_)__| |_ __| |___ __ _ _ _ __ ___ _ _| |_ __ _| |_(_)___ _ _ + # | _/ || | '_ \ | (_-< ' \ / _` / _ \/ _| || | ' \/ -_) ' \ _/ _` | _| / _ \ ' \ + # |_| \_,_|_.__/_|_/__/_||_| \__,_\___/\__|\_,_|_|_|_\___|_||_\__\__,_|\__|_\___/_||_| + # ===================================================================================================================================================================== + publish-documentation: + name: Publish documentation + runs-on: ubuntu-latest + # Publishing is not strictly necessary here, but if we're going to do a public release we want to wait to publish the docs until it goes out + needs: [build-documentation, workflow-images, publish-packages-nuget-org] + permissions: + # Both required by actions/deploy-pages + pages: write + id-token: write + environment: + # Intentionally not using the "default" github-pages environment as it's not compatible with this workflow + name: documentation-website + url: ${{steps.publish.outputs.page_url}} + # Only run if the workflow isn't dying and build-documentation was successful and either A) we're releasing or B) we have continuous deployment enabled + if: | + !cancelled() && !failure() && needs.build-documentation.result == 'success' + && (github.event_name == 'release' + || (vars.CONTINUOUS_DOCUMENTATION && github.event_name != 'pull_request') + ) + steps: + # ----------------------------------------------------------------------- Download documentation website components + # It is intentional that we use two independent download steps here as it ensures that workflow images are permitted + # to overwrite any conflicts in the docfx output but not the other way around. + - name: Download documentation website + uses: actions/download-artifact@v4 + with: + name: DocumentationWebsite + + - name: Download workflow images + if: ${{needs.workflow-images.result == 'success'}} + uses: actions/download-artifact@v4 + with: + name: DocumentationWorkflowImages + + # ----------------------------------------------------------------------- Collect artifacts + - name: Upload final documentation website artifact + uses: actions/upload-pages-artifact@v3 + with: + path: '.' + + # ----------------------------------------------------------------------- Publish to GitHub Pages (for forks) + - name: Publish to GitHub Pages (forks) + id: publish + if: github.event_name == 'release' || github.event.repository.fork + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 361e914..69a6265 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ -bin -obj -packages +.bonsai/Bonsai.exe* +.bonsai/Packages/ +.bonsai/Settings/ +.vs/ +/artifacts/ *.Generated.cs *.orig *.user *.suo -*.exe -.vs diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..acf6d39 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "docs/bonsai-docfx"] + path = docs/bonsai-docfx + url = https://github.com/bonsai-rx/docfx-tools.git diff --git a/Bonsai.Scripting.IronPython.Design/Properties/launchSettings.json b/Bonsai.Scripting.IronPython.Design/Properties/launchSettings.json deleted file mode 100644 index ddd052f..0000000 --- a/Bonsai.Scripting.IronPython.Design/Properties/launchSettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "profiles": { - "Bonsai": { - "commandName": "Executable", - "executablePath": "$(SolutionDir)Bonsai/bin/$(Configuration)/net472/Bonsai.exe", - "commandLineArgs": "--lib:$(TargetDir)." - } - } -} \ No newline at end of file diff --git a/Bonsai.Scripting.IronPython.sln b/Bonsai.Scripting.IronPython.sln index 1fb8401..9f188d3 100644 --- a/Bonsai.Scripting.IronPython.sln +++ b/Bonsai.Scripting.IronPython.sln @@ -3,13 +3,18 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.10.35004.147 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bonsai.Scripting.IronPython", "Bonsai.Scripting.IronPython\Bonsai.Scripting.IronPython.csproj", "{B535B646-BFAE-4D83-A189-A5DA16520CF2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bonsai.Scripting.IronPython", "src\Bonsai.Scripting.IronPython\Bonsai.Scripting.IronPython.csproj", "{B535B646-BFAE-4D83-A189-A5DA16520CF2}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bonsai.Scripting.IronPython.Design", "Bonsai.Scripting.IronPython.Design\Bonsai.Scripting.IronPython.Design.csproj", "{A5E5842E-A929-4B99-BE47-7B097DA723D4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bonsai.Scripting.IronPython.Design", "src\Bonsai.Scripting.IronPython.Design\Bonsai.Scripting.IronPython.Design.csproj", "{A5E5842E-A929-4B99-BE47-7B097DA723D4}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2D68A127-E3D9-444C-8C17-C7B6C31FB10E}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{DEE5DD87-39C1-BF34-B639-A387DCCF972B}" ProjectSection(SolutionItems) = preProject - Directory.Build.props = Directory.Build.props + build\Common.csproj.props = build\Common.csproj.props + build\Common.csproj.targets = build\Common.csproj.targets + build\Common.Tests.csproj.props = build\Common.Tests.csproj.props + build\icon.png = build\icon.png + build\Package.props = build\Package.props + build\Project.csproj.props = build\Project.csproj.props EndProjectSection EndProject Global diff --git a/Bonsai.Scripting.IronPython/Properties/launchSettings.json b/Bonsai.Scripting.IronPython/Properties/launchSettings.json deleted file mode 100644 index ddd052f..0000000 --- a/Bonsai.Scripting.IronPython/Properties/launchSettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "profiles": { - "Bonsai": { - "commandName": "Executable", - "executablePath": "$(SolutionDir)Bonsai/bin/$(Configuration)/net472/Bonsai.exe", - "commandLineArgs": "--lib:$(TargetDir)." - } - } -} \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index 70f63e9..91586df 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,21 +1,3 @@ - - - - Bonsai Foundation - Copyright © Bonsai Foundation CIC and Contributors 2011-2024 - https://bonsai-rx.org - https://bonsai-rx.org/license - https://bonsai-rx.org/assets/images/bonsai.png - https://github.com/bonsai-rx/ironpython-scripting.git - ..\bin\$(Configuration) - true - true - snupkg - true - git - 2.8.1 - - 9.0 - strict - + + \ No newline at end of file diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 0000000..b7ac253 --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/NuGet.config b/NuGet.config deleted file mode 100644 index 18aee5e..0000000 --- a/NuGet.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/build/Common.Tests.csproj.props b/build/Common.Tests.csproj.props new file mode 100644 index 0000000..c42b25f --- /dev/null +++ b/build/Common.Tests.csproj.props @@ -0,0 +1,6 @@ + + + false + false + + \ No newline at end of file diff --git a/build/Common.csproj.props b/build/Common.csproj.props new file mode 100644 index 0000000..1099119 --- /dev/null +++ b/build/Common.csproj.props @@ -0,0 +1,80 @@ + + + + + Debug + AnyCPU + + + + + 12.0 + true + strict + enable + true + + + true + $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)../artifacts')) + + + $(ArtifactsPath)/wsl + + + + + true + Dependency;BonsaiLibrary + + icon.png + $(MSBuildThisFileDirectory)icon.png + + LICENSE + $(MSBuildThisFileDirectory)../LICENSE + + README.md + $(MSBuildThisFileDirectory)../docs/README.md + $(MSBuildThisFileDirectory)README.nuget.md + $(MSBuildProjectDirectory)\README.md + $(MSBuildProjectDirectory)\README.nuget.md + + + false + true + snupkg + + + false + true + + + + + $(WarningsAsErrors);NU1701;CS7035 + + + true + + + true + + + $(MSBuildThisFileDirectory)../.bonsai/Bonsai.exe + + + + + + \ No newline at end of file diff --git a/build/Common.csproj.targets b/build/Common.csproj.targets new file mode 100644 index 0000000..07f4916 --- /dev/null +++ b/build/Common.csproj.targets @@ -0,0 +1,46 @@ + + + + + + + + + + + $(TargetName.ToLowerInvariant()) + DotnetTool + + + 1591,1573 + + + + + + + + 0 + 42.42.42-dev$(DevVersion) + + $(CiBuildVersion) + + + + + + + + + + + + \ No newline at end of file diff --git a/build/Package.props b/build/Package.props new file mode 100644 index 0000000..8e82f10 --- /dev/null +++ b/build/Package.props @@ -0,0 +1,9 @@ + + + Bonsai Rx Scripting Iron Python + https://bonsai-rx.org/ironpython-scripting + + Bonsai Foundation + Copyright © Bonsai Foundation CIC and Contributors + + \ No newline at end of file diff --git a/build/Project.csproj.props b/build/Project.csproj.props new file mode 100644 index 0000000..1d004b4 --- /dev/null +++ b/build/Project.csproj.props @@ -0,0 +1,5 @@ + + + annotations + + \ No newline at end of file diff --git a/build/icon.png b/build/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..50b328bfb57c11901c222ab7d1b5696dd9949134 GIT binary patch literal 4224 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", + "_appLogoPath": "logo.svg", + "_appFaviconPath": "icon.png", + "_enableNewTab": true, + "_enableSearch": true, + "_gitContribute": { + "apiSpecFolder": "docs/apidoc" + } + }, + "markdownEngineProperties": { + "markdigExtensions": [ + "attributes", + "customcontainers" + ] + }, + "xref": [ + "https://bonsai-rx.org/docs/xrefmap.yml", + "https://horizongir.github.io/reactive/xrefmap.yml" + ] + } +} \ No newline at end of file diff --git a/docs/export-images.ps1 b/docs/export-images.ps1 new file mode 100644 index 0000000..e613b87 --- /dev/null +++ b/docs/export-images.ps1 @@ -0,0 +1,44 @@ +[CmdletBinding()] param ( + [string[]]$LibrarySources, + [bool]$UseGalleryForWorkflowsDirectory=$false, + [bool]$UseGalleryForExamplesDirectory=$true, + [string]$OutputFolder=$null +) +Set-StrictMode -Version 3.0 +$ErrorActionPreference = 'Stop' +$PSNativeCommandUseErrorActionPreference = $true + +if ($OutputFolder) { + $OutputFolder = Join-Path (Get-Location) $OutputFolder +} + +function Process-Workflow-Collection([bool]$useGallery, [string]$workflowPath, [string]$environmentPath) { + $libPath = $LibrarySources + + if ($useGallery) { + $libPath = @() + $galleryPath = Join-Path $environmentPath 'Gallery' + $null = New-Item -ItemType Directory -Path $galleryPath -Force + foreach ($librarySource in $LibrarySources) { + Get-ChildItem -Path $librarySource -Filter *.nupkg | Copy-Item -Destination $galleryPath + } + } + + $bootstrapperPath = (Join-Path $environmentPath 'Bonsai.exe') + .\bonsai-docfx\modules\Export-Image.ps1 -libPath $libPath -workflowPath $workflowPath -bootstrapperPath $bootstrapperPath -outputFolder $OutputFolder -documentationRoot $PSScriptRoot +} + +Push-Location $PSScriptRoot +try { + if (Test-Path -Path 'workflows/') { + Process-Workflow-Collection $UseGalleryForWorkflowsDirectory './workflows' '../.bonsai/' + } + + if (Test-Path -Path 'examples/') { + foreach ($environment in (Get-ChildItem -Path 'examples/' -Filter '.bonsai' -Recurse -FollowSymlink -Directory)) { + Process-Workflow-Collection $UseGalleryForExamplesDirectory ($environment.Parent.FullName) ($environment.FullName) + } + } +} finally { + Pop-Location +} diff --git a/docs/filter.yml b/docs/filter.yml new file mode 100644 index 0000000..472eb43 --- /dev/null +++ b/docs/filter.yml @@ -0,0 +1,4 @@ +apiRules: +- exclude: + hasAttribute: + uid: System.ObsoleteAttribute diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..ba991fe --- /dev/null +++ b/docs/index.md @@ -0,0 +1,5 @@ +--- +_layout: landing +--- + +[!INCLUDE [](README.md)] diff --git a/docs/template/public/main.css b/docs/template/public/main.css new file mode 100644 index 0000000..13bc806 --- /dev/null +++ b/docs/template/public/main.css @@ -0,0 +1 @@ +@import "workflow.css"; diff --git a/docs/template/public/main.js b/docs/template/public/main.js new file mode 100644 index 0000000..b949d63 --- /dev/null +++ b/docs/template/public/main.js @@ -0,0 +1,13 @@ +import WorkflowContainer from "./workflow.js" + +export default { + defaultTheme: 'light', + iconLinks: [{ + icon: 'github', + href: 'https://github.com/bonsai-rx/ironpython-scripting', + title: 'GitHub' + }], + start: () => { + WorkflowContainer.init(); + } +} diff --git a/docs/toc.yml b/docs/toc.yml new file mode 100644 index 0000000..3daf8b9 --- /dev/null +++ b/docs/toc.yml @@ -0,0 +1,2 @@ +- name: API + href: ../artifacts/docs/api/ diff --git a/docs/workflows/.gitignore b/docs/workflows/.gitignore new file mode 100644 index 0000000..e2beea4 --- /dev/null +++ b/docs/workflows/.gitignore @@ -0,0 +1,2 @@ +*.layout +*.svg diff --git a/global.json b/global.json new file mode 100644 index 0000000..989a69c --- /dev/null +++ b/global.json @@ -0,0 +1,6 @@ +{ + "sdk": { + "version": "8.0.100", + "rollForward": "latestMinor" + } +} \ No newline at end of file diff --git a/icon.png b/icon.png deleted file mode 100644 index 43868ea4e7079e5f772ea2fe1d0e7ca9e2ceac1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6661 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 P00000NkvXXu0mjfcC_Yq diff --git a/Bonsai.Scripting.IronPython.Design/Bonsai.Scripting.IronPython.Design.csproj b/src/Bonsai.Scripting.IronPython.Design/Bonsai.Scripting.IronPython.Design.csproj similarity index 79% rename from Bonsai.Scripting.IronPython.Design/Bonsai.Scripting.IronPython.Design.csproj rename to src/Bonsai.Scripting.IronPython.Design/Bonsai.Scripting.IronPython.Design.csproj index dd87095..3d964bf 100644 --- a/Bonsai.Scripting.IronPython.Design/Bonsai.Scripting.IronPython.Design.csproj +++ b/src/Bonsai.Scripting.IronPython.Design/Bonsai.Scripting.IronPython.Design.csproj @@ -1,9 +1,8 @@ - - + Bonsai - IronPython Scripting Design Library Bonsai Design Library containing editor classes for IronPython scripting. - Bonsai Rx Scripting Iron Python Design + $(PackageTags) Design true net462 diff --git a/src/Bonsai.Scripting.IronPython.Design/Properties/launchSettings.json b/src/Bonsai.Scripting.IronPython.Design/Properties/launchSettings.json new file mode 100644 index 0000000..4af4f46 --- /dev/null +++ b/src/Bonsai.Scripting.IronPython.Design/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "Bonsai": { + "commandName": "Executable", + "executablePath": "$(BonsaiExecutablePath)", + "commandLineArgs": "--lib:\"$(TargetDir).\"", + "nativeDebugging": true + } + } +} \ No newline at end of file diff --git a/Bonsai.Scripting.IronPython.Design/PythonScriptEditor.cs b/src/Bonsai.Scripting.IronPython.Design/PythonScriptEditor.cs similarity index 100% rename from Bonsai.Scripting.IronPython.Design/PythonScriptEditor.cs rename to src/Bonsai.Scripting.IronPython.Design/PythonScriptEditor.cs diff --git a/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.Designer.cs b/src/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.Designer.cs similarity index 100% rename from Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.Designer.cs rename to src/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.Designer.cs diff --git a/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.cs b/src/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.cs similarity index 100% rename from Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.cs rename to src/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.cs diff --git a/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.resx b/src/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.resx similarity index 100% rename from Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.resx rename to src/Bonsai.Scripting.IronPython.Design/PythonScriptEditorDialog.resx diff --git a/Bonsai.Scripting.IronPython/Bonsai.Scripting.IronPython.csproj b/src/Bonsai.Scripting.IronPython/Bonsai.Scripting.IronPython.csproj similarity index 77% rename from Bonsai.Scripting.IronPython/Bonsai.Scripting.IronPython.csproj rename to src/Bonsai.Scripting.IronPython/Bonsai.Scripting.IronPython.csproj index b12887c..8312487 100644 --- a/Bonsai.Scripting.IronPython/Bonsai.Scripting.IronPython.csproj +++ b/src/Bonsai.Scripting.IronPython/Bonsai.Scripting.IronPython.csproj @@ -1,9 +1,7 @@ - - + Bonsai - IronPython Scripting Library Bonsai Scripting Library containing IronPython scripting infrastructure. - Bonsai Rx Scripting Iron Python net462 diff --git a/Bonsai.Scripting.IronPython/IScriptingElement.cs b/src/Bonsai.Scripting.IronPython/IScriptingElement.cs similarity index 100% rename from Bonsai.Scripting.IronPython/IScriptingElement.cs rename to src/Bonsai.Scripting.IronPython/IScriptingElement.cs diff --git a/Bonsai.Scripting.IronPython/Properties/AssemblyInfo.cs b/src/Bonsai.Scripting.IronPython/Properties/AssemblyInfo.cs similarity index 100% rename from Bonsai.Scripting.IronPython/Properties/AssemblyInfo.cs rename to src/Bonsai.Scripting.IronPython/Properties/AssemblyInfo.cs diff --git a/src/Bonsai.Scripting.IronPython/Properties/launchSettings.json b/src/Bonsai.Scripting.IronPython/Properties/launchSettings.json new file mode 100644 index 0000000..4af4f46 --- /dev/null +++ b/src/Bonsai.Scripting.IronPython/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "Bonsai": { + "commandName": "Executable", + "executablePath": "$(BonsaiExecutablePath)", + "commandLineArgs": "--lib:\"$(TargetDir).\"", + "nativeDebugging": true + } + } +} \ No newline at end of file diff --git a/Bonsai.Scripting.IronPython/PythonEngine.cs b/src/Bonsai.Scripting.IronPython/PythonEngine.cs similarity index 100% rename from Bonsai.Scripting.IronPython/PythonEngine.cs rename to src/Bonsai.Scripting.IronPython/PythonEngine.cs diff --git a/Bonsai.Scripting.IronPython/PythonHelper.cs b/src/Bonsai.Scripting.IronPython/PythonHelper.cs similarity index 100% rename from Bonsai.Scripting.IronPython/PythonHelper.cs rename to src/Bonsai.Scripting.IronPython/PythonHelper.cs diff --git a/Bonsai.Scripting.IronPython/PythonProcessor.cs b/src/Bonsai.Scripting.IronPython/PythonProcessor.cs similarity index 100% rename from Bonsai.Scripting.IronPython/PythonProcessor.cs rename to src/Bonsai.Scripting.IronPython/PythonProcessor.cs diff --git a/Bonsai.Scripting.IronPython/PythonSelectMany.cs b/src/Bonsai.Scripting.IronPython/PythonSelectMany.cs similarity index 100% rename from Bonsai.Scripting.IronPython/PythonSelectMany.cs rename to src/Bonsai.Scripting.IronPython/PythonSelectMany.cs diff --git a/Bonsai.Scripting.IronPython/PythonSource.cs b/src/Bonsai.Scripting.IronPython/PythonSource.cs similarity index 100% rename from Bonsai.Scripting.IronPython/PythonSource.cs rename to src/Bonsai.Scripting.IronPython/PythonSource.cs diff --git a/Bonsai.Scripting.IronPython/PythonTransform.cs b/src/Bonsai.Scripting.IronPython/PythonTransform.cs similarity index 100% rename from Bonsai.Scripting.IronPython/PythonTransform.cs rename to src/Bonsai.Scripting.IronPython/PythonTransform.cs diff --git a/Bonsai.Scripting.IronPython/ScriptingElementTypeDescriptor.cs b/src/Bonsai.Scripting.IronPython/ScriptingElementTypeDescriptor.cs similarity index 100% rename from Bonsai.Scripting.IronPython/ScriptingElementTypeDescriptor.cs rename to src/Bonsai.Scripting.IronPython/ScriptingElementTypeDescriptor.cs