BridgeJS: Skip directories in generate input file processing #586
+7
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
We ran into a build failure when using the BridgeJS build plugin on a target that contains a
.doccdocumentation catalog:SwiftPM's
target.sourceFilesincludes.docccatalog entries, which the build plugin passes to BridgeJSTool as positional arguments. The tool then tries toString(contentsOf:)the directory path and fails.Previously export subcommand had a
guard sourceURL.pathExtension == "swift" else { continue }check that was dropped during the refactor to the unified generate subcommand in #499.Fix
Rather than restoring the
.swiftextension filter (which could be too restrictive if the tool needs to process non-.swiftfiles in the future), this adds a directory check to skip entries that aren't regular files.On nested folders: This won't break nested source directories. SwiftPM's target.sourceFiles passes individual file paths (e.g.,
ManualBindings/Foo.swift), not subdirectory paths. The only entries that come through as directories are special bundles like.docccatalogs - regular nested source folders workfine because their contents are enumerated as individual files.This is the minimal change that unblocks us - happy to adjust the approach if you'd prefer a different solution (like filtering in the build plugin instead), as long as
.doccdirectories don't break the build 🙏🏻