tuist / tuist

A Swifty toolchain to build better Apple apps, faster
https://tuist.io
MIT License
4.37k stars 519 forks source link

Add support for building, running, and testing multi-platform targets #5920

Open pepicrft opened 4 months ago

pepicrft commented 4 months ago

Users reported issues trying to build, test, and run multi-platform targets. That's because we haven't yet iterated on those commands to support multi-platform targets. We should add support for that.

waltflanagan commented 4 months ago

What are we thinking about when we say "support" what would tuist build do when run for a multiplatform target? build against every supported platform sequentially?

Similarly with run what does that mean with a multiplatform target?

pepicrft commented 4 months ago

What are we thinking about when we say "support" what would tuist build do when run for a multiplatform target? build against every supported platform sequentially?

Exactly. Also make sure that there's a CLI interface to indicate the platforms they want to build for. Looking at the current interface, I think it's a bit confusing:

  -d, --device <device>   Build on a specific device.
  --platform <platform>   Build for a specific platform.
  -o, --os <os>           Build with a specific version of the OS.

Should we use --destination instead, like Xcode does? Instead of abstracting that away and trying to be smart about it?

Similarly with run what does that mean with a multiplatform target?

I don't think this one makes sense to make it multi-platform. I can't think of a use case where the user will want to run it in three destinations at the same time? Or maybe it's common?

fortmarek commented 2 weeks ago

/bounty $200

algora-pbc[bot] commented 2 weeks ago

💎 $200 bounty • Tuist

Steps to solve:

  1. Start working: Comment /attempt #5920 with your implementation plan
  2. Submit work: Create a pull request including /claim #5920 in the PR body to claim the bounty
  3. Receive payment: 100% of the bounty is received 2-5 days post-reward. Make sure you are eligible for payouts

Additional opportunities:

Thank you for contributing to tuist/tuist!

Add a bounty • Share on socials

woin2ee commented 2 weeks ago

Hi! @pepicrft 👋

It's been a few months, but are you right in saying this because there are platform settings and device and OS settings separate each?

Looking at the current interface, I think it's a bit confusing:

  -d, --device <device>   Build on a specific device.
  --platform <platform>   Build for a specific platform.
  -o, --os <os>           Build with a specific version of the OS.

If yes, I think we need integrated platform settings because device and OS settings are dependent on a platform. What do you think now? still have the same think?

Should we use --destination instead, like Xcode does? Instead of abstracting that away and trying to be smart about it?

pepicrft commented 1 week ago

It's been a few months, but are you right in saying this because there are platform settings and device and OS settings separate each?

Correct. As a user of the CLI, when I look at that help menu, I don't really know which values I should be able to pass, which makes me think about whether we should just embrace the -destination interface of the underlying xcodebuild process.

tuist build -- -destination '....'

How much value are we providing by adding another interface on top of that (if any)?