swiftyfinch/rugby
Why do we need some optimizations while working on huge projects with [CocoaPods](https://github.com/CocoaPods/CocoaPods)?\
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
<br>
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 | bashSelf-Update
If you already have Rugby, which version is at least 2.0.0b2, you can use such a command.
> rugby updateFull 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 ๐
<details><summary>Preconditions</summary> <p>
- 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 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.\ If you encounter a problem, try to use rugby 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 like rugby -e BadPod.\ ๐ธ For example: if some of your pods use incorrect headers.
<hr> </p> </details>
Then run this command in your project directory after each pod install.\ It will build all targets by default:
> rugbyDeintegrate it with the rollback command:
> rugby rollbackAlso, 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
<br>
๐ค 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) <ins><b>Press</b></ins> โญ๏ธ. It's a nice mark which means that Rugby is useful;\ 2) <ins><b>Share</b></ins> the project ๐ somewhere with somebody;\ 3) <ins><b>Leave feedback</b></ins> in the discussions ๐ฌ section.
Let's Roll-oll ๐
Package Metadata
Repository: swiftyfinch/rugby
Default branch: main
README: README.md