cocoapods-repo-shard 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.gitignore +3 -0
 - data/.rspec +2 -0
 - data/.rubocop.yml +5 -0
 - data/.rubocop_cocoapods.yml +138 -0
 - data/.travis.yml +10 -0
 - data/CHANGELOG.md +6 -0
 - data/Gemfile +11 -0
 - data/Gemfile.lock +105 -0
 - data/LICENSE.txt +22 -0
 - data/README.md +11 -0
 - data/Rakefile +16 -0
 - data/cocoapods-repo-shard.gemspec +22 -0
 - data/lib/cocoapods_plugin.rb +1 -0
 - data/lib/cocoapods_repo_shard.rb +1 -0
 - data/lib/cocoapods_repo_shard/command.rb +1 -0
 - data/lib/cocoapods_repo_shard/command/repo/shard.rb +109 -0
 - data/lib/cocoapods_repo_shard/gem_version.rb +3 -0
 - data/spec/command/repo/shard_spec.rb +136 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/BananaLib/0.0.1/BananaLib.podspec +19 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/BananaLib/0.9/BananaLib.podspec +19 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/BananaLib/1.0/BananaLib.podspec +20 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/Faulty_spec/1.0.0/Faulty_spec.podspec +0 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/IncorrectPath/1.0/IncorrectPath.podspec +4 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/JSONKit/1.13/JSONKit.podspec +11 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/JSONKit/1.4/JSONKit.podspec +11 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/JSONKit/999.999.999/JSONKit.podspec +12 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/JSONSpec/0.9/JSONSpec.podspec.json +4 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/JSONSpec/1.0/JSONSpec.podspec.json +4 -0
 - data/spec/fixtures/spec-repos/test_repo/Specs/StraySpec.podspec +4 -0
 - data/spec/spec_helper.rb +50 -0
 - metadata +115 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 78fe5c41407f1caec0b0f4b33758ac667e1b5147
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f9cac41b6f95a34086c9f8380aa27bb14606006f
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 4068c773469ab20cbb6ca3965c6ebad275d3a926e42d2feae084f3adf19cb8cac50bc15bf870453bfe5323314a355ed198c693fdf2f35e46fcb6117d58e07844
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 9131427d8c8f7f2e8ae8f1a0dd0b3577650e582a4ff6b771abc1f1ac528b965d7ad5a0817713eb8795e919935e7f1a24a1bea49b40cb801341284cacb2b59a3c
         
     | 
    
        data/.gitignore
    ADDED
    
    
    
        data/.rspec
    ADDED
    
    
    
        data/.rubocop.yml
    ADDED
    
    
| 
         @@ -0,0 +1,138 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            AllCops:
         
     | 
| 
      
 2 
     | 
    
         
            +
              Include:
         
     | 
| 
      
 3 
     | 
    
         
            +
                - ./Rakefile
         
     | 
| 
      
 4 
     | 
    
         
            +
                - ./Gemfile
         
     | 
| 
      
 5 
     | 
    
         
            +
                - ./*.gemspec
         
     | 
| 
      
 6 
     | 
    
         
            +
              Exclude:
         
     | 
| 
      
 7 
     | 
    
         
            +
                - ./spec/fixtures/**/*
         
     | 
| 
      
 8 
     | 
    
         
            +
                - ./vendor/bundle/**/*
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # At the moment not ready to be used
         
     | 
| 
      
 11 
     | 
    
         
            +
            # https://github.com/bbatsov/rubocop/issues/947
         
     | 
| 
      
 12 
     | 
    
         
            +
            Documentation:
         
     | 
| 
      
 13 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            #- CocoaPods -----------------------------------------------------------------#
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            # We adopted raise instead of fail.
         
     | 
| 
      
 18 
     | 
    
         
            +
            SignalException:
         
     | 
| 
      
 19 
     | 
    
         
            +
              EnforcedStyle: only_raise
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            # They are idiomatic
         
     | 
| 
      
 22 
     | 
    
         
            +
            AssignmentInCondition:
         
     | 
| 
      
 23 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            # Allow backticks
         
     | 
| 
      
 26 
     | 
    
         
            +
            AsciiComments:
         
     | 
| 
      
 27 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            # Indentation clarifies logic branches in implementations
         
     | 
| 
      
 30 
     | 
    
         
            +
            IfUnlessModifier:
         
     | 
| 
      
 31 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            # No enforced convention here.
         
     | 
| 
      
 34 
     | 
    
         
            +
            SingleLineBlockParams:
         
     | 
| 
      
 35 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            # We only add the comment when needed.
         
     | 
| 
      
 38 
     | 
    
         
            +
            Encoding:
         
     | 
| 
      
 39 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            # Having these make it easier to *not* forget to add one when adding a new
         
     | 
| 
      
 42 
     | 
    
         
            +
            # value and you can simply copy the previous line.
         
     | 
| 
      
 43 
     | 
    
         
            +
            Style/TrailingCommaInArguments:
         
     | 
| 
      
 44 
     | 
    
         
            +
              EnforcedStyleForMultiline: comma
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            Style/TrailingCommaInLiteral:
         
     | 
| 
      
 47 
     | 
    
         
            +
              EnforcedStyleForMultiline: comma
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            Style/MultilineOperationIndentation:
         
     | 
| 
      
 50 
     | 
    
         
            +
              EnforcedStyle: indented
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            # Clashes with CLAide Command#validate!
         
     | 
| 
      
 53 
     | 
    
         
            +
            GuardClause:
         
     | 
| 
      
 54 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            # Not always desirable: lib/claide/command/plugins_helper.rb:12:15
         
     | 
| 
      
 57 
     | 
    
         
            +
            Next:
         
     | 
| 
      
 58 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            # Autocorrect makes this cop much more useful, taking away needless guessing
         
     | 
| 
      
 61 
     | 
    
         
            +
            Lint/EndAlignment:
         
     | 
| 
      
 62 
     | 
    
         
            +
              AutoCorrect: true
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            # Arbitrary max lengths for classes simply do not work and enabling this will
         
     | 
| 
      
 66 
     | 
    
         
            +
            # lead to a never ending stream of annoyance and changes.
         
     | 
| 
      
 67 
     | 
    
         
            +
            Metrics/ClassLength:
         
     | 
| 
      
 68 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            # Arbitrary max lengths for modules simply do not work and enabling this will
         
     | 
| 
      
 71 
     | 
    
         
            +
            # lead to a never ending stream of annoyance and changes.
         
     | 
| 
      
 72 
     | 
    
         
            +
            Metrics/ModuleLength:
         
     | 
