Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - swiftyfinch/Rugby: 🏈 Cache CocoaPods for faster rebuild and indexing Xcode project.
🏈 Cache CocoaPods for faster rebuild and indexing Xcode project. - swiftyfinch/Rugby
Visit SiteGitHub - swiftyfinch/Rugby: 🏈 Cache CocoaPods for faster rebuild and indexing Xcode project.
🏈 Cache CocoaPods for faster rebuild and indexing Xcode project. - swiftyfinch/Rugby
Powered by 0x5a.live 💗
Motivation
Why do we need some optimizations while working on huge projects with CocoaPods?
-
Slow and unnecessary indexing of pods targets, which implementation we rarely try to edit;
-
Redundant rebuild time, probably as a result of problems, related to CocoaPods or Xcode;
-
Freezing UI during navigating through a project or editing it;
-
Broken or extremely slow autocompletion;
-
Noisy laptop turbines, heated aluminum, and infinite spinning pinwheel.
More in the 📖 foundation and remastering stories.
Description
🏈 Rugby
is CLI tool that was developed to solve the above problems:
+
Cache all pods dependencies and remove their targets from the Pods project;
+
Rebuild only changed pods or even download them;
+
Delete any unneeded targets with sources from a project and reduce its size.
What makes it different?
🕊 Not a project dependency, just an optional step;
🌱 Doesn't change Podfile and Podfile.lock;
✈️ Can run a sequence of commands from a YAML file;
🕹️ Single command usage;
🐳 Ready for remote cache;
🧣 Cozy log output;
🚀 Swiftish and uses native Xcode build system.
Ruby alternatives: PodBuilder | CocoaPods Binary Cache | CocoaPods Binary
How to install 📦
First of all, if you have the first version Rugby 1.x
, you need to delete it.
Then call where rugby
command and be sure that there are no any of paths to rugby.
First Install
curl -Ls https://swiftyfinch.github.io/rugby/install.sh | bash
Self-Update
If you already have Rugby, which version is at least 2.0.0b2
, you can use such a command.
> rugby update
Full Guide
Read more in the guide how to install it.
If you look for the legacy Rugby 1.x
, visit this page.
How to use 🏈
- If you use Objective-C in your project, be sure that you import modules correctly.
Use@import Something
instead of#import "Something.h"
.
Because Rugby will include built frameworks in your project; - Before using Rugby you should be sure that your project source code is finalized.
🔸 For example: if you useSwiftGen
, run it before calling Rugby.
Otherwise, your source code will be modified during building with Rugby. Then the hashes of binaries will not be suited.
If you encounter a problem, try to userugby build pre
to prebuild your project and finalize source code; - Be sure that all your pods (including development) are ready to build standalone.
Otherwise, you can get a state when one of them can't be reused correctly without the source of its dependencies.
As a temporary workaround, you can exclude some pods likerugby -e BadPod
.
🔸 For example: if some of your pods use incorrect headers.
Then run this command in your project directory after each pod install
.
It will build all targets by default:
> rugby
Deintegrate it with the rollback command:
> rugby rollback
Also, you can write a custom plan (sequence of commands).
Use 🏈 RugbyPlanner for visualizing changes in your project without applying them.
For advanced usage, please read the documentation below.
📚 Documentation
📦 How to Install
📖 Commands Help
🚏 Migration Guide
🐳 Remote Cache
🤝 Contribution
Feel free to open a pull request or a discussion.
Known Issues 🐞 |
---|
#394: Unable to run tests via Xcode (via make test they run perfectly) |
#270: Missing public OutputType |
📮 Support
If you want to support this project, you can do some of these:
1)
Press ⭐️. It's a nice mark which means that Rugby is useful;
2)
Share the project 🌍 somewhere with somebody;
3)
Leave feedback in the discussions 💬 section.
Let's Roll-oll 🏈
Swift Resources
are all listed below.
Made with ❤️
to provide different kinds of informations and resources.