🏈 Cache CocoaPods for faster rebuild and indexing Xcode project.

Overview



Motivation

Working on a project with a huge amount of pods I had some troubles:
- Slow and unnecessary indexing of pods targets, which implementation I rarely try to edit;
- Redundant rebuild time, probably as a result of problems CocoaPods hooks or Xcode build system;
- Freezing UI during navigation.

You can read πŸ“– full story on my blog.

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;
+ Remove unnecessary sources from a project and reduce project size;
+ Drop any unneeded targets with sources and resources by RegEx.

What makes it different?

πŸ•Š Not a dependency, just an optional step
πŸ”’ Doesn't change Podfile and Podfile.lock
πŸ›  Custom steps
πŸ“ˆ Metrics after each command
✨ Fancy log output
πŸš€ Swiftish!

Ruby alternatives:
- PodBuilder
- CocoaPods Binary Cache
- CocoaPods Binary

Discussions

You can read more about 🏈 Rugby in discussions section.
Feel free to report any issues or suggest some new feature requests.


Quick start with Mint 🌱

brew install mint
mint install swiftyfinch/rugby

# Now on Mint 0.17.0 you'll need to add ~/.mint/bin to your $PATH
# For example, add this to your ~/.zshrc file and relaunch terminal
export PATH=$HOME/.mint/bin:$PATH

Watch 🎬 installation demo

How to use 🏈

Run in your project directory after each pod install:

pod install && rugby

Watch 🎬 Basic Usage Demo
Read more about advanced usage

Documentation πŸ“š

Command Description
πŸš‘ Help General Rugby documentation.
🏈 Cache Convert pods to prebuilt dependencies.
✈️ Plans Run a predefined sequence of commands.
πŸ” Focus Keep only selected targets and all their dependencies.
πŸ—‘ Drop Remove any targets by RegEx.
πŸ”­ How to
Generating and Installing Completion Scripts

Author

Vyacheslav Khorkov
Twitter: @SwiftyFinch
Blog: swiftyfinch.github.io
Feel free to contact me ☎️

