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 build system; - Freezing UI during navigating through a project or editing it; - Broken or extremely slow autocompletion; - Noisy laptop turbines, heated aluminum, and infinite spinning pinwheel.
🏈 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.
This version of Rugby hasn’t opened source yet. I’m going to open it this summer. There are still a lot of preparation steps to do.
But you can download a binary, read the guide 🦮 how to install it. If you look for the legacy Rugby 1.x, which source is opened, visit this page.
How to use 🏈
Preconditions
Before using Rugby you should be sure that your project source code is finalized. 🔸 For example: if you use SwiftGen, 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;
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 like rugby -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:
Also, you can write a custom plan (sequence of commands). Use 🏈 RugbyPlanner application for visualizing changes in your project without applying them. For advanced usage, please read the documentation below.
Feel free to open a pull request / an issue or a discussion.
📮 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.
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 build system;-
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 📦
This version of Rugby hasn’t opened source yet. I’m going to open it this summer.
There are still a lot of preparation steps to do.
But you can download a binary, read the guide 🦮 how to install it.
If you look for the legacy
Rugby 1.x
, which source is opened, visit this page.How to use 🏈
Preconditions
🔸 For example: if you use
SwiftGen
, 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;
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 like
rugby -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:Deintegrate it with the rollback command:
Also, you can write a custom plan (sequence of commands).
Use 🏈 RugbyPlanner application 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
🎯 Roadmap
🤝 Contribution
Feel free to open a pull request / an issue or a discussion.
📮 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 🏈