| 
      
 73 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            # Arbitrary max lengths for methods simply do not work and enabling this will
         
     | 
| 
      
 76 
     | 
    
         
            +
            # lead to a never ending stream of annoyance and changes.
         
     | 
| 
      
 77 
     | 
    
         
            +
            Metrics/MethodLength:
         
     | 
| 
      
 78 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            # No enforced convention here.
         
     | 
| 
      
 81 
     | 
    
         
            +
            Metrics/BlockNesting:
         
     | 
| 
      
 82 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            # It will be obvious which code is complex, Rubocop should only lint simple
         
     | 
| 
      
 85 
     | 
    
         
            +
            # rules for us.
         
     | 
| 
      
 86 
     | 
    
         
            +
            Metrics/AbcSize:
         
     | 
| 
      
 87 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
            # It will be obvious which code is complex, Rubocop should only lint simple
         
     | 
| 
      
 90 
     | 
    
         
            +
            # rules for us.
         
     | 
| 
      
 91 
     | 
    
         
            +
            Metrics/CyclomaticComplexity:
         
     | 
| 
      
 92 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            # It will be obvious which code is complex, Rubocop should only lint simple
         
     | 
| 
      
 95 
     | 
    
         
            +
            # rules for us.
         
     | 
| 
      
 96 
     | 
    
         
            +
            Metrics/PerceivedComplexity:
         
     | 
| 
      
 97 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            #- CocoaPods support for Ruby 1.8.7 ------------------------------------------#
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            HashSyntax:
         
     | 
| 
      
 102 
     | 
    
         
            +
              EnforcedStyle: hash_rockets
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            Lambda:
         
     | 
| 
      
 105 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
            DotPosition:
         
     | 
| 
      
 108 
     | 
    
         
            +
              EnforcedStyle: trailing
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            EachWithObject:
         
     | 
| 
      
 111 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
            Style/SpecialGlobalVars:
         
     | 
| 
      
 114 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            #- CocoaPods specs -----------------------------------------------------------#
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            # Allow for `should.match /regexp/`.
         
     | 
| 
      
 119 
     | 
    
         
            +
            AmbiguousRegexpLiteral:
         
     | 
| 
      
 120 
     | 
    
         
            +
              Exclude:
         
     | 
| 
      
 121 
     | 
    
         
            +
                - spec/**/*
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
            Performance/RedundantMatch:
         
     | 
| 
      
 124 
     | 
    
         
            +
              Exclude:
         
     | 
| 
      
 125 
     | 
    
         
            +
                - spec/**/*
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            # Allow `object.should == object` syntax.
         
     | 
| 
      
 128 
     | 
    
         
            +
            Void:
         
     | 
| 
      
 129 
     | 
    
         
            +
              Exclude:
         
     | 
| 
      
 130 
     | 
    
         
            +
                - spec/**/*
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
            ClassAndModuleChildren:
         
     | 
| 
      
 133 
     | 
    
         
            +
              Exclude:
         
     | 
| 
      
 134 
     | 
    
         
            +
                - spec/**/*
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
            UselessComparison:
         
     | 
| 
      
 137 
     | 
    
         
            +
              Exclude:
         
     | 
| 
      
 138 
     | 
    
         
            +
                - spec/**/*
         
     | 
    
        data/.travis.yml
    ADDED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | 
         @@ -0,0 +1,105 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            PATH
         
     | 
| 
      
 2 
     | 
    
         
            +
              remote: .
         
     | 
| 
      
 3 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 4 
     | 
    
         
            +
                cocoapods-repo-shard (1.0.0)
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            GEM
         
     | 
| 
      
 7 
     | 
    
         
            +
              remote: https://rubygems.org/
         
     | 
| 
      
 8 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 9 
     | 
    
         
            +
                activesupport (4.2.6)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  i18n (~> 0.7)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  json (~> 1.7, >= 1.7.7)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  minitest (~> 5.1)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  thread_safe (~> 0.3, >= 0.3.4)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  tzinfo (~> 1.1)
         
     | 
| 
      
 15 
     | 
    
         
            +
                ast (2.2.0)
         
     | 
| 
      
 16 
     | 
    
         
            +
                claide (1.0.0.beta.3)
         
     | 
| 
      
 17 
     | 
    
         
            +
                cocoapods (1.0.0.beta.7)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  activesupport (>= 4.0.2)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  claide (>= 1.0.0.beta.3, < 2.0)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  cocoapods-core (= 1.0.0.beta.7)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  cocoapods-deintegrate (>= 1.0.0.beta.1, < 2.0)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  cocoapods-downloader (= 1.0.0.beta.3)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  cocoapods-plugins (>= 1.0.0.beta.1, < 2.0)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  cocoapods-search (= 1.0.0.beta.2)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  cocoapods-stats (= 1.0.0.beta.4)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  cocoapods-trunk (= 1.0.0.beta.3)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  cocoapods-try (>= 1.0.0.beta.3, < 2.0)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  colored (~> 1.2)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  escape (~> 0.0.4)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  fourflusher (~> 0.3.0)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  molinillo (~> 0.4.4)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  nap (~> 1.0)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  xcodeproj (= 1.0.0.beta.4)
         
     | 
| 
      
 34 
     | 
    
         
            +
                cocoapods-core (1.0.0.beta.7)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  activesupport (>= 4.0.2)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  fuzzy_match (~> 2.0.4)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  nap (~> 1.0)
         
     | 
| 
      
 38 
     | 
    
         
            +
                cocoapods-deintegrate (1.0.0.beta.1)
         
     | 
| 
      
 39 
     | 
    
         
            +
                cocoapods-downloader (1.0.0.beta.3)
         
     | 
| 
      
 40 
     | 
    
         
            +
                cocoapods-plugins (1.0.0.beta.1)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  nap
         
     | 
| 
      
 42 
     | 
    
         
            +
                cocoapods-search (1.0.0.beta.2)
         
     | 
| 
      
 43 
     | 
    
         
            +
                cocoapods-stats (1.0.0.beta.4)
         
     | 
| 
      
 44 
     | 
    
         
            +
                cocoapods-trunk (1.0.0.beta.3)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  nap (>= 0.8, < 2.0)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  netrc (= 0.7.8)
         
     | 
| 
      
 47 
     | 
    
         
            +
                cocoapods-try (1.0.0.beta.3)
         
     | 
| 
      
 48 
     | 
    
         
            +
                colored (1.2)
         
     | 
| 
      
 49 
     | 
    
         
            +
                diff-lcs (1.2.5)
         
     | 
| 
      
 50 
     | 
    
         
            +
                escape (0.0.4)
         
     | 
