๐Ÿˆ Cache CocoaPods for faster rebuild and indexing Xcode project.

Overview

Rugby ๐Ÿˆ
"Like Ruby but with g"


Motivation

Working on a project with a huge amount of remote pods I had some troubles:
- Slow and unnecessary indexing of remote 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 remote pods dependencies and remove their targets from the Pods project;
+ Rebuild only changed remote 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
๐Ÿ”’ Doesn't change Podfile
๐Ÿ›  Custom steps
๐Ÿ“ˆ Metrics after each command
โœจ Fancy log output
๐Ÿš€ Swiftish!

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

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 ๐ŸŒฑ

mint install swiftyfinch/rugby

How to use ๐Ÿˆ

Run in your project directory after each pod install:

pod install && rugby

Or read more about Plans โœˆ๏ธ

Documentation ๐Ÿ“š

Command Description
๐Ÿš‘ Help General Rugby documentation.
๐Ÿˆ Cache Convert remote 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.

Maybe Roadmap

  • Open source
  • Optimization
  • CI
    • Pull requests CI
    • Move e2e tests to Fastlane
    • Unit tests
    • Speed up e2e tests
  • Improve Cache command

Author

Vyacheslav Khorkov
Twitter: @SwiftyFinch
Blog: swiftyfinch.github.io
Feel free to contact me for any questions.

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
  • Add ignoreGitDirtyLocalPods

    Add ignoreGitDirtyLocalPods

    Description

    Add ignoreGitDirtyLocalPods flag for ignore dev pod which git is dirty.

    References

    Provide links to an existing issue or external references/discussions, if appropriate.

    Checklist

    • [x] I've added at least one test that validates that my change is working, if appropriate
    • [x] I've followed the code style of the rest of the project
    • [x] I've read the Contribution Guidelines
    • [x] I've updated the documentation if necessary

    โค๏ธ Thanks for contributing to the ๐Ÿˆ Rugby!

    opened by mlch911 0
  • ๐Ÿ”ญ 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
๏ฃฟ Lead Dev, cat herder
Vyacheslav Khorkov
A handy collection of Swift method and Tools to build project faster and more efficient.

SwifterKnife is a collection of Swift extension method and some tools that often use in develop project, with them you might build project faster and

ๆŽ้˜ณ 4 Dec 29, 2022
Acknowledgements screen displaying a list of licenses, for example from CocoaPods dependencies.

VTAcknowledgementsViewController Acknowledgements screen displaying a list of licenses, for example from CocoaPods dependencies. Also available in Swi

Vincent Tourraine 868 Oct 28, 2022
Tools and helpers to make building apps faster and safer.

The UBFoundation framework provides a set of useful tools and helpers to make building apps faster and safer.

Ubique 7 Dec 19, 2022
BFKit-Swift is a collection of useful classes, structs and extensions to develop Apps faster.

Features โ€ข Classes and Extensions Compatibility โ€ข Requirements โ€ข Communication โ€ข Contributing โ€ข Installing and Usage โ€ข Documentation โ€ข Changelog โ€ข Exa

Fabrizio Brancati 992 Dec 2, 2022
BFKit is a collection of useful classes and categories to develop Apps faster.

Swift Version โ€ข What does it do โ€ข Language support โ€ข Requirements โ€ข Communication โ€ข Contributing โ€ข Installing and Usage โ€ข Documentation โ€ข Changelog โ€ข

Fabrizio Brancati 806 Dec 2, 2022
XCMetrics is the easiest way to collect Xcode build metrics and improve developer productivity.

XCMetrics is the easiest way to collect Xcode builds metrics and improve your developer productivity. Overview ?? Keep your build times under control

Spotify 989 Jan 2, 2023
Replace your Xcode icon with colorful variants

XcoatOfPaint Have you ever wished the Xcode icon could get a fresh coat of paint to match the colorful Mac you just bought? Or you want to distinguish

Christian Lobach 163 Dec 20, 2022
MyUtils For Xcode

MyUtils For Xcode App Store Download ##You can 1: \#FFFFFF -> [UIColor colorWithRed:1.00 green:1.00 blue:1.00 alpha:1.00] Use๏ผšSelect "#FFFFFF" Then Xc

wintelsui 0 Nov 5, 2021
An extension for Xcode to generate builders from structs

Swift Struct Builder Generator Xcode Source Editor Extension An Xcode extension (plugin) to generate struct builders automatically. Install Swift Stru

Marius Wichtner 1 Nov 24, 2021
Working alternative to Xcode previews.

SwiftUIPlaygrounds! A shell project you can use to iterate over SwiftUI interfaces using the HotReloading project. Instead of a "preview" the interfac

John Holdsworth 9 Dec 21, 2021
Functional data types and functions for any project

Swiftx Swiftx is a Swift library containing functional abstractions and extensions to the Swift Standard Library. Swiftx is a smaller and simpler way

TypeLift 219 Aug 30, 2022
Enable autocomplete use resources in swift project.

ResourceKit Enable autocomplete use resources in swift project. ใพใ ใƒใƒผใƒ‰ใ‚ณใƒผใƒ‰ใงๆถˆ่€—ใ—ใฆใ‚‹ใฎ๏ผŸ ResourceKitใงๅฎ‰ๅ…จใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐ๏ผ How does ResourceKit work? ResouceKit makes you

bannzai 90 Nov 25, 2022
All the reusable code that we need in each project

SwiftyUtils SwiftyUtils groups all the reusable code that we need to ship in each project. This framework contains: Extensions Protocols Structs Subcl

Tom Baranes 529 Dec 25, 2022
Open Source project for watching YouTube channel playlists.

YouTube Channel Watcher An open source project build using SwiftUI and Combine that lets you monitor a variety of different YouTube channels and their

Stewart Lynch 32 Jul 29, 2022
Globant iOS Academy Base Project

The repository will be used for trainees to save course progress.

null 0 Aug 18, 2022
This library project contains a few noise generators created in Swift.

SwiftNoiseGenerator This library project contains a few noise generators created in Swift. contains: Perlin Noise Simplex Noise How to use Edit your P

Ichiro HIROTA 1 Jan 20, 2022
Generates Heroku-style random project names in Swift

RandomProjectName.swift Generates Heroku-style random project names in Swift. Usage Just call String.randomProjectName(), and specify the optional suf

NLUDB 0 Dec 6, 2021
Another Virtualization.framework demo project, with focus to iBoot (WIP)

Virtual iBoot Fun This is just another Virtualization.framework sample project (WIP), but with focus on iBoot (iOS/macOS/tvOS/etc. bootloader) For a m

john 119 Dec 7, 2022
All the reusable code that we need in each project

SwiftyUtils SwiftyUtils groups all the reusable code that we need to ship in each project. This framework contains: Extensions Protocols Structs Subcl

Tom Baranes 529 Dec 25, 2022