diff --git a/.github/workflows/docc.yml b/.github/workflows/docc.yml index 09b5c56..c1cc6ac 100644 --- a/.github/workflows/docc.yml +++ b/.github/workflows/docc.yml @@ -7,14 +7,16 @@ on: branches: [ main ] env: - DEVELOPER_DIR: /Applications/Xcode_15.4.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_26.3.app/Contents/Developer jobs: docc: name: DocC runs-on: macos-latest + permissions: + contents: read steps: - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Build run: make docs open="no" DERIVED_DATA_PATH="$(mktemp -d)" diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 86748db..7677011 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -7,22 +7,24 @@ on: branches: [ main ] env: - DEVELOPER_DIR: /Applications/Xcode_15.4.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_26.3.app/Contents/Developer jobs: swift: name: Swift runs-on: macos-latest + permissions: + contents: read env: - SIMULATOR: iPhone 15 + SIMULATOR: iPhone 17 steps: - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Download swiftlint binary run: swift package resolve - name: Lint run: > - "$(find ".build/artifacts/swiftlint" -type f -name swiftlint -perm +111 -print -quit)" + "$(find ".build/artifacts/swiftlint" -path "*macos*" -type f -name swiftlint -perm +111 -print -quit)" lint --strict --reporter github-actions-logging - name: Resolve package dependencies run: xcodebuild -resolvePackageDependencies diff --git a/.swiftlint-rules.yml b/.swiftlint-rules.yml index 58fa60d..2ab21c9 100644 --- a/.swiftlint-rules.yml +++ b/.swiftlint-rules.yml @@ -9,8 +9,9 @@ only_rules: - accessibility_label_for_image - accessibility_trait_for_button - anonymous_argument_in_multiline_closure -- anyobject_protocol - array_init +- async_without_await +- attribute_name_spacing # - attributes - balanced_xctest_lifecycle - blanket_disable_command @@ -94,7 +95,6 @@ only_rules: - implicitly_unwrapped_optional - inclusive_language # - indentation_width -- inert_defer - invalid_swiftlint_command - is_disjoint - joined_default_parameter @@ -145,6 +145,7 @@ only_rules: - opening_brace - operator_usage_whitespace - operator_whitespace +- optional_data_string_conversion - optional_enum_case_matching - orphaned_doc_comment - overridden_super_call @@ -155,6 +156,7 @@ only_rules: - prefer_nimble - prefer_self_in_static_references - prefer_self_type_over_type_of_self +- prefer_type_checking - prefer_zero_over_explicit_init # - prefixed_toplevel_constant - private_action @@ -177,6 +179,7 @@ only_rules: - redundant_objc_attribute - redundant_optional_initialization - redundant_self_in_closure +- redundant_sendable - redundant_set_access_control # - redundant_string_enum_value - redundant_type_annotation @@ -224,7 +227,6 @@ only_rules: - unneeded_synthesized_initializer - unowned_variable_capture - untyped_error_in_catch -- unused_capture_list - unused_closure_parameter - unused_control_flow_label - unused_enumerated diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 92f1121..b7ad9fa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -# Contributing to CollectionBuilders +# Contributing to Collection Builders - [Open Package](#open-package) - [Lint Package](#lint-package) @@ -36,7 +36,7 @@ In all of the following steps, `X.X.X` is a placeholder to be substituted with t - Enter a semantic version as the new tag (__WITHOUT__ `v` prefix) - Set the `main` branch as the target (it should be the default) -- Enter the release title formatted as `CollectionBuilders vX.X.X` (__WITH__ `v` prefix) +- Enter the release title formatted as `Collection Builders vX.X.X` (__WITH__ `v` prefix) - Click on `Generate release notes` - Leave `Set as a pre-release` unchecked - Leave `Set as the latest release` checked diff --git a/Package.resolved b/Package.resolved index c6f2c5a..5a67261 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,4 +1,5 @@ { + "originHash" : "59dcb7e167d4b0cfd64e00322c654f36ce9584e3c74ceab1daae14a22864b0d9", "pins" : [ { "identity" : "collectionconcurrencykit", @@ -41,8 +42,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/Quick/Nimble.git", "state" : { - "revision" : "54b4e52183f16fe806014cbfd63718a84f8ba072", - "version" : "13.4.0" + "revision" : "035b88ad6ae8035f5ce2b50b0a6d69c3b16d2120", + "version" : "14.0.0" } }, { @@ -50,8 +51,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/SourceKitten.git", "state" : { - "revision" : "fd4df99170f5e9d7cf9aa8312aa8506e0e7a44e7", - "version" : "0.35.0" + "revision" : "453f75b8a3bb2c3596c0d2dd422c289788233a22", + "version" : "0.37.1" } }, { @@ -68,8 +69,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-syntax.git", "state" : { - "revision" : "515f79b522918f83483068d99c68daeb5116342d", - "version" : "600.0.0-prerelease-2024-08-14" + "revision" : "1103c45ece4f7fe160b8f75b4ea1ee2e5fac1841", + "version" : "601.0.0" } }, { @@ -77,8 +78,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/realm/SwiftLint.git", "state" : { - "revision" : "a24488f26e60247d8fff7bbb03d51910af3dc91c", - "version" : "0.56.2" + "revision" : "625792423014cc49b0a1e5a1a5c0d6b8b3de10f9", + "version" : "0.59.1" } }, { @@ -104,10 +105,10 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/Yams.git", "state" : { - "revision" : "3036ba9d69cf1fd04d433527bc339dc0dc75433d", - "version" : "5.1.3" + "revision" : "3d6871d5b4a5cd519adf233fbb576e0a2af71c17", + "version" : "5.4.0" } } ], - "version" : 2 + "version" : 3 } diff --git a/Package.swift b/Package.swift index c07cf7d..0db9812 100644 --- a/Package.swift +++ b/Package.swift @@ -1,7 +1,10 @@ -// swift-tools-version:5.8 +// swift-tools-version:5.10 +import Foundation import PackageDescription +let enableSwiftLintBuildToolPlugin = ProcessInfo.processInfo.environment["CODEQL_DIST"] == nil + let package = Package( name: "CollectionBuilders", platforms: [ @@ -16,10 +19,10 @@ let package = Package( dependencies: [ .package( url: "https://github.com/realm/SwiftLint.git", - exact: "0.56.2"), + exact: "0.59.1"), .package( url: "https://github.com/Quick/Nimble.git", - exact: "13.4.0"), + exact: "14.0.0"), ], targets: [ .target( @@ -30,7 +33,7 @@ let package = Package( "CollectionBuilders", "Nimble", ]), - ] + ], ) package.targets.forEach { target in @@ -39,7 +42,9 @@ package.targets.forEach { target in .enableExperimentalFeature("StrictConcurrency"), ] - target.plugins = [ - .plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLint"), - ] + if enableSwiftLintBuildToolPlugin { + target.plugins = [ + .plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLint"), + ] + } } diff --git a/Sources/CollectionBuilders/Array.swift b/Sources/CollectionBuilders/Array.swift index cb95393..987a035 100644 --- a/Sources/CollectionBuilders/Array.swift +++ b/Sources/CollectionBuilders/Array.swift @@ -34,7 +34,7 @@ extension Array { } public static func buildBlock(_ components: Component...) -> Component { - components.flatMap { $0 } + components.flatMap(\.self) } public static func buildOptional(_ component: Component?) -> Component { @@ -50,7 +50,7 @@ extension Array { } public static func buildArray(_ components: [Component]) -> Component { - components.flatMap { $0 } + components.flatMap(\.self) } public static func buildLimitedAvailability(_ component: Component) -> Component {