Comments
  • πŸ› Build target extension failed: framework not found Alamofire

    πŸ› Build target extension failed: framework not found Alamofire

    Did you already try Rugby doctor?

    Yes

    Describe the bug

    This is my first time using Rugby on a project, and it only has one extension called OneSignalNotificationServiceExtension, I did run rugby command then after building the project, I got following error:

    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/Alamofire'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/ECSlidingViewController'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/FirebaseAuth'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/FirebaseCore'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/FirebaseCoreDiagnostics'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/FirebaseDatabase'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/FirebaseInstallations'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/GTMSessionFetcher'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/Google-Maps-iOS-Utils'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/GoogleDataTransport'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/GoogleUtilities'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/Kingfisher'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/MBProgressHUD'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/PromisesObjC'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/SDWebImage'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/SwiftyJSON'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/TagListView'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/UICKeyChainStore'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/leveldb-library'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/libPhoneNumber-iOS'
    ld: warning: directory not found for option '-F/Path-to-project/Pods/../.rugby/build/Debug-iphonesimulator/nanopb'
    ld: framework not found Alamofire
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    To Reproduce

    Steps to reproduce the behavior:

    1. Reinstall pods then run Rugby
    pod deintegrate
    pod install && rugby
    
    1. Open and build the project
    2. See an error framework not found Alamofire

    Expected behavior

    I expect the project to build successfully.

    Environment (please complete the following information):

    • Version 1.15.0
    • Logs .rugby/build.log (Empty) .rugby/rawBuild.log (No such file or directory) .rugby/rugby.log:
    * Rugby version: 1.15.0
    * Command: rugby 
    * Xcode 12.4 / Build version 12D4e
    * Apple Swift version 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28)
    * CPU: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
    * Project: ProjectName
    * Git branch: master
    ---------------------------------
    Prepare Read project βœ“
    Prepare Pods (27):
    Prepare * Alamofire
    Prepare * ECSlidingViewController
    Prepare * Firebase
    Prepare * FirebaseAnalytics
    Prepare * FirebaseAuth
    Prepare * FirebaseCore
    Prepare * FirebaseCoreDiagnostics
    Prepare * FirebaseDatabase
    Prepare * FirebaseInstallations
    Prepare * Google-Maps-iOS-Utils
    Prepare * GoogleAppMeasurement
    Prepare * GoogleDataTransport
    Prepare * GoogleMaps
    Prepare * GooglePlaces
    Prepare * GoogleUtilities
    Prepare * GTMSessionFetcher
    Prepare * Kingfisher
    Prepare * leveldb-library
    Prepare * libPhoneNumber-iOS
    Prepare * MBProgressHUD
    Prepare * nanopb
    Prepare * OneSignal
    Prepare * PromisesObjC
    Prepare * SDWebImage
    Prepare * SwiftyJSON
    Prepare * TagListView
    Prepare * UICKeyChainStore
    Prepare Calculate checksums βœ“
    Prepare Resolving dependencies graph
    Prepare Build targets (27):
    Prepare * Alamofire
    Prepare * ECSlidingViewController
    Prepare * Firebase
    Prepare * FirebaseAnalytics
    Prepare * FirebaseAuth
    Prepare * FirebaseCore
    Prepare * FirebaseCoreDiagnostics
    Prepare * FirebaseDatabase
    Prepare * FirebaseInstallations
    Prepare * Google-Maps-iOS-Utils
    Prepare * GoogleAppMeasurement
    Prepare * GoogleDataTransport
    Prepare * GoogleMaps
    Prepare * GooglePlaces
    Prepare * GoogleUtilities
    Prepare * GTMSessionFetcher
    Prepare * Kingfisher
    Prepare * leveldb-library
    Prepare * libPhoneNumber-iOS
    Prepare * MBProgressHUD
    Prepare * nanopb
    Prepare * OneSignal
    Prepare * PromisesObjC
    Prepare * SDWebImage
    Prepare * SwiftyJSON
    Prepare * TagListView
    Prepare * UICKeyChainStore
    Prepare Add build target: RugbyPods
    Prepare Save project βœ“
    [20s] Prepare βœ“
    Build Building sim-x86_64 βœ“
    Build Update checksums βœ“
    [5s] Build βœ“
    Integration Update paths to builded pods βœ“
    [1s] Integration βœ“
    Clean up Read project βœ“
    Clean up Remove sources from project
    Clean up Remove frameworks
    Clean up Remove products
    Clean up Remove build target
    Clean up Remove builded pods
    Clean up Remove schemes
    Clean up Save project βœ“
    [4s] Clean up βœ“
    [31s] Cached 27/27 pods.
    [!] Project size ↓95%
    [!] Indexing files count ↓99%
    [!] Targets count ↓93%
    [31s] Let's roll 🏈
    
    • Podfile:
    platform :ios, '12.0'
    
    source 'https://cdn.cocoapods.org/'
    
    target 'ProjectName' do
      # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
      use_frameworks!
      
      # Pods for ProjectName
      pod 'GooglePlaces'
      pod 'GoogleMaps'
      pod 'Google-Maps-iOS-Utils', '~> 4.1.0'
      pod 'SwiftyJSON'
      pod 'UICKeyChainStore'
      pod 'Firebase/Core'
      pod 'Firebase/Auth'
      pod 'Firebase/Database'
      pod 'SDWebImage', '~> 4.0'
      pod 'Alamofire', '~> 4.7'
      pod 'MBProgressHUD', '~> 1.2.0'
      pod 'ECSlidingViewController', '~> 2.0.3'
      pod 'TagListView', '~> 1.0'
      pod 'OneSignal', '>= 3.0.0', '< 4.0'
      pod 'Kingfisher', '~> 7.0'
      pod 'libPhoneNumber-iOS', '~> 0.8'
      
      target 'OneSignalNotificationServiceExtension' do
        pod 'OneSignal', '>= 3.0.0', '< 4.0'
      end
      
    end
    
    bug 
    opened by devahmedshendy 102
  • Error on building project after integrating Rugby

    Error on building project after integrating Rugby

    Did you already try Rugby doctor? Yes

    Describe the bug I have 2 different projects(lets call them Project A & B) and they share some pods. I integrated rugby to first project A successfully without any issue. However, after integrating rugby with my 2nd project B I am getting this error when I try to build project B:

    ld: library not found for -lAppAuth
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    I dont know what framework is this, doesnt look like any from my pod file.

    To Reproduce Steps to reproduce the behavior: Not sure because rugby is working fine with one of my other project.

    Expected behavior rugby should integrate without any error to my 2nd project as well.

    Environment (please complete the following information):

    bug need more info 
    opened by prgorasiya 33
  • For some pods the `PODS_ROOT` value is null

    For some pods the `PODS_ROOT` value is null

    Did you already try Rugby doctor?

    Yes

    Describe the bug

    I'm testing rugby integration in my project and seems that for some pods the PODS_ROOT environment value is null. The failure is in the xcodebuild command.

    If I replace the ${PODS_ROOT} value with the absolute one (with my user and the project path) its working for these group of pods. The other pods that I have in my project don't have the issue. In total there are around ~35 pods.

    To Reproduce

    Just a project with the following pods:

    • Appsflyer
    • Apptimize
    • iProov

    Expected behavior

    I would expect to use the PODS_ROOT in these pods as well

    Screenshots

    Output of rugby command with the PODS_ROOT: image

    Output of rugby command hardcoding the path: image

    This is how I had the Build Phases -> [CP] Copy XCFrameworks for Appsflyer target

    image

    Also noted that after running rugby successfully these pods are not being included in the Pods-{project} target image

    Environment (please complete the following information):

    • rugby 1.17.0
    • cocoapods 1.10.0
    • Xcode 13.2

    Unfortunately I can't share logs for the project

    Thanks in advance

    bug need more info awaiting response 
    opened by fedejordan 22
  • πŸ› Rugby not working if we use Flutter inside project.

    πŸ› Rugby not working if we use Flutter inside project.

    Describe the bug

    • If i use rugby without flutter integration it will not have other pod dependencies showing in pods target.
    • But if use with flutter it will add all the pods that flutter needs to the pods target and it is failing. Below attached ss.
    Screenshot 2022-05-13 at 10 45 25 PM

    To Reproduce

    Steps to reproduce the behavior:

    • Create a flutter project.
    • Integrate the flutter using this link https://docs.flutter.dev/development/add-to-app/ios/project-setup and use Option A.
    • Then do pod install through rugby you will succeed and it will create Frameworks folder inside our codebase.
    • But because the flutter is doing some random thing its adding other pod dependencies inside pod target and then its failing.

    Expected behavior

    A clear and concise description of what you expected to happen.

    Screenshots

    Screenshot 2022-05-13 at 10 39 03 PM

    Environment (please complete the following information):

    • Xcode 13.2.1

    Rugby clean report.

        Clean Removed .rugby/build
        Clean Removed .rugby/cache.yml
        [1s] Clean βœ“
    
    • Example podfile
        use_frameworks!
        
        platform :ios, '11.0'
        
        def shared_ui_pod
          pod 'RxSwift'
          pod 'RxCocoa'
          pod 'AlamofireImage'
          pod 'lottie-ios'
        end
        
         submodule linkage
        flutter_application_path = './Flutter/'
        load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
        
        target 'Project' do
        
          # this is only needed for targets using flutter
          install_all_flutter_pods(flutter_application_path)
        
          use_frameworks!
          shared_ui_pod
          app_dependencies
    
    bug awaiting response 
    opened by shreesha-kedilaya 20
  • πŸ› The operation couldn’t be completed. (Rugby.Lockfile.LockFileError)

    πŸ› The operation couldn’t be completed. (Rugby.Lockfile.LockFileError)

    Did you already try Rugby doctor?

    Yes, and without any error message.

    Describe the bug

    I executed rugby cache --arch arm64 --sdk ios after executing pod install, and an error occurred.

    > rugby cache --arch arm64 --sdk ios
    Prepare Read project βœ“
    ⛔️ Error: The operation couldn’t be completed. (Rugby.Lockfile.LockFileError error 0.)
    πŸš‘ Call doctor for more help: rugby doctor
    

    I don't know why I'm getting this error all of a sudden, because I used to use rugby smoothly. I've tried rugby clean or manually deleting files other than plan.yml, and even reinstalling rugby, nothing worked to me.

    To Reproduce

    Steps to reproduce the behavior:

    1. pod install
    2. rugby cache --arch arm64 --sdk ios
    3. See an error

    Expected behavior

    no error.

    Screenshots

    image

    Environment (please complete the following information):

    • Version [e.g. 1.15.0]
    • Logs (use rugby doctor)
    πŸš‘ If you have any problems, please try these solutions.
    After each one, you need to repeat your usual workflow.
    
    1. Update 🏈 Rugby to the last version:
       mint install swiftyfinch/rugby
    2. Add ignore option rugby --ignore-checksums.
       Be careful, you can't pass this option to plans command this way;
    3. Try rugby clean before repeating your usual workflow;
    4. Try to clean up your DerivedData and use rugby clean together;
    5. Check that Pods project builds successfully without Rugby.
    
    By the way, you can try to investigate build logs by yourself:
    .rugby/rugby.log
    .rugby/build.log
    .rugby/rawBuild.log
    and more there .rugby/history
    
    Report an issue in GitHub discussions or any convenience support channel.
    Attach last files from .rugby/history folder.
    But be sure that there are no sensitive data.
    
    • Podfile or Example project (if you can share these)

    sorry, i can not share the podfile,but i can run project success after pod intsall

    Additional context

    Add any other context about the problem here.

    bug need more info 
    opened by XiFengLang 13
  • Rugby cache fails for Appboy - missing xcfilelist

    Rugby cache fails for Appboy - missing xcfilelist

    Describe the bug

    Rugby cache failing on

    Screenshot 2022-10-05 at 11 46 14

    I have been looking for the mentioned filename in the whole project but I do not see where it is defined. It does not help also when I exclude Appboy from being cached.

    I would welcome any hints that could tell me more what is happening.

    To Reproduce

    Steps to reproduce the behavior:

    1. Just run rugby cache -arch arm64
    2. Error occures.

    Expected behavior

    Framework is built.

    Environment (please complete the following information):

    • Version 1.20.0
    • Logs (use rugby doctor)
    • Podfile or Example project (if you can share these)

    Additional context

    Add any other context about the problem here.

    build.log rawBuild.log rugby.log

    bug awaiting response 
    opened by r2-pro 12
  • πŸ› Unable to install Rugby: `swift package resolve` fails on `xcbeautify`

    πŸ› Unable to install Rugby: `swift package resolve` fails on `xcbeautify`

    
    % brew install mint
    ==> Downloading https://ghcr.io/v2/homebrew/core/mint/manifests/0.17.1
    ######################################################################## 100.0%
    ==> Downloading https://ghcr.io/v2/homebrew/core/mint/blobs/sha256:5faf98e60b6d18332bcac4ab076f6ba861ee7daea4c23a85f97e6c8fa3d1f463
    ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:5faf98e60b6d18332bcac4ab076f6ba861ee7daea4c23a85f9
    ######################################################################## 100.0%
    ==> Pouring mint--0.17.1.monterey.bottle.tar.gz
    🍺  /usr/local/Cellar/mint/0.17.1: 6 files, 1.5MB
    ==> Running `brew cleanup mint`...
    Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
    Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
    
    % mint install swiftyfinch/rugby
    🌱 Finding latest version of rugby
    🌱 Cloning rugby 1.17.1
    🌱 Resolving package
    error: Dependencies could not be resolved because no versions of 'xcbeautify' match the requirement 0.10.1..<1.0.0 and root depends on 'xcbeautify' 0.10.1..<1.0.0.
    🌱 Encountered error during "swift package resolve". Use --verbose to see full output
    🌱  Failed to resolve rugby 1.17.1 with SPM
    
    % mint install --verbose swiftyfinch/rugby
    🌱 Finding latest version of rugby
    🌱 Cloning rugby 1.17.1
    Cloning into 'github.com_swiftyfinch_rugby'...
    remote: Enumerating objects: 263, done.
    remote: Counting objects: 100% (263/263), done.
    remote: Compressing objects: 100% (225/225), done.
    remote: Total 263 (delta 32), reused 151 (delta 17), pack-reused 0
    Receiving objects: 100% (263/263), 100.54 KiB | 1.52 MiB/s, done.
    Resolving deltas: 100% (32/32), done.
    Note: switching to 'f957969911b8a62d67f7b8a3247bab1bd0be32ca'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by switching back to a branch.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -c with the switch command. Example:
    
      git switch -c <new-branch-name>
    
    Or undo this operation with:
    
      git switch -
    
    Turn off this advice by setting config variable advice.detachedHead to false
    
    🌱 Resolving package
    Fetching https://github.com/jpsim/Yams.git from cache
    Fetching https://github.com/MaxDesiatov/XMLCoder.git from cache
    Fetching https://github.com/apple/swift-argument-parser from cache
    Fetched https://github.com/apple/swift-argument-parser (0.63s)
    Fetched https://github.com/jpsim/Yams.git (0.63s)
    Fetched https://github.com/MaxDesiatov/XMLCoder.git (0.63s)
    Fetching https://github.com/JohnSundell/Files from cache
    Fetching https://github.com/kylef/PathKit.git from cache
    Fetching https://github.com/getGuaka/Colorizer.git from cache
    Fetched https://github.com/getGuaka/Colorizer.git (0.52s)
    Fetched https://github.com/JohnSundell/Files (0.52s)
    Fetched https://github.com/kylef/PathKit.git (0.52s)
    Fetching https://github.com/tadija/AEXML.git from cache
    Fetching https://github.com/kylef/Spectre.git from cache
    Fetching https://github.com/onevcat/Rainbow from cache
    Fetched https://github.com/kylef/Spectre.git (0.71s)
    Fetching https://github.com/kareman/SwiftShell from cache
    Fetched https://github.com/tadija/AEXML.git (0.71s)
    Fetched https://github.com/onevcat/Rainbow (0.71s)
    Fetching https://github.com/thii/xcbeautify.git from cache
    Fetching https://github.com/tuist/xcodeproj from cache
    Fetched https://github.com/tuist/xcodeproj (2.04s)
    Fetched https://github.com/kareman/SwiftShell (2.04s)
    Fetched https://github.com/thii/xcbeautify.git (2.04s)
    Computing version for https://github.com/thii/xcbeautify.git
    error: Dependencies could not be resolved because no versions of 'xcbeautify' match the requirement 0.10.1..<1.0.0 and root depends on 'xcbeautify' 0.10.1..<1.0.0.
    🌱 Encountered error during "swift package resolve"
    🌱  Failed to resolve rugby 1.17.1 with SPM
    
    % mint install --verbose tuist/xcbeautify
    🌱 Finding latest version of xcbeautify
    🌱 Cloning xcbeautify 0.12.0
    Cloning into 'github.com_tuist_xcbeautify'...
    remote: Enumerating objects: 60, done.
    remote: Counting objects: 100% (60/60), done.
    remote: Compressing objects: 100% (54/54), done.
    remote: Total 60 (delta 0), reused 25 (delta 0), pack-reused 0
    Receiving objects: 100% (60/60), 36.00 KiB | 1.20 MiB/s, done.
    Note: switching to '66c5e32dacca5f07c26c0c6cbe01c6796fcc6149'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by switching back to a branch.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -c with the switch command. Example:
    
      git switch -c <new-branch-name>
    
    Or undo this operation with:
    
      git switch -
    
    Turn off this advice by setting config variable advice.detachedHead to false
    
    🌱 Resolving package
    Fetching https://github.com/apple/swift-argument-parser.git from cache
    Fetching https://github.com/MaxDesiatov/XMLCoder.git from cache
    Fetching https://github.com/getGuaka/Colorizer.git from cache
    Fetched https://github.com/getGuaka/Colorizer.git (0.61s)
    Fetched https://github.com/MaxDesiatov/XMLCoder.git (0.61s)
    Fetched https://github.com/apple/swift-argument-parser.git (0.61s)
    Computing version for https://github.com/MaxDesiatov/XMLCoder.git
    error: Dependencies could not be resolved because no versions of 'xmlcoder' match the requirement 0.13.1..<1.0.0 and root depends on 'xmlcoder' 0.13.1..<1.0.0.
    🌱 Encountered error during "swift package resolve"
    🌱  Failed to resolve xcbeautify 0.12.0 with SPM
    
    % mint install --verbose CoreOffice/XMLCoder
    🌱 Finding latest version of XMLCoder
    🌱 Cloning XMLCoder 0.13.1
    Cloning into 'github.com_CoreOffice_XMLCoder'...
    remote: Enumerating objects: 190, done.
    remote: Counting objects: 100% (190/190), done.
    remote: Compressing objects: 100% (172/172), done.
    remote: Total 190 (delta 44), reused 61 (delta 15), pack-reused 0
    Receiving objects: 100% (190/190), 159.19 KiB | 1.89 MiB/s, done.
    Resolving deltas: 100% (44/44), done.
    Note: switching to 'f30119af03996939cc4f54e0bf0dda9f88a84da5'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by switching back to a branch.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -c with the switch command. Example:
    
      git switch -c <new-branch-name>
    
    Or undo this operation with:
    
      git switch -
    
    Turn off this advice by setting config variable advice.detachedHead to false
    
    🌱 Resolving package
    🌱  Executable product not found in XMLCoder 0.13.1
    
    % 
    
    bug blocked awaiting response 
    opened by marlonrichert 12
  • Add path argument

    Add path argument

    Is your feature request related to a problem? Please describe.

    I am using fastlane on CI and after running rugby get error

    ⛔️ Error: Files encountered an error at '/Users/apple/client-ios/fastlane/Pods/Pods.xcodeproj/'.
    Reason: missing
    

    Describe the solution you'd like

    add path argument to rugby cache eg rugby cache --path 'path/to/pods/project/Pods.xcodeproj'

    Maybe I not found it in docs. Thanks

    feature awaiting response 
    opened by makleso6 10
  • πŸ› Fail to run the rugby in particular environment

    πŸ› Fail to run the rugby in particular environment

    Did you already try Rugby doctor?

    Yes tried it is not helpful. Or I am new to rugby. But it seems like it fails when there are multiple target in the projects and we are using chained dependencies.But I am not sure

    Describe the bug

    Try to run the attached project. There is one library in the project Mo-Engage. Which causing this issue

    To Reproduce

    Steps to reproduce the behavior:

    1. pod install
    2. rugby

    Expected behavior

    It should run the rugby command

    Screenshots

    If applicable, add screenshots to help explain your problem.

    Environment (please complete the following information):

    • Version [e.g. 1.13.0]
    • Logs (use rugby doctor)
    • Podfile or Example project (if you can share these)

    Additional context

    Add any other context about the problem here. TestRugby.zip

    bug 
    opened by Parvinderjit 9
  • duplicate symbol '_NDR_record' in ld: 1 duplicate symbol for architecture x86_64

    duplicate symbol '_NDR_record' in ld: 1 duplicate symbol for architecture x86_64

    cat .rugby/build.log

    [pop] Touching pop.framework
    [nanopb] Touching nanopb.framework
    ❌ duplicate symbol '_NDR_record' in
    ❌ ld: 1 duplicate symbol for architecture x86_64
    ❌ clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    from Podfile.lock

    • Koloda (5.0.1):
      • pop (~> 1.0)
    • FirebaseCrashlytics (7.3.0):
      • FirebaseCore (~> 7.0)
      • FirebaseInstallations (~> 7.0)
      • GoogleDataTransport (~> 8.0)
      • nanopb (~> 2.30906.0)
      • PromisesObjC (~> 1.2)
    need more info 
    opened by ghost 9
  • πŸ”­ Support any combinations of sdk, arch, and config

    πŸ”­ Support any combinations of sdk, arch, and config

    Is your feature request related to a problem? Please describe.

    At present time, 🏈 Rugby can't build different combinations of sdk, arch, and config. But there are few requests for this feature.

    Describe the solution you'd like

    todo: Need to think about:

    • [ ] How to change command interface?
    • [x] How to change the path to building folders (Debug-iphonesimulator-ARCH)?
    • [x] How to build each combination?
    • [x] How to save and reuse them in cache.yml

    Describe alternatives you've considered

    Now, 🏈 Rugby can build combinations by separate calls. All cache folders should be kept.

    Additional context

    Discussions: #88 Twitter: Does that actually support multiple archs?

    feature complexity: hard 
    opened by swiftyfinch 8
  • πŸ”­ Force exclude a dependency from a plan

    πŸ”­ Force exclude a dependency from a plan

    Is your feature request related to a problem? Please describe.

    I would like to have the ability to force exclude a specific dependency even though it is included in the plan by

    - build
      - command: cache
        include: [Alamofire, SnapKit]
    

    Describe the solution you'd like

    Β§ rugby --plan build --exclude Alamofire SnapKit
    Β§ rugby --plan build -e Alamofire SnapKit
    
    feature complexity: hard need more info 
    opened by nonameplum 5