| 
      
 51 
     | 
    
         
            +
                fourflusher (0.3.0)
         
     | 
| 
      
 52 
     | 
    
         
            +
                fuzzy_match (2.0.4)
         
     | 
| 
      
 53 
     | 
    
         
            +
                i18n (0.7.0)
         
     | 
| 
      
 54 
     | 
    
         
            +
                json (1.8.3)
         
     | 
| 
      
 55 
     | 
    
         
            +
                minitest (5.8.4)
         
     | 
| 
      
 56 
     | 
    
         
            +
                molinillo (0.4.4)
         
     | 
| 
      
 57 
     | 
    
         
            +
                nap (1.1.0)
         
     | 
| 
      
 58 
     | 
    
         
            +
                netrc (0.7.8)
         
     | 
| 
      
 59 
     | 
    
         
            +
                parser (2.3.0.6)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  ast (~> 2.2)
         
     | 
| 
      
 61 
     | 
    
         
            +
                powerpack (0.1.1)
         
     | 
| 
      
 62 
     | 
    
         
            +
                rainbow (2.1.0)
         
     | 
| 
      
 63 
     | 
    
         
            +
                rake (11.1.0)
         
     | 
| 
      
 64 
     | 
    
         
            +
                rspec (3.4.0)
         
     | 
| 
      
 65 
     | 
    
         
            +
                  rspec-core (~> 3.4.0)
         
     | 
| 
      
 66 
     | 
    
         
            +
                  rspec-expectations (~> 3.4.0)
         
     | 
| 
      
 67 
     | 
    
         
            +
                  rspec-mocks (~> 3.4.0)
         
     | 
| 
      
 68 
     | 
    
         
            +
                rspec-core (3.4.4)
         
     | 
| 
      
 69 
     | 
    
         
            +
                  rspec-support (~> 3.4.0)
         
     | 
| 
      
 70 
     | 
    
         
            +
                rspec-expectations (3.4.0)
         
     | 
| 
      
 71 
     | 
    
         
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  rspec-support (~> 3.4.0)
         
     | 
| 
      
 73 
     | 
    
         
            +
                rspec-mocks (3.4.1)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         
     | 
| 
      
 75 
     | 
    
         
            +
                  rspec-support (~> 3.4.0)
         
     | 
| 
      
 76 
     | 
    
         
            +
                rspec-support (3.4.1)
         
     | 
| 
      
 77 
     | 
    
         
            +
                rubocop (0.38.0)
         
     | 
| 
      
 78 
     | 
    
         
            +
                  parser (>= 2.3.0.6, < 3.0)
         
     | 
| 
      
 79 
     | 
    
         
            +
                  powerpack (~> 0.1)
         
     | 
| 
      
 80 
     | 
    
         
            +
                  rainbow (>= 1.99.1, < 3.0)
         
     | 
| 
      
 81 
     | 
    
         
            +
                  ruby-progressbar (~> 1.7)
         
     | 
| 
      
 82 
     | 
    
         
            +
                  unicode-display_width (~> 1.0, >= 1.0.1)
         
     | 
| 
      
 83 
     | 
    
         
            +
                ruby-progressbar (1.7.5)
         
     | 
| 
      
 84 
     | 
    
         
            +
                thread_safe (0.3.5)
         
     | 
| 
      
 85 
     | 
    
         
            +
                tzinfo (1.2.2)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  thread_safe (~> 0.1)
         
     | 
| 
      
 87 
     | 
    
         
            +
                unicode-display_width (1.0.2)
         
     | 
| 
      
 88 
     | 
    
         
            +
                xcodeproj (1.0.0.beta.4)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  activesupport (>= 3)
         
     | 
| 
      
 90 
     | 
    
         
            +
                  claide (>= 1.0.0.beta.1, < 2.0)
         
     | 
| 
      
 91 
     | 
    
         
            +
                  colored (~> 1.2)
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            PLATFORMS
         
     | 
| 
      
 94 
     | 
    
         
            +
              ruby
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
            DEPENDENCIES
         
     | 
| 
      
 97 
     | 
    
         
            +
              bundler (~> 1.11)
         
     | 
| 
      
 98 
     | 
    
         
            +
              cocoapods (= 1.0.0.beta.7)
         
     | 
| 
      
 99 
     | 
    
         
            +
              cocoapods-repo-shard!
         
     | 
| 
      
 100 
     | 
    
         
            +
              rake (~> 11.0)
         
     | 
| 
      
 101 
     | 
    
         
            +
              rspec
         
     | 
| 
      
 102 
     | 
    
         
            +
              rubocop
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            BUNDLED WITH
         
     | 
| 
      
 105 
     | 
    
         
            +
               1.12.0.rc
         
     | 
    
        data/LICENSE.txt
    ADDED
    
    | 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2016 Samuel Giddins <segiddins@segiddins.me>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            MIT License
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 6 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 7 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 8 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 9 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 10 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 11 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 14 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 17 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 18 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 19 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 20 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 21 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 22 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # cocoapods-repo-shard
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            This plugin allows sharding a spec repo's `Specs` directory to be more performant under various `git` operations. By sharding a repository, a large amount of specs can be stored at logarithmic cost, rather than linear cost. Most private specs repos will never have to be concerned with the particular performance characteristics of git, but the [master specs repo](https://github.com/CocoaPods/Specs) is large enough that sharding will bring a massive performance gain.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                $ gem install cocoapods-repo-shard
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                $ pod repo shard REPO_NAME --lengths=1,1,1
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'bundler/gem_tasks'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            begin
         
     | 
| 
      
 4 
     | 
    
         
            +
              require 'bundler/setup'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              require 'rspec/core/rake_task'
         
     | 
| 
      
 7 
     | 
    
         
            +
              require 'rubocop/rake_task'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              RSpec::Core::RakeTask.new
         
     | 
| 
      
 10 
     | 
    
         
            +
              RuboCop::RakeTask.new
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              task default: [:rubocop, :spec]
         
     | 
| 
      
 13 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 14 
     | 
    
         
            +
              puts '[!] Some tasks have been disabled due to missing dependencies. ' \
         
     | 
| 
      
 15 
     | 
    
         
            +
                   'Run `bundle install`.'
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # coding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            lib = File.expand_path('../lib', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'cocoapods_repo_shard/gem_version.rb'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Gem::Specification.new do |spec|
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.name          = 'cocoapods-repo-shard'
         
     | 
| 
      
 8 
     | 
    
         
            +
              spec.version       = CocoapodsRepoShard::VERSION
         
     | 
| 
      
 9 
     | 
    
         
            +
              spec.authors       = ['Samuel Giddins']
         
     | 
