Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,14 @@ jobs:
uses: schmiedmayerlab/action-swiftlint@v4
with:
args: --strict

documentation:
name: Documentation
runs-on: macOS-26
steps:
- uses: actions/checkout@v4
- name: Build DocC Documentation
run: Scripts/build-documentation.sh
- name: Clean generated artifacts
if: always()
run: bash Scripts/cleanup-generated-artifacts.sh
9 changes: 6 additions & 3 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,11 @@ jobs:
needs: detect
if: needs.detect.outputs.has_jobs == 'true'
# Runner per job: Linux -> GitHub-hosted ubuntu; otherwise self-hosted iff packages.toml's
# self-hosted-ci routed unit tests there (matrix.selfHosted), else GitHub-hosted macOS-26.
runs-on: ${{ matrix.platform == 'Linux' && 'ubuntu-latest' || (matrix.selfHosted && fromJson('["self-hosted", "macOS"]') || fromJson('["macOS-26"]')) }}
# self-hosted-ci routed unit tests there (matrix.selfHosted), else GitHub-hosted macOS-26. The
# self-hosted label set (matrix.selfHostedLabels) is the base ["self-hosted","macOS"] plus any
# per-package `extra_runner_labels` from packages.toml (e.g. "python3.11+"), computed by
# Scripts/affected-test-matrix.py.
runs-on: ${{ matrix.platform == 'Linux' && 'ubuntu-latest' || (matrix.selfHosted && fromJson(matrix.selfHostedLabels) || fromJson('["macOS-26"]')) }}
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.detect.outputs.matrix) }}
Expand All @@ -107,7 +110,7 @@ jobs:
if: needs.detect.outputs.has_ui_jobs == 'true'
# UI tests run on the self-hosted runner by default (packages.toml self-hosted-ci defaults to
# ["ui"]); a package can move its UI tests to GitHub-hosted by dropping "ui" from that list.
runs-on: ${{ matrix.selfHosted && fromJson('["self-hosted", "macOS"]') || fromJson('["macOS-26"]') }}
runs-on: ${{ matrix.selfHosted && fromJson(matrix.selfHostedLabels) || fromJson('["macOS-26"]') }}
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.detect.outputs.ui_matrix) }}
Expand Down
79 changes: 79 additions & 0 deletions .spi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
version: 1
builder:
configs:
- documentation_targets:
- Spezi
- FHIRModelsExtensions
- FHIRPathParser
- FHIRQuestionnaires
- HealthKitOnFHIR
- ResearchKitOnFHIR
- SpeziTesting
- XCTSpezi
- SpeziAccessGuard
- SpeziAccount
- XCTSpeziAccount
- SpeziAccountPhoneNumbers
- SpeziBluetoothServices
- SpeziBluetooth
- SpeziChat
- SpeziConsent
- SpeziContact
- SpeziDevices
- SpeziDevicesUI
- SpeziOmron
- SpeziFHIR
- SpeziFHIRHealthKit
- SpeziFHIRMockPatients
- EDFFormat
- SpeziFirebaseAccount
- SpeziFirebaseConfiguration
- SpeziFirestore
- SpeziFirebaseStorage
- SpeziFirebaseAccountStorage
- SpeziFoundation
- SpeziLocalization
- ThreadLocal
- SpeziHealthKit
- SpeziHealthKitBulkExport
- SpeziHealthKitUI
- SpeziLLM
- SpeziLLMLocal
- SpeziLLMLocalDownload
- SpeziLLMOpenAI
- SpeziLLMFog
- SpeziLLMOpenAIRealtime
- SpeziLLMAnthropic
- SpeziLLMGemini
- SpeziLicense
- SpeziLocation
- ByteCoding
- SpeziNumerics
- XCTByteCoding
- ByteCodingTesting
- SpeziNotifications
- XCTSpeziNotifications
- XCTSpeziNotificationsUI
- SpeziOnboarding
- SpeziQuestionnaire
- SpeziQuestionnaireCatalog
- SpeziQuestionnaireFHIR
- XCTSpeziQuestionnaire
- SpeziScheduler
- SpeziSensorKit
- SpeziSpeechRecognizer
- SpeziSpeechSynthesizer
- SpeziLocalStorage
- SpeziKeychainStorage
- SpeziStudyDefinition
- SpeziViews
- SpeziPersonalInfo
- SpeziValidation
- XCTHealthKit
- RuntimeAssertions
- RuntimeAssertionsTesting
- XCTRuntimeAssertions
- XCTestApp
- XCTestExtensions
- SpeziSchedulerUI
- SpeziStudy
22 changes: 22 additions & 0 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ only_rules:
- accessibility_label_for_image
# Prefer using Array(seq) over seq.map { $0 } to convert a sequence into an Array.
- array_init
# Attribute names should be followed by at most one balanced set of parentheses.
- attribute_name_spacing
# Prefer the new block based KVO API with keypaths when using Swift 3.2 or later.
- block_based_kvo
# Non-constant variables should not be listed in a closure’s capture list to avoid confusion about closures capturing variables at creation time.
Expand Down Expand Up @@ -74,6 +76,10 @@ only_rules:
- duplicated_key_in_dictionary_literal
# Duplicate Imports
- duplicate_imports
# Condition lists should not contain duplicated conditions.
- duplicate_conditions
# Enum cases should not be duplicated.
- duplicate_enum_cases
# Avoid using 'dynamic' and '@inline(__always)' together.
- dynamic_inline
# Prefer checking isEmpty over comparing collection to an empty array or dictionary literal.
Expand Down Expand Up @@ -139,6 +145,10 @@ only_rules:
- implicitly_unwrapped_optional
# Identifiers should use inclusive language that avoids discrimination against groups of people based on race, gender, or socioeconomic status
- inclusive_language
# SwiftLint commands should be valid.
- invalid_swiftlint_command
# Files should not contain invisible characters.
- invisible_character
# Prefer using Set.isDisjoint(with:) over Set.intersection(_:).isEmpty.
- is_disjoint
# Discouraged explicit usage of the default separator.
Expand Down Expand Up @@ -204,6 +214,10 @@ only_rules:
- notification_center_detachment
# Static strings should be used as key in NSLocalizedString in order to genstrings work.
- nslocalizedstring_key
# Prefer non-optional Data initializers when converting Strings to Data.
- non_optional_string_data_conversion
# Prefer NSNumber initializer references over as-function references.
- ns_number_init_as_function_reference
# NSObject subclasses should implement isEqual instead of ==.
- nsobject_prefer_isequal
# Prefer object literals over image and color inits.
Expand All @@ -224,6 +238,8 @@ only_rules:
- pattern_matching_keywords
# Prefer Self over type(of: self) when accessing properties or calling methods.
- prefer_self_type_over_type_of_self
# Prefer `is` and `as?` over comparing type names.
- prefer_type_checking
# Prefer .zero over explicit init with zero parameters (e.g. CGPoint(x: 0, y: 0))
- prefer_zero_over_explicit_init
# Prefer private over fileprivate declarations.
Expand Down Expand Up @@ -266,6 +282,8 @@ only_rules:
- return_value_from_void_function
# Re-bind self to a consistent identifier name.
- self_binding
# `self` should not be used before all stored properties are initialized.
- self_in_property_initialization
# Prefer shorthand operators (+=, -=, *=, /=) over doing the operation and assigning.
- shorthand_operator
# Test files should contain a single QuickSpec or XCTestCase class.
Expand All @@ -278,6 +296,8 @@ only_rules:
- statement_position
# Operators should be declared as static functions, not free functions.
- static_operator
# Prefer `static` members over `class` members on final classes.
- static_over_final_class
# SwiftLint ‘disable’ commands are superfluous when the disabled rule would not have triggered a violation in the disabled region. Use “ - ” if you wish to document a command.
- superfluous_disable_command
# Case statements should vertically align with their enclosing switch statement, or indented if configured otherwise.
Expand Down Expand Up @@ -315,6 +335,8 @@ only_rules:
- unavailable_function
# Avoid using unneeded break statements.
- unneeded_break_in_switch
# Unneeded overrides should be removed.
- unneeded_override
# Parentheses are not needed when declaring closure arguments.
- unneeded_parentheses_in_closure_argument
# Prefer capturing references as weak to avoid potential crashes.
Expand Down
Loading
Loading