Releases(2.0.0b2)
  • 2.0.0b2(Dec 24, 2022)

    πŸ™‹πŸΌβ€β™€οΈ Hello everybody!

    I’m glad to share great news with you. Finally, I have almost finished working on the new version. I called it 🏈 Rugby: Remastered πŸ˜€.

    πŸš€ Welcome to Early Public Beta!

    Now, the new version hasn't got all features from the Rugby 1.x, but it is already stable enough. I have been using it in production development since October.

    Please, check out the readme. You can find there all information.

    🎬 Demo
    Source code(tar.gz)
    Source code(zip)
    arm64.zip(1.61 MB)
    x86_64.zip(1.64 MB)
  • 1.21.0(Oct 10, 2022)

    What's Changed

    • πŸ€– Used CryptoKit instead of CommonCrypto by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/197
    • 🎨 Added printing the config name during building by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/199
    • πŸ€– Removed Xcode 12 build job by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/200
    • πŸš‘ Improved rugby doctor suggestions by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/201
    • πŸ› Fixed video in README by @chedabob in https://github.com/swiftyfinch/Rugby/pull/202

    New Contributors

    • @chedabob made their first contribution in https://github.com/swiftyfinch/Rugby/pull/202

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.20.3...1.21.0

    Source code(tar.gz)
    Source code(zip)
    rugby.zip(4.78 MB)
  • 1.20.3(Sep 15, 2022)

    What's Changed

    • Add trimming whitespaces and isEmpty check for stderr value by @johnnie-che in https://github.com/swiftyfinch/Rugby/pull/194

    New Contributors

    • @johnnie-che made their first contribution in https://github.com/swiftyfinch/Rugby/pull/194

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.20.2...1.20.3

    Source code(tar.gz)
    Source code(zip)
    rugby.zip(4.78 MB)
  • 1.20.2(Aug 31, 2022)

  • 1.20.1(Aug 10, 2022)

  • 1.20.0(Aug 6, 2022)

    What's Changed

    • πŸ”­ Experiment: Checksum local pod content instead of file modification dates by @cltnschlosser in https://github.com/swiftyfinch/Rugby/pull/181
    • πŸ”­ Add --non-interactive flag which limits spinner output for non-interactive terminals (Ex: CI) by @cltnschlosser in https://github.com/swiftyfinch/Rugby/pull/183
    • πŸ”­ Update docs and api by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/184

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.19.1...1.20.0

    Source code(tar.gz)
    Source code(zip)
    rugby.zip(4.78 MB)
  • 1.19.1(Jul 30, 2022)

    What's Changed

    • Bump tzinfo from 1.2.9 to 1.2.10 in /TestProject by @dependabot in https://github.com/swiftyfinch/Rugby/pull/178
    • πŸ”­ Improve directory detection: Big performance improvement for certain setups by @cltnschlosser in https://github.com/swiftyfinch/Rugby/pull/179
    • Show rollback command in help

    New Contributors

    • @cltnschlosser made their first contribution in https://github.com/swiftyfinch/Rugby/pull/179

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.19.0...1.19.1

    Source code(tar.gz)
    Source code(zip)
    rugby.zip(4.75 MB)
  • 1.19.0(Jun 27, 2022)

    What's Changed

    • πŸ”­ Rollback by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/175
    • πŸ”­ Using relative paths by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/176

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.18.0...1.19.0

    Source code(tar.gz)
    Source code(zip)
    rugby.zip(4.75 MB)
  • 1.18.0(Jun 14, 2022)

  • 1.17.3(Jun 14, 2022)

    What's Changed

    • Bump jmespath from 1.4.0 to 1.6.1 in /TestProject by @dependabot in https://github.com/swiftyfinch/Rugby/pull/157
    • πŸ› Beautiful error by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/158
    • πŸ”­ Add distribution binary with Homebrew 🍺 by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/169
    • πŸ”­ Automate release process by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/170

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.17.2...1.17.3

    Source code(tar.gz)
    Source code(zip)
    rugby.zip(4.71 MB)
  • 1.17.2(Jun 5, 2022)

    What's Changed

    • πŸ“¦ Bump cocoapods-downloader from 1.4.0 to 1.6.3 in /TestProject by @dependabot in https://github.com/swiftyfinch/Rugby/pull/144
    • πŸ“¦ Update dependencies by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/154
    • πŸ”­ Make errors more understandable by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/155

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.17.1...1.18.0

    Source code(tar.gz)
    Source code(zip)
  • 1.17.1(Mar 29, 2022)

    What's Changed

    • πŸ› Patch targets with products by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/135
    • πŸ› Exclude xcframeworks after finding all build targets by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/140
    • πŸ› Exclude remaining targets explicitly by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/141

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.17.0...1.17.1

    Source code(tar.gz)
    Source code(zip)
  • 1.17.0(Feb 8, 2022)

    What's Changed

    • πŸ› Fix wording by @pomozoff in https://github.com/swiftyfinch/Rugby/pull/121
    • πŸ€– Bump dependencies by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/127
    • πŸ”­ Add quiet flag by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/129
    • πŸ› Use another way to identify if a project already use 🏈 Rugby by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/131
    • πŸ› Use absolute paths without Xcode variables by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/128

    New Contributors

    • @pomozoff made their first contribution in https://github.com/swiftyfinch/Rugby/pull/121

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.16.0...1.17.0

    Source code(tar.gz)
    Source code(zip)
  • 1.16.0(Jan 25, 2022)

    What's Changed

    • 🏈 Support installation for Xcode 12.4 by @devahmedshendy in https://github.com/swiftyfinch/Rugby/pull/116
    • πŸ› Make parsing external sources more flexible by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/118
    • πŸ› Support fish shell by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/119
    • 🏈 Use Xcode 13 on ci by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/120
    • πŸ› Shell friendly config by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/122

    New Contributors

    • @devahmedshendy made their first contribution in https://github.com/swiftyfinch/Rugby/pull/116

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.15.0...1.16.0

    Source code(tar.gz)
    Source code(zip)
  • 1.15.0(Dec 7, 2021)

    What's Changed

    • πŸ”­ Add ability to generate bitcode for archive builds by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/102

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.14.2...1.15.0

    Source code(tar.gz)
    Source code(zip)
  • 1.14.2(Dec 1, 2021)

    What's Changed

    • πŸ› Escape SYMROOT variable by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/99
    • πŸš‘ Update Rugby doctor by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/100

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.14.1...1.14.2

    Source code(tar.gz)
    Source code(zip)
  • 1.14.1(Nov 26, 2021)

    What's Changed

    • πŸ› Reset projects cache after shell command by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/91

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.14.0...1.14.1

    Source code(tar.gz)
    Source code(zip)
  • 1.14.0(Nov 23, 2021)

    πŸš€ What's Changed

    • πŸ”­ Build both ios and sim SDKs by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/84
    • πŸ’­ Added spelling job by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/86

    πŸ“š Updates in docs

    πŸš’ Breaking changes

    • --sdk, -s and --arch, -a arguments of Cache command now are arrays
    • You can pass 2 sdks and 2 archs, but the count of each must be equal
    • That also applied to Cache command in plans.yml

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.13.0...1.14.0

    Source code(tar.gz)
    Source code(zip)
  • 1.13.0(Nov 12, 2021)

    What's Changed

    • πŸš€ Added ability to use Plans command recursively by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/79

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.12.4...1.13.0

    Source code(tar.gz)
    Source code(zip)
  • 1.12.4(Nov 7, 2021)

    What's Changed

    • πŸ› Fix scheme removing by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/76
    • πŸ› Fix an error if the default shell is fish by @kkoudev in https://github.com/swiftyfinch/Rugby/pull/77

    New Contributors

    • @kkoudev made their first contribution in https://github.com/swiftyfinch/Rugby/pull/77

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.12.3...1.12.4

    Source code(tar.gz)
    Source code(zip)
  • 1.12.3(Nov 1, 2021)

    What's Changed

    • Fix typo in Cache documentation (line 08) by @kant in https://github.com/swiftyfinch/Rugby/pull/73
    • πŸ‘©πŸΌβ€πŸ« Fix spelling in docs and sources by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/74

    New Contributors

    • @kant made their first contribution in https://github.com/swiftyfinch/Rugby/pull/73

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.12.2...1.12.3

    Source code(tar.gz)
    Source code(zip)
  • 1.12.2(Oct 30, 2021)

    It’s Halloween Time! πŸ‘»

    Update if you Dare!

    What's Changed

    • πŸ› Stop all subcommands by pressing ^C by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/69

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.12.1...1.12.2

    Source code(tar.gz)
    Source code(zip)
  • 1.12.1(Oct 25, 2021)

    What's Changed

    • 🧰 Refactoring: use common flags for all commands by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/65
    • πŸ› Bugfixes

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.12.0...1.12.1

    Source code(tar.gz)
    Source code(zip)
  • 1.12.0(Oct 23, 2021)

    What's Changed

    • πŸ“¦ Update packages by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/62
    • πŸ–¨ Print all plans and select one if needed by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/63
    138555231-279ac91b-8a04-4a65-9107-49d6fa5f365d

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.11.1...1.12.0

    Source code(tar.gz)
    Source code(zip)
  • 1.11.1(Oct 21, 2021)

    What's Changed

    • πŸ› Use subfolder if pod source is file by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/60

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.11.0...1.11.1

    Source code(tar.gz)
    Source code(zip)
  • 1.11.0(Oct 12, 2021)

    What's Changed

    • πŸ‘€ Added Build configuration option by @ykkd in https://github.com/swiftyfinch/Rugby/pull/52
    • 🚒 Added support Release config by @swiftyfinch in https://github.com/swiftyfinch/Rugby/pull/53

    New Contributors

    • @ykkd made their first contribution in https://github.com/swiftyfinch/Rugby/pull/52

    Full Changelog: https://github.com/swiftyfinch/Rugby/compare/1.10.0...1.11.0

    Source code(tar.gz)
    Source code(zip)
  • 1.10.0(Sep 25, 2021)

  • 1.9.1(Jul 30, 2021)

  • 1.9.0(Jul 8, 2021)

    πŸŽ‰ Added ability to cache local pods #32

    Now, if you work on a project with a monstrous amount of local pods, you can focus on some of them. Known benefits:

    • Don't waste time to rebuild all pods, cache them, and include them as binaries
    • Significantly reduce the time of the indexing process because you focus only on needed pods
    • UI of the smaller project will respond faster
    Source code(tar.gz)
    Source code(zip)
  • 1.8.4(Jun 29, 2021)

