Hey
Thanks for the proposal
I think this is very similar to the discussion we’ve had here. My take was that any globs, like Resources/**
or Sources/**
, should be turned into buildable (synchronized) groups as it leads to better performance. Additionally, tuist generate
needs to be run less often as when files are removed/added by for example checking out a different branch, Xcode would automatically sync those changes with the file system. While technically, you can have a buildable group for both resources and sources, I’d keep a distinction here as I think it leads to better structured projects. We can ensure that buildable resource groups exclude sources files (and vice versa).
Tuist “SynthesizedResourceAccessors” can not generate accessor for resources reference by this
That’s a pattern we should imho start moving away from. Xcode 26 has support for dynamically creating accessors for strings. Is there something similar for resources?
Anyways, this means we can’t turns resources globs to buildable groups in a non-breaking manner.
Certainly for resources, I’m aligned with @pepicrft’s suggestion from here to have a .synchronized
type:
let target = Target(
/..../
sources: .synchronized("Sources/MyTarget"),
resources: .synchronized("Resources/MyTarget"),
)