Xcode project framework: Tuist

I saw a couple of tools (mise, tuist) in use at NSScreencast and thought I’d try them out. They seem kinda useful, but it’s possible (likely) that I’m just not using them to their full potential, since they solve some problems that I sometimes have, and introduce new friction that I usually don’t have.

Tuist seems to be all about making Xcode projects and workspaces deterministic and reproducible, with consequently deterministic and reproducible artifacts. This is especially useful when you’re shipping production code that’s being worked on by multiple developers, and it’s a good thing to be able to offload the building of those production artifacts to a dedicated (and clean!) build machine. Since the projects and workspaces do not get checked in (they are generated by the tool out of a Swift source file, much like an SPM package definition), there’s less chance of a particular developer’s settings getting committed to a shared repository.

Tuist doesn’t generate up-to-date projects and workspaces, though, because Apple. (If you know, you know, and if you don’t, it’s a long story.) So, that’s annoying. Use Tuist and you get reproducible builds on every machine with no surprises, but you also get 1.2 killion warnings about updated project settings, attempts to strip already stripped libraries, and I don’t know what else because once the list of warnings is longer than my inbox, I can’t pay attention.

I’m also not entirely sure how (or if it’s even possible) to make a Tuist project use settings files to override all the settings in the .xcworkspace and .xcodeproj files. Since those files get recreated every time you execute “tuist generate” it would require diving deep into the fine documentation over at Tuist’s website. At the two hour mark, it stops being a handy tool for a developer and starts being a job in and of itself and you stop being an application developer and start being a release engineer. Which is fine, if that’s your passion.

And a final note, here: mise is like ant or maybe maven, but without the part where intermediate artifacts are cached. So, every time you run a mise build, you rebuild everything.

Published by pirateguillermo

I play the bagpipes. I program computers. I support my family in their various endeavors, and I enjoy my wonderful life.

Leave a Reply

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)

Discover more from Mechadarwin

Subscribe now to keep reading and get access to the full archive.

Continue reading