Owner
Vyacheslav Khorkov
 Dev Lead, cat herder 🦁
Vyacheslav Khorkov
Cache - Nothing but Cache.

Cache doesn't claim to be unique in this area, but it's not another monster library that gives you a god's power. It does nothing but caching, but it does it well. It offers a good public API with out-of-box implementations and great customization possibilities. Cache utilizes Codable in Swift 4 to perform serialization.

HyperRedink 2.7k Dec 28, 2022
Apple Asset Cache (Content Cache) Tools

AssetCacheTool A library and tool for interacting with both the local and remote asset caches. This is based on research I did a few years ago on the

Kenneth Endfinger 21 Jan 5, 2023
XCRemoteCache is a remote cache tool for Xcode projects.

XCRemoteCache is a remote cache tool for Xcode projects. It reuses target artifacts generated on a remote machine, served from a simple REST server. H

Spotify 737 Dec 27, 2022
CachyKit - A Caching Library is written in Swift that can cache JSON, Image, Zip or AnyObject with expiry date/TTYL and force refresh.

Nice threadsafe expirable cache management that can cache any object. Supports fetching from server, single object expire date, UIImageView loading etc.

Sadman Samee 122 Dec 28, 2022
Cachyr A typesafe key-value data cache for iOS, macOS, tvOS and watchOS written in Swift.