| 
      
 10 
     | 
    
         
            +
              spec.email         = ['segiddins@segiddins.me']
         
     | 
| 
      
 11 
     | 
    
         
            +
              spec.summary       = 'Shard a CocoaPods specs repository.'
         
     | 
| 
      
 12 
     | 
    
         
            +
              spec.homepage      = 'https://github.com/CocoaPods/cocoapods-repo-shard'
         
     | 
| 
      
 13 
     | 
    
         
            +
              spec.license       = 'MIT'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              spec.files         = `git ls-files -z`.split("\0")
         
     | 
| 
      
 16 
     | 
    
         
            +
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         
     | 
| 
      
 17 
     | 
    
         
            +
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
      
 18 
     | 
    
         
            +
              spec.require_paths = ['lib']
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              spec.add_development_dependency 'bundler', '~> 1.11'
         
     | 
| 
      
 21 
     | 
    
         
            +
              spec.add_development_dependency 'rake',    '~> 11.0'
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cocoapods_repo_shard/command'
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cocoapods_repo_shard/gem_version'
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cocoapods_repo_shard/command/repo/shard'
         
     | 
| 
         @@ -0,0 +1,109 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Pod
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Command
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Repo
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class Shard < Repo
         
     | 
| 
      
 5 
     | 
    
         
            +
                    self.summary = 'Shards a CocoaPods specs repo in-place.'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                    self.arguments = [
         
     | 
| 
      
 8 
     | 
    
         
            +
                      CLAide::Argument.new('NAME', true),
         
     | 
| 
      
 9 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                    attr_reader :source
         
     | 
| 
      
 12 
     | 
    
         
            +
                    attr_reader :name
         
     | 
| 
      
 13 
     | 
    
         
            +
                    attr_reader :lengths
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    def self.options
         
     | 
| 
      
 16 
     | 
    
         
            +
                      [
         
     | 
| 
      
 17 
     | 
    
         
            +
                        ['--lengths=l1,l2,...', 'The prefix lengths to shard the source with'],
         
     | 
| 
      
 18 
     | 
    
         
            +
                      ].concat(super)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                    def initialize(argv)
         
     | 
| 
      
 22 
     | 
    
         
            +
                      @name = argv.shift_argument
         
     | 
| 
      
 23 
     | 
    
         
            +
                      @lengths = argv.option('lengths')
         
     | 
| 
      
 24 
     | 
    
         
            +
                      super
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                    def validate!
         
     | 
| 
      
 28 
     | 
    
         
            +
                      help! 'A repo name is required.' unless @name
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                      @source = config.sources_manager.sources([@name]).first
         
     | 
| 
      
 31 
     | 
    
         
            +
                      help! "No repo named `#{@name}` found." unless source.specs_dir
         
     | 
| 
      
 32 
     | 
    
         
            +
                      unless source.specs_dir.basename.to_s == 'Specs'
         
     | 
| 
      
 33 
     | 
    
         
            +
                        raise Informative, 'Cannot shard a repo that does not use the `Specs` directory'
         
     | 
| 
      
 34 
     | 
    
         
            +
                      end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                      if lengths
         
     | 
| 
      
 37 
     | 
    
         
            +
                        @lengths = lengths.split(',').map(&:to_i)
         
     | 
| 
      
 38 
     | 
    
         
            +
                        help! 'All lengths must be positive' if lengths.any? { |l| l <= 0 }
         
     | 
| 
      
 39 
     | 
    
         
            +
                      end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                      super
         
     | 
| 
      
 42 
     | 
    
         
            +
                    end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                    extend Executable
         
     | 
| 
      
 45 
     | 
    
         
            +
                    executable :git
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                    def run
         
     | 
| 
      
 48 
     | 
    
         
            +
                      require 'fileutils'
         
     | 
| 
      
 49 
     | 
    
         
            +
                      require 'yaml'
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                      @lengths ||= ideal_lengths(source.pods.size).tap do |ideal_lengths|
         
     | 
| 
      
 52 
     | 
    
         
            +
                        UI.puts "Sharding to ideal prefix lengths #{ideal_lengths.inspect}"
         
     | 
| 
      
 53 
     | 
    
         
            +
                      end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                      new_specs_dir = source.repo + 'temp_specs_dir'
         
     | 
| 
      
 56 
     | 
    
         
            +
                      new_specs_dir.mkpath
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                      new_metadata = Source::Metadata.new(source.metadata.to_hash.update('prefix_lengths' => @lengths))
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                      UI.puts 'Copying specs into sharded structure'
         
     | 
| 
      
 61 
     | 
    
         
            +
                      source.pods.each do |name|
         
     | 
| 
      
 62 
     | 
    
         
            +
                        path = new_specs_dir.join(new_metadata.path_fragment(name))
         
     | 
| 
      
 63 
     | 
    
         
            +
                        path.parent.mkpath
         
     | 
| 
      
 64 
     | 
    
         
            +
                        FileUtils.cp_r(source.pod_path(name), path)
         
     | 
| 
      
 65 
     | 
    
         
            +
                      end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                      UI.puts 'Replacing existing specs directory with sharded copy'
         
     | 
| 
      
 68 
     | 
    
         
            +
                      source.specs_dir.rmtree
         
     | 
| 
      
 69 
     | 
    
         
            +
                      FileUtils.mv(new_specs_dir, source.specs_dir)
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                      UI.puts 'Writing updated source metadata'
         
     | 
| 
      
 72 
     | 
    
         
            +
                      source.metadata_path.open('w') { |f| f.write(YAML.dump(new_metadata.to_hash)) }
         
     | 
| 
      
 73 
     | 
    
         
            +
                      source.send(:refresh_metadata)
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                      UI.section 'Committing changes to the specs repo' do
         
     | 
| 
      
 76 
     | 
    
         
            +
                        Dir.chdir(source.repo) do
         
     | 
| 
      
 77 
     | 
    
         
            +
                          git! 'add', source.specs_dir
         
     | 
| 
      
 78 
     | 
    
         
            +
                          git! 'add', source.metadata_path
         
     | 
| 
      
 79 
     | 
    
         
            +
                          git! 'commit', '-m',
         
     | 
| 
      
 80 
     | 
    
         
            +
                               "Sharded to use #{lengths.inspect} prefix lengths"
         
     | 
| 
      
 81 
     | 
    
         
            +
                        end
         
     | 
| 
      
 82 
     | 
    
         
            +
                      end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                      UI.puts "Finished sharding the #{source.name} repo.\n" \
         
     | 
| 
      
 85 
     | 
    
         
            +
                              "After verifying the changes, push the changes in #{UI.path(source.repo)} upstream."
         
     | 
| 
      
 86 
     | 
    
         
            +
                    ensure
         
     | 
| 
      
 87 
     | 
    
         
            +
                      new_specs_dir.rmtree if new_specs_dir && new_specs_dir.directory?
         
     | 
| 
      
 88 
     | 
    
         
            +
                    end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                    private
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                    def ideal_lengths(total)
         
     | 
| 
      
 93 
     | 
    
         
            +
                      possibilities = (0..3).cycle.first(4 * 4).permutation(4).to_a.
         
     | 
| 
      
 94 
     | 
    
         
            +
                                      each(&:sort!).uniq.each { |perm| perm.delete(0) }
         
     | 
| 
      
 95 
     | 
    
         
            +
                      possibilities.min_by do |perm|
         
     | 
| 
      
 96 
     | 
    
         
            +
                        cost(total, perm) +
         
     | 
| 
      
 97 
     | 
    
         
            +
                          0.75 * cost(total * 2, perm) +
         
     | 
| 
      
 98 
     | 
    
         
            +
                          0.33 * cost(total * 4, perm)
         
     | 
| 
      
 99 
     | 
    
         
            +
                      end
         
     | 
| 
      
 100 
     | 
    
         
            +
                    end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                    def cost(total, lengths)
         
     | 
| 
      
 103 
     | 
    
         
            +
                      (total / (16**lengths.reduce(0, &:+))) +
         
     | 
| 
      
 104 
     | 
    
         
            +
                        lengths.reduce(0) { |s, l| s + 16**l }
         
     | 
| 
      
 105 
     | 
    
         
            +
                    end
         
     | 
| 
      
 106 
     | 
    
         
            +
                  end
         
     | 
| 
      
 107 
     | 
    
         
            +
                end
         
     | 
| 
      
 108 
     | 
    
         
            +
              end
         
     | 
| 
      
 109 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,136 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Pod::Command::Repo::Shard do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe 'CLAide' do
         
     | 
| 
      
 5 
     | 
    
         
            +
                it 'registers itself' do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  expect(Pod::Command.parse(%w(repo shard))).to be_instance_of described_class
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              describe '#validate!' do
         
     | 
| 
      
 11 
     | 
    
         
            +
                let(:argv) { %w() }
         
     | 
| 
      
 12 
     | 
    
         
            +
                subject { Pod::Command.parse(%w(repo shard) + argv) }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                context 'without arguments' do
         
     | 
| 
      
 15 
     | 
    
         
            +
                  it 'raises due to missing repo name' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                    expect { subject.validate! }.to raise_error(CLAide::Help, /A repo name is required/)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                context 'with an unknown repo name' do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  let(:argv) { %w(missing-repo) }
         
     | 
| 
      
 22 
     | 
    
         
            +
                  it 'raises due to missing repo name' do
         
     | 
| 
      
 23 
     | 
    
         
            +
                    expect { subject.validate! }.to raise_error(CLAide::Help, /No repo named `missing-repo` found/)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              describe 'sharding' do
         
     | 
| 
      
 29 
     | 
    
         
            +
                let(:repos_dir) { Pathname(Dir.mktmpdir) }
         
     | 
| 
      
 30 
     | 
    
         
            +
                let(:repo) { 'test_repo' }
         
     | 
| 
      
 31 
     | 
    
         
            +
                before do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  repos_dir.rmtree
         
     | 
| 
      
 33 
     | 
    
         
            +
                  FileUtils.cp_r(Pod::Config.instance.repos_dir, repos_dir)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  Pod::Config.instance.repos_dir = repos_dir
         
     | 
| 
      
 35 
     | 
    
         
            +
                  Dir.chdir(repos_dir + repo) do
         
     | 
| 
      
 36 
     | 
    
         
            +
                    `git init .`
         
     | 
| 
      
 37 
     | 
    
         
            +
                    `git add .`
         
     | 
| 
      
 38 
     | 
    
         
            +
                    `git commit -am 'Initial Commit'`
         
     | 
| 
      
 39 
     | 
    
         
            +
                  end
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
                after do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  repos_dir # .rmtree
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                let(:argv) { [repo] }
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                subject do
         
     | 
| 
      
 48 
     | 
    
         
            +
                  described_class.invoke(argv)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  Pod::Config.instance.sources_manager.sources([repo]).first
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                context 'with explicit lengths' do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  let(:argv) { super() + %w(--lengths=1,2,3) }
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                  it 'shards correctly' do
         
     | 
| 
      
 56 
     | 
    
         
            +
                    expect(subject.metadata.prefix_lengths).to eq([1, 2, 3])
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                    expect(subject.all_specs.map { |s| [s.to_s, s.defined_in_file] }.sort).to eq [
         
     | 
| 
      
 59 
     | 
    
         
            +
                      ['BananaLib (0.0.1)', subject.specs_dir + '3/8e/ca9/BananaLib/0.0.1/BananaLib.podspec'],
         
     | 
| 
      
 60 
     | 
    
         
            +
                      ['BananaLib (0.9)', subject.specs_dir + '3/8e/ca9/BananaLib/0.9/BananaLib.podspec'],
         
     | 
| 
      
 61 
     | 
    
         
            +
                      ['BananaLib (1.0)', subject.specs_dir + '3/8e/ca9/BananaLib/1.0/BananaLib.podspec'],
         
     | 
| 
      
 62 
     | 
    
         
            +
                      ['IncorrectPath (0.9)', subject.specs_dir + '9/0c/8c9/IncorrectPath/1.0/IncorrectPath.podspec'],
         
     | 
| 
      
 63 
     | 
    
         
            +
                      ['JSONKit (1.13)', subject.specs_dir + '1/3f/e43/JSONKit/1.13/JSONKit.podspec'],
         
     | 
| 
      
 64 
     | 
    
         
            +
                      ['JSONKit (1.4)', subject.specs_dir + '1/3f/e43/JSONKit/1.4/JSONKit.podspec'],
         
     | 
| 
      
 65 
     | 
    
         
            +
                      ['JSONKit (999.999.999)', subject.specs_dir + '1/3f/e43/JSONKit/999.999.999/JSONKit.podspec'],
         
     | 
| 
      
 66 
     | 
    
         
            +
                      ['JSONSpec (0.9)', subject.specs_dir + 'd/8d/54f/JSONSpec/0.9/JSONSpec.podspec.json'],
         
     | 
| 
      
 67 
     | 
    
         
            +
                      ['JSONSpec (1.0)', subject.specs_dir + 'd/8d/54f/JSONSpec/1.0/JSONSpec.podspec.json'],
         
     | 
| 
      
 68 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 69 
     | 
    
         
            +
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                context 'with implicit lengths' do
         
     | 
| 
      
 73 
     | 
    
         
            +
                  it 'shards correctly' do
         
     | 
| 
      
 74 
     | 
    
         
            +
                    expect(subject.metadata.prefix_lengths).to eq([])
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                    expect(subject.all_specs.map { |s| [s.to_s, s.defined_in_file] }.sort).to eq [
         
     | 
| 
      
 77 
     | 
    
         
            +
                      ['BananaLib (0.0.1)', subject.specs_dir + 'BananaLib/0.0.1/BananaLib.podspec'],
         
     | 
| 
      
 78 
     | 
    
         
            +
                      ['BananaLib (0.9)', subject.specs_dir + 'BananaLib/0.9/BananaLib.podspec'],
         
     | 
| 
      
 79 
     | 
    
         
            +
                      ['BananaLib (1.0)', subject.specs_dir + 'BananaLib/1.0/BananaLib.podspec'],
         
     | 
| 
      
 80 
     | 
    
         
            +
                      ['IncorrectPath (0.9)', subject.specs_dir + 'IncorrectPath/1.0/IncorrectPath.podspec'],
         
     | 
| 
      
 81 
     | 
    
         
            +
                      ['JSONKit (1.13)', subject.specs_dir + 'JSONKit/1.13/JSONKit.podspec'],
         
     | 
| 
      
 82 
     | 
    
         
            +
                      ['JSONKit (1.4)', subject.specs_dir + 'JSONKit/1.4/JSONKit.podspec'],
         
     | 
| 
      
 83 
     | 
    
         
            +
                      ['JSONKit (999.999.999)', subject.specs_dir + 'JSONKit/999.999.999/JSONKit.podspec'],
         
     | 
| 
      
 84 
     | 
    
         
            +
                      ['JSONSpec (0.9)', subject.specs_dir + 'JSONSpec/0.9/JSONSpec.podspec.json'],
         
     | 
| 
      
 85 
     | 
    
         
            +
                      ['JSONSpec (1.0)', subject.specs_dir + 'JSONSpec/1.0/JSONSpec.podspec.json'],
         
     | 
| 
      
 86 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 87 
     | 
    
         
            +
                  end
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                context 'with an already sharded directory' do
         
     | 
| 
      
 91 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 92 
     | 
    
         
            +
                    described_class.invoke(%W(#{repo} --lengths=1,1))
         
     | 
| 
      
 93 
     | 
    
         
            +
                  end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                  context 're-sharding' do
         
     | 
| 
      
 96 
     | 
    
         
            +
                    let(:argv) { super() + %w(--lengths=1,2,3) }
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                    it 'shards correctly' do
         
     | 
| 
      
 99 
     | 
    
         
            +
                      expect(subject.metadata.prefix_lengths).to eq([1, 2, 3])
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                      expect(subject.all_specs.map { |s| [s.to_s, s.defined_in_file] }.sort).to eq [
         
     | 
| 
      
 102 
     | 
    
         
            +
                        ['BananaLib (0.0.1)', subject.specs_dir + '3/8e/ca9/BananaLib/0.0.1/BananaLib.podspec'],
         
     | 
| 
      
 103 
     | 
    
         
            +
                        ['BananaLib (0.9)', subject.specs_dir + '3/8e/ca9/BananaLib/0.9/BananaLib.podspec'],
         
     | 
| 
      
 104 
     | 
    
         
            +
                        ['BananaLib (1.0)', subject.specs_dir + '3/8e/ca9/BananaLib/1.0/BananaLib.podspec'],
         
     | 
| 
      
 105 
     | 
    
         
            +
                        ['IncorrectPath (0.9)', subject.specs_dir + '9/0c/8c9/IncorrectPath/1.0/IncorrectPath.podspec'],
         
     | 
| 
      
 106 
     | 
    
         
            +
                        ['JSONKit (1.13)', subject.specs_dir + '1/3f/e43/JSONKit/1.13/JSONKit.podspec'],
         
     | 
| 
      
 107 
     | 
    
         
            +
                        ['JSONKit (1.4)', subject.specs_dir + '1/3f/e43/JSONKit/1.4/JSONKit.podspec'],
         
     | 
| 
      
 108 
     | 
    
         
            +
                        ['JSONKit (999.999.999)', subject.specs_dir + '1/3f/e43/JSONKit/999.999.999/JSONKit.podspec'],
         
     | 
| 
      
 109 
     | 
    
         
            +
                        ['JSONSpec (0.9)', subject.specs_dir + 'd/8d/54f/JSONSpec/0.9/JSONSpec.podspec.json'],
         
     | 
| 
      
 110 
     | 
    
         
            +
                        ['JSONSpec (1.0)', subject.specs_dir + 'd/8d/54f/JSONSpec/1.0/JSONSpec.podspec.json'],
         
     | 
| 
      
 111 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 112 
     | 
    
         
            +
                    end
         
     | 
| 
      
 113 
     | 
    
         
            +
                  end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                  context 'un-sharding' do
         
     | 
| 
      
 116 
     | 
    
         
            +
                    let(:argv) { super() + %w(--lengths=) }
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
                    it 'shards correctly' do
         
     | 
| 
      
 119 
     | 
    
         
            +
                      expect(subject.metadata.prefix_lengths).to eq([])
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                      expect(subject.all_specs.map { |s| [s.to_s, s.defined_in_file] }.sort).to eq [
         
     | 
| 
      
 122 
     | 
    
         
            +
                        ['BananaLib (0.0.1)', subject.specs_dir + 'BananaLib/0.0.1/BananaLib.podspec'],
         
     | 
| 
      
 123 
     | 
    
         
            +
                        ['BananaLib (0.9)', subject.specs_dir + 'BananaLib/0.9/BananaLib.podspec'],
         
     | 
| 
      
 124 
     | 
    
         
            +
                        ['BananaLib (1.0)', subject.specs_dir + 'BananaLib/1.0/BananaLib.podspec'],
         
     | 
| 
      
 125 
     | 
    
         
            +
                        ['IncorrectPath (0.9)', subject.specs_dir + 'IncorrectPath/1.0/IncorrectPath.podspec'],
         
     | 
| 
      
 126 
     | 
    
         
            +
                        ['JSONKit (1.13)', subject.specs_dir + 'JSONKit/1.13/JSONKit.podspec'],
         
     | 
| 
      
 127 
     | 
    
         
            +
                        ['JSONKit (1.4)', subject.specs_dir + 'JSONKit/1.4/JSONKit.podspec'],
         
     | 
| 
      
 128 
     | 
    
         
            +
                        ['JSONKit (999.999.999)', subject.specs_dir + 'JSONKit/999.999.999/JSONKit.podspec'],
         
     | 
| 
      
 129 
     | 
    
         
            +
                        ['JSONSpec (0.9)', subject.specs_dir + 'JSONSpec/0.9/JSONSpec.podspec.json'],
         
     | 
| 
      
 130 
     | 
    
         
            +
                        ['JSONSpec (1.0)', subject.specs_dir + 'JSONSpec/1.0/JSONSpec.podspec.json'],
         
     | 
| 
      
 131 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 132 
     | 
    
         
            +
                    end
         
     | 
| 
      
 133 
     | 
    
         
            +
                  end
         
     | 
| 
      
 134 
     | 
    
         
            +
                end
         
     | 
| 
      
 135 
     | 
    
         
            +
              end
         
     | 
| 
      
 136 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Pod::Spec.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
              s.name         = 'BananaLib'
         
     | 
| 
      
 3 
     | 
    
         
            +
              s.version      = '0.0.1'
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.authors      = 'Banana Corp', { 'Monkey Boy' => 'monkey@banana-corp.local' }
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.homepage     = 'http://banana-corp.local/banana-lib.html'
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.summary      = 'Chunky bananas!'
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.description  = 'Full of chunky bananas.'
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.source       = { :git => 'http://banana-corp.local/banana-lib.git', :commit => 'dbf863b4d7cf6c22d4bf89969fe7505c61950958' }
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.source_files = 'Classes/*.{h,m}', 'Vendor'
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.xcconfig     = { 'OTHER_LDFLAGS' => '-framework SystemConfiguration' }
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.prefix_header_file = 'Classes/BananaLib.pch'
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.resources    = "Resources/*.png"
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.dependency   'monkey', '~> 1.0.1', '< 1.0.9'
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.license      = {
         
     | 
| 
      
 15 
     | 
    
         
            +
                :type => 'MIT',
         
     | 
| 
      
 16 
     | 
    
         
            +
                :file => 'LICENSE',
         
     | 
| 
      
 17 
     | 
    
         
            +
                :text => 'Permission is hereby granted ...'
         
     | 
| 
      
 18 
     | 
    
         
            +
              }
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Pod::Spec.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
              s.name         = 'BananaLib'
         
     | 
| 
      
 3 
     | 
    
         
            +
              s.version      = '0.9'
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.authors      = 'Banana Corp', { 'Monkey Boy' => 'monkey@banana-corp.local' }
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.homepage     = 'http://banana-corp.local/banana-lib.html'
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.summary      = 'Chunky bananas!'
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.description  = 'Full of chunky bananas.'
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.source       = { :git => 'http://banana-corp.local/banana-lib.git', :tag => 'v1.0' }
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.source_files = 'Classes/*.{h,m}', 'Vendor'
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.xcconfig     = { 'OTHER_LDFLAGS' => '-framework SystemConfiguration' }
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.prefix_header_file = 'Classes/BananaLib.pch'
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.resources    = "Resources/*.png"
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.dependency   'monkey', '~> 1.0.1', '< 1.0.9'
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.license      = {
         
     | 
| 
      
 15 
     | 
    
         
            +
                :type => 'MIT',
         
     | 
| 
      
 16 
     | 
    
         
            +
                :file => 'LICENSE',
         
     | 
| 
      
 17 
     | 
    
         
            +
                :text => 'Permission is hereby granted ...'
         
     | 
| 
      
 18 
     | 
    
         
            +
              }
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Pod::Spec.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
              s.name         = 'BananaLib'
         
     | 
| 
      
 3 
     | 
    
         
            +
              s.version      = '1.0'
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.authors      = 'Banana Corp', { 'Monkey Boy' => 'monkey@banana-corp.local' }
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.homepage     = 'http://banana-corp.local/banana-lib.html'
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.summary      = 'Chunky bananas!'
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.description  = 'Full of chunky bananas.'
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.source       = { :git => 'http://banana-corp.local/banana-lib.git', :tag => 'v1.0' }
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.source_files = 'Classes/*.{h,m}', 'Vendor'
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.xcconfig     = { 'OTHER_LDFLAGS' => '-framework SystemConfiguration' }
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.prefix_header_file = 'Classes/BananaLib.pch'
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.resources    = "Resources/*.png"
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.requires_arc = true
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.dependency   'monkey', '~> 1.0.1', '< 1.0.9'
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.license      = {
         
     | 
| 
      
 16 
     | 
    
         
            +
                :type => 'MIT',
         
     | 
| 
      
 17 
     | 
    
         
            +
                :file => 'LICENSE',
         
     | 
| 
      
 18 
     | 
    
         
            +
                :text => 'Permission is hereby granted ...'
         
     | 
| 
      
 19 
     | 
    
         
            +
              }
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Pod::Spec.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
              s.name     = 'JSONKit'
         
     | 
| 
      
 3 
     | 
    
         
            +
              s.version  = '1.13'
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.license  = 'BSD / Apache License, Version 2.0'
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.summary  = 'A Very High Performance Objective-C JSON Library.'
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.homepage = 'https://github.com/johnezang/JSONKit'
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.author   = 'John Engelhart'
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.source   = { :git => 'https://github.com/johnezang/JSONKit.git', :tag => 'v1.13' }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              s.source_files = 'JSONKit.*'
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Pod::Spec.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
              s.name     = 'JSONKit'
         
     | 
| 
      
 3 
     | 
    
         
            +
              s.version  = '1.4'
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.license  = 'BSD / Apache License, Version 2.0'
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.summary  = 'A Very High Performance Objective-C JSON Library.'
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.homepage = 'https://github.com/johnezang/JSONKit'
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.author   = 'John Engelhart'
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.source   = { :git => 'https://github.com/johnezang/JSONKit.git', :tag => 'v1.4' }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              s.source_files = 'JSONKit.*'
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Pod::Spec.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
              s.name     = 'JSONKit'
         
     | 
| 
      
 3 
     | 
    
         
            +
              s.version  = '999.999.999'
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.license  = 'BSD / Apache License, Version 2.0'
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.summary  = 'A Very High Performance Objective-C JSON Library.'
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.homepage = 'https://github.com/johnezang/JSONKit'
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.author   = 'John Engelhart'
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.source   = { :git => 'https://github.com/johnezang/JSONKit.git', :commit => '0aff3deb5e1bb2bbc88a83fd71c8ad5550185cce' }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              s.source_files   = 'JSONKit.*'
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.compiler_flags = '-Wno-deprecated-objc-isa-usage', '-Wno-format'
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,50 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'bundler/setup'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'cocoapods'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            require File.expand_path('../../lib/cocoapods_plugin', __FILE__)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            #-----------------------------------------------------------------------------#
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            module Pod
         
     | 
| 
      
 11 
     | 
    
         
            +
              # Disable the wrapping so the output is deterministic in the tests.
         
     | 
| 
      
 12 
     | 
    
         
            +
              #
         
     | 
| 
      
 13 
     | 
    
         
            +
              UI.disable_wrap = true
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              # Redirects the messages to an internal store.
         
     | 
| 
      
 16 
     | 
    
         
            +
              #
         
     | 
| 
      
 17 
     | 
    
         
            +
              module UI
         
     | 
| 
      
 18 
     | 
    
         
            +
                @output = ''
         
     | 
| 
      
 19 
     | 
    
         
            +
                @warnings = ''
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attr_accessor :output
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attr_accessor :warnings
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  def puts(message = '')
         
     | 
| 
      
 26 
     | 
    
         
            +
                    @output << "#{message}\n"
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  def warn(message = '', _actions = [])
         
     | 
| 
      
 30 
     | 
    
         
            +
                    @warnings << "#{message}\n"
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                  def print(message)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    @output << message
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            #-----------------------------------------------------------------------------#
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            RSpec.configure do |c|
         
     | 
| 
      
 43 
     | 
    
         
            +
              c.before(:each) do
         
     | 
| 
      
 44 
     | 
    
         
            +
                Pod::UI.output = ''
         
     | 
| 
      
 45 
     | 
    
         
            +
                Pod::UI.warnings = ''
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                Pod::Config.instance.repos_dir = Pathname(__FILE__) + '../fixtures/spec-repos'
         
     | 
| 
      
 48 
     | 
    
         
            +
                Pod::Config.instance.verbose = false
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,115 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: cocoapods-repo-shard
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Samuel Giddins
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-04-15 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '1.11'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '1.11'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '11.0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '11.0'
         
     | 
| 
      
 41 
     | 
    
         
            +
            description: 
         
     | 
| 
      
 42 
     | 
    
         
            +
            email:
         
     | 
| 
      
 43 
     | 
    
         
            +
            - segiddins@segiddins.me
         
     | 
| 
      
 44 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 45 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 46 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 47 
     | 
    
         
            +
            files:
         
     | 
| 
      
 48 
     | 
    
         
            +
            - ".gitignore"
         
     | 
| 
      
 49 
     | 
    
         
            +
            - ".rspec"
         
     | 
| 
      
 50 
     | 
    
         
            +
            - ".rubocop.yml"
         
     | 
| 
      
 51 
     | 
    
         
            +
            - ".rubocop_cocoapods.yml"
         
     | 
| 
      
 52 
     | 
    
         
            +
            - ".travis.yml"
         
     | 
| 
      
 53 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
      
 54 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 55 
     | 
    
         
            +
            - Gemfile.lock
         
     | 
| 
      
 56 
     | 
    
         
            +
            - LICENSE.txt
         
     | 
| 
      
 57 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 58 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 59 
     | 
    
         
            +
            - cocoapods-repo-shard.gemspec
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib/cocoapods_plugin.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
            - lib/cocoapods_repo_shard.rb
         
     | 
| 
      
 62 
     | 
    
         
            +
            - lib/cocoapods_repo_shard/command.rb
         
     | 
| 
      
 63 
     | 
    
         
            +
            - lib/cocoapods_repo_shard/command/repo/shard.rb
         
     | 
| 
      
 64 
     | 
    
         
            +
            - lib/cocoapods_repo_shard/gem_version.rb
         
     | 
| 
      
 65 
     | 
    
         
            +
            - spec/command/repo/shard_spec.rb
         
     | 
| 
      
 66 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/BananaLib/0.0.1/BananaLib.podspec
         
     | 
| 
      
 67 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/BananaLib/0.9/BananaLib.podspec
         
     | 
| 
      
 68 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/BananaLib/1.0/BananaLib.podspec
         
     | 
| 
      
 69 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/Faulty_spec/1.0.0/Faulty_spec.podspec
         
     | 
| 
      
 70 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/IncorrectPath/1.0/IncorrectPath.podspec
         
     | 
| 
      
 71 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONKit/1.13/JSONKit.podspec
         
     | 
| 
      
 72 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONKit/1.4/JSONKit.podspec
         
     | 
| 
      
 73 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONKit/999.999.999/JSONKit.podspec
         
     | 
| 
      
 74 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONSpec/0.9/JSONSpec.podspec.json
         
     | 
| 
      
 75 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONSpec/1.0/JSONSpec.podspec.json
         
     | 
| 
      
 76 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/StraySpec.podspec
         
     | 
| 
      
 77 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 78 
     | 
    
         
            +
            homepage: https://github.com/CocoaPods/cocoapods-repo-shard
         
     | 
| 
      
 79 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 80 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 81 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 82 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 83 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 84 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 86 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 87 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 88 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 89 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 90 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 91 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 92 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 93 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 94 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 95 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 96 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 97 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 98 
     | 
    
         
            +
            rubygems_version: 2.6.3
         
     | 
| 
      
 99 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 100 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 101 
     | 
    
         
            +
            summary: Shard a CocoaPods specs repository.
         
     | 
| 
      
 102 
     | 
    
         
            +
            test_files:
         
     | 
| 
      
 103 
     | 
    
         
            +
            - spec/command/repo/shard_spec.rb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/BananaLib/0.0.1/BananaLib.podspec
         
     | 
| 
      
 105 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/BananaLib/0.9/BananaLib.podspec
         
     | 
| 
      
 106 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/BananaLib/1.0/BananaLib.podspec
         
     | 
| 
      
 107 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/Faulty_spec/1.0.0/Faulty_spec.podspec
         
     | 
| 
      
 108 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/IncorrectPath/1.0/IncorrectPath.podspec
         
     | 
| 
      
 109 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONKit/1.13/JSONKit.podspec
         
     | 
| 
      
 110 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONKit/1.4/JSONKit.podspec
         
     | 
| 
      
 111 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONKit/999.999.999/JSONKit.podspec
         
     | 
| 
      
 112 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONSpec/0.9/JSONSpec.podspec.json
         
     | 
| 
      
 113 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/JSONSpec/1.0/JSONSpec.podspec.json
         
     | 
| 
      
 114 
     | 
    
         
            +
            - spec/fixtures/spec-repos/test_repo/Specs/StraySpec.podspec
         
     | 
| 
      
 115 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     |