[WIP] Add Support for XCFrameworks#244
Conversation
| listMode | ||
| (_useXcFrameworks useXcFrameworksFlag) | ||
| (reverseRepositoryMap <> if _noSkipCurrent noSkipCurrentFlag then currentInvertedMap else M.empty) | ||
| (frameworkVersions <> if _noSkipCurrent noSkipCurrentFlag |
There was a problem hiding this comment.
Why Not |
|
|
||
| frameworkNameWithFrameworkExtension = appendFrameworkExtensionTo f | ||
| platformBuildDirectory = carthageArtifactsBuildDirectoryForPlatform platform f | ||
| frameworkNameWithFrameworkExtension = |
There was a problem hiding this comment.
Why Not |
|
|
||
| frameworkNameWithFrameworkExtension = appendFrameworkExtensionTo f | ||
| platformBuildDirectory = carthageArtifactsBuildDirectoryForPlatform platform f | ||
| frameworkNameWithFrameworkExtension = |
There was a problem hiding this comment.
Why Not |
| e2 <- runExceptT $ do | ||
| frameworkBinary <- getFrameworkFromS3 s3BucketName reverseRomeMap fVersion platform | ||
| frameworkBinary <- getFrameworkFromS3 s3BucketName useXcFrameworks reverseRomeMap fVersion platform | ||
| saveBinaryToLocalCache lCacheDir frameworkBinary (prefix </> remoteFrameworkUploadPath) fwn verbose |
There was a problem hiding this comment.
Why Not |
| where | ||
| frameworkZipName = frameworkArchiveName f version | ||
| remoteFrameworkUploadPath = remoteFrameworkPath platform reverseRomeMap f version | ||
| frameworkZipName = frameworkArchiveName f version useXcFrameworks |
There was a problem hiding this comment.
Why Not |
Generated by 🚫 Danger |
|
@evandcoleman I missed this, will review asap |
|
@evandcoleman can you elaborate a bit more on the use of --platforms with .xcframeworks? Does it even make sense to allow both flags? Why not just error out if both |
| , SkipLocalCacheFlag {- skipLocalCache -} | ||
| , NoSkipCurrentFlag {- noSkipCurrentFlag -} | ||
| , ConcurrentlyFlag) {- concurrentlyFlag -} | ||
| , NoSkipCurrentFlag {- skipLocalCache -} |
There was a problem hiding this comment.
this looks like a weird rename. This is supposed to skip the current framework. Not the local cache. Unless I made a mistake that is.
I think we'll want to support including both flags. In the case of Carthage frameworks that are closed-source and distributed as a compiled binary, those still get placed in a platform specific folder in the Carthage build folder. |
But that only makes sense for regular frameworks. Carthage puts |
Yup! That is the case, but I'm thinking of frameworks such as the Braze SDK. Their Carthage framework is only distributed as a prebuilt (.framework) binary. Without the platform flag and with the xcframework flag, should Rome fail in that case? Or maybe fallback to looking for a regular framework and assume we want all platforms? |
I think it should fail. Either it finds and xcframeworks or it doesn't. No fallbacks. |
|
Any update here guys? Can't wait for this one 😄 @tmspzz @evandcoleman |
|
@evandcoleman @tmspzz Anything we can do to help get this in, even in an MVP form? |
|
Super excited for this! Let us know if there is anything we can do to help |
|
Unfortunately, I don't really have the time to spend on this. It's currently in a semi-working state which has been usable for my company. If someone with more Haskell experience than me wants to take this on, then by all means. |
|
What's left to do to get this in? Would it make sense to get this in partially working, and open another PR to fix the remaining issues? |
|
Closing in favor of #247 |
|
thanks @evandcoleman for the amazing work! Now @vikrem will push it over the finish line. 🥳 |
Addresses #238
A first pass at adding XCFramework support to Rome. This is my first time writing any Haskell so please be kind. This is not a complete implementation, but it's in a place where it's usable. I'd love if someone with more Haskell experience could pick this up and bring it across the finish line. Or maybe even just point me in the right direction.
Changes
--use-xcframeworksflag to theupload,download, andlistcommandsKnown Issues
--use-xcframeworksand a--platformignores frameworks that aren't xcframeworks (workaround is to run it twice with and without the use xcframeworks option)--use-xcframeworksand a--platformplaces all frameworks inside a platform specific folder in the cacheP.S: We love Rome at The Knot. It's undoubtedly saved us hundreds (if not thousands) of developer hours in the two years we've been using it. Thank you so much for building such a useful tool.