Cachyr A typesafe key-value data cache for iOS, macOS, tvOS and watchOS written in Swift. There already exists plenty of cache solutions, so why creat

Norsk rikskringkasting (NRK) 124 Nov 24, 2022
Carlos - A simple but flexible cache, written in Swift for iOS 13+ and WatchOS 6 apps.

Carlos A simple but flexible cache, written in Swift for iOS 13+ and WatchOS 6 apps. Breaking Changes Carlos 1.0.0 has been migrated from PiedPiper de

National Media & Tech 628 Dec 3, 2022
Everyone tries to implement a cache at some point in their iOS app’s lifecycle, and this is ours.

Everyone tries to implement a cache at some point in their app’s lifecycle, and this is ours. This is a library that allows people to cache NSData wit

Spotify 1.2k Dec 28, 2022
Track is a thread safe cache write by Swift. Composed of DiskCache and MemoryCache which support LRU.

Track is a thread safe cache write by Swift. Composed of DiskCache and MemoryCache which support LRU. Features Thread safe: Implement by dispatch_sema

Cheer 268 Nov 21, 2022
Fast, non-deadlocking parallel object cache for iOS, tvOS and OS X

PINCache Fast, non-deadlocking parallel object cache for iOS and OS X. PINCache is a fork of TMCache re-architected to fix issues with deadlocking cau

