diff --git a/.github/workflows/spdx-check.yml b/.github/workflows/spdx-check.yml index 269d562..e386bd3 100644 --- a/.github/workflows/spdx-check.yml +++ b/.github/workflows/spdx-check.yml @@ -2,44 +2,89 @@ name: SPDX + Copyright header check on: pull_request: + workflow_dispatch: jobs: spdx: runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: read + steps: - - uses: actions/checkout@v4 + - name: Checkout repository + uses: actions/checkout@v5 with: fetch-depth: 0 - name: Check header in changed .cs files + shell: bash run: | - set -e - BASE="${{ github.event.pull_request.base.sha }}" - HEAD="${{ github.event.pull_request.head.sha }}" + set -euo pipefail + + if [ "${{ github.event_name }}" = "pull_request" ]; then + BASE="${{ github.event.pull_request.base.sha }}" + HEAD="${{ github.event.pull_request.head.sha }}" + else + HEAD="${{ github.sha }}" + BASE="$(git rev-parse "${HEAD}^" 2>/dev/null || true)" + fi - FILES=$(git diff --name-only "$BASE" "$HEAD" -- '*.cs' || true) + echo "Base SHA: ${BASE:-}" + echo "Head SHA: $HEAD" + echo - if [ -z "$FILES" ]; then + if [ -z "${BASE:-}" ]; then + mapfile -t files < <(git ls-files '*.cs') + else + mapfile -t files < <(git diff --diff-filter=ACMR --name-only "$BASE" "$HEAD" -- '*.cs' || true) + fi + + if [ "${#files[@]}" -eq 0 ]; then echo "No C# files changed." exit 0 fi - MISSING="" - for f in $FILES; do - HEADBLOCK=$(head -n 6 "$f") + echo "Changed C# files:" + printf ' - %s\n' "${files[@]}" + echo + + missing=() + + for f in "${files[@]}"; do + if [ ! -f "$f" ]; then + echo "Skipping missing file: $f" + continue + fi + + headblock="$(head -n 20 "$f" | sed '1s/^\xEF\xBB\xBF//' | tr -d '\r')" + + echo "Checking: $f" + + if ! grep -q "SPDX-License-Identifier: LGPL-3.0-or-later" <<< "$headblock"; then + echo " Missing SPDX line" + missing+=("$f") + continue + fi + + if ! grep -qE "Copyright \(c\) 2020[-–]2026 Michal Dengusiak & Jakub Ziolkowski and contributors" <<< "$headblock"; then + echo " Missing copyright line" + missing+=("$f") + continue + fi - echo "$HEADBLOCK" | grep -q "// SPDX-License-Identifier: LGPL-3.0-or-later" || MISSING="$MISSING $f" - echo "$HEADBLOCK" | grep -q "// Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributors" || MISSING="$MISSING $f" + echo " OK" done - if [ -n "$MISSING" ]; then - echo "❌ Missing required header in:" - for f in $MISSING; do echo " - $f"; done - echo "" - echo "Each changed .cs file must start with:" + echo + if [ "${#missing[@]}" -gt 0 ]; then + echo "Missing required header in:" + printf ' - %s\n' "${missing[@]}" + echo + echo "Each checked .cs file must contain within the first 20 lines:" echo "// SPDX-License-Identifier: LGPL-3.0-or-later" - echo "// Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributors" + echo "// Copyright (c) 2020-2026 Michal Dengusiak & Jakub Ziolkowski and contributors" exit 1 fi - echo "✅ SPDX + copyright headers OK." + echo "SPDX + copyright headers OK." \ No newline at end of file diff --git a/SAM_Revit_UI/SAM.Analytical.Revit.UI/IExternalCommands/Simulate.cs b/SAM_Revit_UI/SAM.Analytical.Revit.UI/IExternalCommands/Simulate.cs index 7e201b1..8543ee6 100644 --- a/SAM_Revit_UI/SAM.Analytical.Revit.UI/IExternalCommands/Simulate.cs +++ b/SAM_Revit_UI/SAM.Analytical.Revit.UI/IExternalCommands/Simulate.cs @@ -1,4 +1,7 @@ -using Autodesk.Revit.Attributes; +// SPDX-License-Identifier: LGPL-3.0-or-later +// Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributors + +using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using SAM.Analytical.Revit.UI.Properties; @@ -224,7 +227,7 @@ public override Result Execute(ExternalCommandData commandData, ref string messa SimulateTo = 1 }; - analyticalModel = Tas.Modify.RunWorkflow(analyticalModel, workflowSettings); + analyticalModel = Analytical.UI.WPF.Modify.RunWorkflow(analyticalModel, workflowSettings); List results = null; diff --git a/SAM_Revit_UI/SAM.Analytical.Revit.UI/SAM.Analytical.Revit.UI.csproj b/SAM_Revit_UI/SAM.Analytical.Revit.UI/SAM.Analytical.Revit.UI.csproj index bce0670..353b5f0 100644 --- a/SAM_Revit_UI/SAM.Analytical.Revit.UI/SAM.Analytical.Revit.UI.csproj +++ b/SAM_Revit_UI/SAM.Analytical.Revit.UI/SAM.Analytical.Revit.UI.csproj @@ -92,6 +92,9 @@ ..\..\..\SAM_UI\build\SAM.Analytical.UI.dll + + ..\..\..\SAM_UI\build\SAM.Analytical.UI.WPF.dll + ..\..\..\SAM_Windows\build\SAM.Analytical.Windows.dll diff --git a/references_buildonly/Interop.TAS3D.dll b/references_buildonly/Interop.TAS3D.dll index be5d0d3..891e380 100644 Binary files a/references_buildonly/Interop.TAS3D.dll and b/references_buildonly/Interop.TAS3D.dll differ diff --git a/references_buildonly/Interop.TBD.dll b/references_buildonly/Interop.TBD.dll index 2cbda5c..5e8e641 100644 Binary files a/references_buildonly/Interop.TBD.dll and b/references_buildonly/Interop.TBD.dll differ diff --git a/references_buildonly/Interop.TCD.dll b/references_buildonly/Interop.TCD.dll index 60e6027..bb84c2c 100644 Binary files a/references_buildonly/Interop.TCD.dll and b/references_buildonly/Interop.TCD.dll differ diff --git a/references_buildonly/Interop.TCR.dll b/references_buildonly/Interop.TCR.dll new file mode 100644 index 0000000..9d78d03 Binary files /dev/null and b/references_buildonly/Interop.TCR.dll differ diff --git a/references_buildonly/Interop.TIC.dll b/references_buildonly/Interop.TIC.dll index 18825bf..ee11320 100644 Binary files a/references_buildonly/Interop.TIC.dll and b/references_buildonly/Interop.TIC.dll differ diff --git a/references_buildonly/Interop.TPD.dll b/references_buildonly/Interop.TPD.dll index f2dda38..3d4aa11 100644 Binary files a/references_buildonly/Interop.TPD.dll and b/references_buildonly/Interop.TPD.dll differ diff --git a/references_buildonly/Interop.TSD.dll b/references_buildonly/Interop.TSD.dll index 498592f..782243c 100644 Binary files a/references_buildonly/Interop.TSD.dll and b/references_buildonly/Interop.TSD.dll differ diff --git a/references_buildonly/Interop.TWD.dll b/references_buildonly/Interop.TWD.dll index 2797b09..59b232f 100644 Binary files a/references_buildonly/Interop.TWD.dll and b/references_buildonly/Interop.TWD.dll differ diff --git a/references_buildonly/Interop.TasConv.dll b/references_buildonly/Interop.TasConv.dll index 8cbee3d..b6619e0 100644 Binary files a/references_buildonly/Interop.TasConv.dll and b/references_buildonly/Interop.TasConv.dll differ