Pinterest 2.6k Dec 28, 2022
SwiftyCache is a dynamic and auto-managed cache written in Swift

SwiftyCache is a dynamic and auto-managed cache written in Swift. Unlike a simple cache system, it allows you to keep some data even in different executions. Guaranteeing persistence, when desired, without increasing the time required to save or recover data.

Antonio Guerra 3 Aug 28, 2022
MemoryCache - type-safe, thread-safe memory cache class in Swift

MemoryCache is a memory cache class in swift. The MemoryCache class incorporates LRU policies, which ensure that a cache doesn’t

Yusuke Morishita 74 Nov 24, 2022
A lightweight generic cache for iOS written in Swift with extra love for images.

Haneke is a lightweight generic cache for iOS and tvOS written in Swift 4. It's designed to be super-simple to use. Here's how you would initalize a J

Haneke 5.2k Dec 29, 2022
High performance cache framework for iOS.

YYCache High performance cache framework for iOS. (It's a component of YYKit) Performance You may download and compile the latest version of sqlite an

null 2.3k Dec 16, 2022
UITableView cell cache that cures scroll-lags on cell instantiating

UITableView + Cache https://github.com/Kilograpp/UITableView-Cache UITableView cell cache that cures scroll-lags on a cell instantiating. Introduction

null 73 Aug 6, 2021
πŸ’Ύ Simple memory & disk cache

Cache ?? Simple memory & disk cache Usage ??‍?? Default let cache = Cache<String>() try memory.save("MyValue", forKey: "MyKey") let cached = try cac

SeongHo Hong 2 Feb 28, 2022
Cache library for videos for React Native

@lowkey/react-native-cache Cache everything Installation npm install @lowkey/react-native-cache Usage import ReactNativeCache from "@lowkey/react-nati

Max Prokopenko 1 Oct 1, 2021
CachedAsyncImage is the simplest way to add cache to your AsyncImage.

CachedAsyncImage ??️ CachedAsyncImage is AsyncImage, but with cache capabilities. Usage CachedAsyncImage has the exact same API and behavior as AsyncI

Lorenzo Fiamingo 278 Jan 5, 2023
A simple cache that can hold anything, including Swift items

CacheIsKing CacheIsKing is a simple cache that allows you to store any item, including objects, pure Swift structs, enums (with associated values), et

Christopher Luu 13 Jan 22, 2018
A simple but flexible cache

Carlos A simple but flexible cache, written in Swift for iOS 13+ and WatchOS 6 apps. Breaking Changes Carlos 1.0.0 has been migrated from PiedPiper de

National Media & Tech 628 Dec 3, 2022