cocoapods-mtxx-bin 0.0.13 → 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 +4 -4
 - data/lib/cocoapods-mtxx-bin/command/bin/buildAll.rb +45 -23
 - data/lib/cocoapods-mtxx-bin/command/bin/init.rb +14 -36
 - data/lib/cocoapods-mtxx-bin/command/bin/lock/dependency.rb +82 -0
 - data/lib/cocoapods-mtxx-bin/command/bin/lock/spec_repo.rb +105 -0
 - data/lib/cocoapods-mtxx-bin/command/bin/lock/version.rb +41 -0
 - data/lib/cocoapods-mtxx-bin/command/bin/lock.rb +36 -0
 - data/lib/cocoapods-mtxx-bin/command/bin/outputSource.rb +18 -11
 - data/lib/cocoapods-mtxx-bin/command/bin/upload.rb +2 -2
 - data/lib/cocoapods-mtxx-bin/command/bin.rb +11 -12
 - data/lib/cocoapods-mtxx-bin/config/config.rb +24 -49
 - data/lib/cocoapods-mtxx-bin/config/config_asker.rb +1 -4
 - data/lib/cocoapods-mtxx-bin/gem_version.rb +1 -1
 - data/lib/cocoapods-mtxx-bin/helpers/buildAll/bin_helper.rb +11 -0
 - data/lib/cocoapods-mtxx-bin/helpers/buildAll/builder.rb +44 -39
 - data/lib/cocoapods-mtxx-bin/helpers/buildAll/podspec_util.rb +11 -8
 - data/lib/cocoapods-mtxx-bin/helpers/buildAll/zip_file_helper.rb +17 -13
 - data/lib/cocoapods-mtxx-bin/helpers/pod_size_helper.rb +30 -12
 - data/lib/cocoapods-mtxx-bin/native/installer.rb +8 -7
 - data/lib/cocoapods-mtxx-bin/native/podfile.rb +8 -0
 - data/lib/cocoapods-mtxx-bin/native/podfile_env.rb +1 -0
 - data/lib/cocoapods-mtxx-bin/native/resolver.rb +31 -32
 - data/lib/cocoapods-mtxx-bin/native/sources_manager.rb +2 -1
 - data/lib/cocoapods-mtxx-bin/source_provider_hook.rb +4 -2
 - metadata +6 -6
 - data/lib/cocoapods-mtxx-bin/command/bin/imy.rb +0 -45
 - data/lib/cocoapods-mtxx-bin/command/bin/initHotKey.rb +0 -70
 - data/lib/cocoapods-mtxx-bin/config/config_hot_key.rb +0 -103
 - data/lib/cocoapods-mtxx-bin/config/config_hot_key_asker.rb +0 -57
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 41f8002bb6e1aebd88af984e688177d9ac4821eb2c1d006da248c2f269712b70
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: aeaf21d40990fe819241aed0115990d258b624331767f30e0a8bb9d437896b3e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 947e653552621d2fd5d2798f672ab145d30b79f9f007fa0aea0c97137d8cc9018e1f03708b0c4685e844f298d8a48615fe521b8bf05dd2a4b9a490426b0ee230
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 1c971b939a41dfe772bf233d9118ef83bf46672cd5421ba59a3211f4012c103cb17b7141888444b031397ff4a35f65ed7f9c4ae1e68501509054571a7cdb4d0c
         
     | 
| 
         @@ -24,22 +24,31 @@ module Pod 
     | 
|
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                    def self.options
         
     | 
| 
       26 
26 
     | 
    
         
             
                      [
         
     | 
| 
       27 
     | 
    
         
            -
                        %w[--clean  
     | 
| 
      
 27 
     | 
    
         
            +
                        %w[--clean 全部二进制包制作完成后删除编译临时目录],
         
     | 
| 
      
 28 
     | 
    
         
            +
                        %w[--clean-single 每制作完一个二进制包就删除该编译临时目录],
         
     | 
| 
       28 
29 
     | 
    
         
             
                        %w[--repo-update 更新Podfile中指定的repo仓库],
         
     | 
| 
       29 
     | 
    
         
            -
                        %w[--full-build 是否全量打包]
         
     | 
| 
      
 30 
     | 
    
         
            +
                        %w[--full-build 是否全量打包],
         
     | 
| 
      
 31 
     | 
    
         
            +
                        %w[--skip-simulator 跳过模拟器编译],
         
     | 
| 
      
 32 
     | 
    
         
            +
                        %w[--configuration=configName 在构建每个目标时使用configName指定构建配置,如:'Debug'、'Release'等]
         
     | 
| 
       30 
33 
     | 
    
         
             
                      ].concat(super).uniq
         
     | 
| 
       31 
34 
     | 
    
         
             
                    end
         
     | 
| 
       32 
35 
     | 
    
         | 
| 
       33 
36 
     | 
    
         
             
                    def initialize(argv)
         
     | 
| 
       34 
37 
     | 
    
         
             
                      @clean = argv.flag?('clean', false)
         
     | 
| 
      
 38 
     | 
    
         
            +
                      @clean_single = argv.flag?('clean-single', false)
         
     | 
| 
       35 
39 
     | 
    
         
             
                      @repo_update = argv.flag?('repo-update', false)
         
     | 
| 
       36 
40 
     | 
    
         
             
                      @full_build = argv.flag?('full-build', false)
         
     | 
| 
      
 41 
     | 
    
         
            +
                      @skip_simulator = argv.flag?('skip-simulator', false)
         
     | 
| 
      
 42 
     | 
    
         
            +
                      @configuration = argv.option('configuration', 'Debug')
         
     | 
| 
       37 
43 
     | 
    
         
             
                      @base_dir = "#{Pathname.pwd}/build_pods"
         
     | 
| 
       38 
44 
     | 
    
         
             
                      @version_helper = BinHelper.new
         
     | 
| 
       39 
45 
     | 
    
         
             
                      super
         
     | 
| 
       40 
46 
     | 
    
         
             
                    end
         
     | 
| 
       41 
47 
     | 
    
         | 
| 
       42 
48 
     | 
    
         
             
                    def run
         
     | 
| 
      
 49 
     | 
    
         
            +
                      CBin.config.config_file_exist?
         
     | 
| 
      
 50 
     | 
    
         
            +
                      # 打印提示
         
     | 
| 
      
 51 
     | 
    
         
            +
                      print_tip
         
     | 
| 
       43 
52 
     | 
    
         
             
                      # 开始时间
         
     | 
| 
       44 
53 
     | 
    
         
             
                      @start_time = Time.now.to_i
         
     | 
| 
       45 
54 
     | 
    
         
             
                      # 读取配置文件
         
     | 
| 
         @@ -64,6 +73,14 @@ module Pod 
     | 
|
| 
       64 
73 
     | 
    
         | 
| 
       65 
74 
     | 
    
         
             
                    private
         
     | 
| 
       66 
75 
     | 
    
         | 
| 
      
 76 
     | 
    
         
            +
                    def print_tip
         
     | 
| 
      
 77 
     | 
    
         
            +
                      UI.info '——————————————————————————————————'.blue
         
     | 
| 
      
 78 
     | 
    
         
            +
                      UI.info "|#{' '.center(32)}|".blue
         
     | 
| 
      
 79 
     | 
    
         
            +
                      UI.info "|#{"Configuration:`#{@configuration}`".center(32)}|".blue
         
     | 
| 
      
 80 
     | 
    
         
            +
                      UI.info "|#{' '.center(32)}|".blue
         
     | 
| 
      
 81 
     | 
    
         
            +
                      UI.info '——————————————————————————————————'.blue
         
     | 
| 
      
 82 
     | 
    
         
            +
                    end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
       67 
84 
     | 
    
         
             
                    # 打印耗时
         
     | 
| 
       68 
85 
     | 
    
         
             
                    def show_cost_time
         
     | 
| 
       69 
86 
     | 
    
         
             
                      return if @start_time.nil?
         
     | 
| 
         @@ -73,7 +90,7 @@ module Pod 
     | 
|
| 
       73 
90 
     | 
    
         
             
                    # 读取配置文件
         
     | 
| 
       74 
91 
     | 
    
         
             
                    def read_config
         
     | 
| 
       75 
92 
     | 
    
         
             
                      UI.title 'Read config from file `BinConfig.yaml`'.green do
         
     | 
| 
       76 
     | 
    
         
            -
                        config_file = File.join( 
     | 
| 
      
 93 
     | 
    
         
            +
                        config_file = File.join(Pod::Config.instance.project_root, 'BinConfig.yaml')
         
     | 
| 
       77 
94 
     | 
    
         
             
                        return unless File.exist?(config_file)
         
     | 
| 
       78 
95 
     | 
    
         
             
                        config = YAML.safe_load(File.open(config_file))
         
     | 
| 
       79 
96 
     | 
    
         
             
                        return if config.nil?
         
     | 
| 
         @@ -125,7 +142,7 @@ module Pod 
     | 
|
| 
       125 
142 
     | 
    
         
             
                    def podfile
         
     | 
| 
       126 
143 
     | 
    
         
             
                      @podfile ||= begin
         
     | 
| 
       127 
144 
     | 
    
         
             
                                     podfile_path = File.join(Pathname.pwd, 'Podfile')
         
     | 
| 
       128 
     | 
    
         
            -
                                     raise 'Podfile不存在' unless File.exist?(podfile_path)
         
     | 
| 
      
 145 
     | 
    
         
            +
                                     raise Informative, 'Podfile不存在' unless File.exist?(podfile_path)
         
     | 
| 
       129 
146 
     | 
    
         
             
                                     sources_manager = Pod::Config.instance.sources_manager
         
     | 
| 
       130 
147 
     | 
    
         
             
                                     podfile = Podfile.from_file(Pathname.new(podfile_path))
         
     | 
| 
       131 
148 
     | 
    
         
             
                                     podfile_hash = podfile.to_hash
         
     | 
| 
         @@ -140,7 +157,7 @@ module Pod 
     | 
|
| 
       140 
157 
     | 
    
         
             
                    def lockfile
         
     | 
| 
       141 
158 
     | 
    
         
             
                      @lockfile ||= begin
         
     | 
| 
       142 
159 
     | 
    
         
             
                                      lock_path = File.join(Pathname.pwd, 'Podfile.lock')
         
     | 
| 
       143 
     | 
    
         
            -
                                      raise 'Podfile.lock不存在,请执行pod install' unless File.exist?(lock_path)
         
     | 
| 
      
 160 
     | 
    
         
            +
                                      raise Informative, 'Podfile.lock不存在,请执行pod install' unless File.exist?(lock_path)
         
     | 
| 
       144 
161 
     | 
    
         
             
                                      Lockfile.from_file(Pathname.new(lock_path))
         
     | 
| 
       145 
162 
     | 
    
         
             
                                    end
         
     | 
| 
       146 
163 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -149,7 +166,7 @@ module Pod 
     | 
|
| 
       149 
166 
     | 
    
         
             
                    def sandbox
         
     | 
| 
       150 
167 
     | 
    
         
             
                      @sandbox ||= begin
         
     | 
| 
       151 
168 
     | 
    
         
             
                                     sandbox_path = File.join(Pathname.pwd, 'Pods')
         
     | 
| 
       152 
     | 
    
         
            -
                                     raise 'Pods文件夹不存在,请执行pod install' unless File.exist?(sandbox_path)
         
     | 
| 
      
 169 
     | 
    
         
            +
                                     raise Informative, 'Pods文件夹不存在,请执行pod install' unless File.exist?(sandbox_path)
         
     | 
| 
       153 
170 
     | 
    
         
             
                                     Pod::Sandbox.new(sandbox_path)
         
     | 
| 
       154 
171 
     | 
    
         
             
                                   end
         
     | 
| 
       155 
172 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -166,6 +183,14 @@ module Pod 
     | 
|
| 
       166 
183 
     | 
    
         
             
                      end
         
     | 
| 
       167 
184 
     | 
    
         
             
                    end
         
     | 
| 
       168 
185 
     | 
    
         | 
| 
      
 186 
     | 
    
         
            +
                    # 删除单个Pod的编译中间产物
         
     | 
| 
      
 187 
     | 
    
         
            +
                    def clean_single_build_pod(pod_target)
         
     | 
| 
      
 188 
     | 
    
         
            +
                      UI.title "Clean build pod: `#{pod_target}`".green do
         
     | 
| 
      
 189 
     | 
    
         
            +
                        build_pod_path = File.join(Dir.pwd, 'build_pods', "#{pod_target}")
         
     | 
| 
      
 190 
     | 
    
         
            +
                        FileUtils.rm_rf(build_pod_path) if File.exist?(build_pod_path)
         
     | 
| 
      
 191 
     | 
    
         
            +
                      end
         
     | 
| 
      
 192 
     | 
    
         
            +
                    end
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
       169 
194 
     | 
    
         
             
                    # 删除编译产物
         
     | 
| 
       170 
195 
     | 
    
         
             
                    def clean_build_pods
         
     | 
| 
       171 
196 
     | 
    
         
             
                      UI.title 'Clean build pods'.green do
         
     | 
| 
         @@ -189,14 +214,10 @@ module Pod 
     | 
|
| 
       189 
214 
     | 
    
         
             
                        pod_targets.map do |pod_target|
         
     | 
| 
       190 
215 
     | 
    
         
             
                          begin
         
     | 
| 
       191 
216 
     | 
    
         
             
                            version = @version_helper.version(pod_target.pod_name, pod_target.root_spec.version.to_s, @analyze_result.specifications)
         
     | 
| 
       192 
     | 
    
         
            -
                            #  
     | 
| 
       193 
     | 
    
         
            -
                            if  
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
             
     | 
| 
       196 
     | 
    
         
            -
                            else
         
     | 
| 
       197 
     | 
    
         
            -
                              # 白名单
         
     | 
| 
       198 
     | 
    
         
            -
                              next if !@write_list.nil? && !@write_list.empty? && !@write_list.include?(pod_target.pod_name)
         
     | 
| 
       199 
     | 
    
         
            -
                            end
         
     | 
| 
      
 217 
     | 
    
         
            +
                            # 黑名单(不分全量和非全量)
         
     | 
| 
      
 218 
     | 
    
         
            +
                            next if skip_build?(pod_target)
         
     | 
| 
      
 219 
     | 
    
         
            +
                            # 白名单(有白名单,只看白名单,不分全量和非全量)
         
     | 
| 
      
 220 
     | 
    
         
            +
                            next if !@write_list.nil? && !@write_list.empty? && !@write_list.include?(pod_target.pod_name)
         
     | 
| 
       200 
221 
     | 
    
         
             
                            # 本地库
         
     | 
| 
       201 
222 
     | 
    
         
             
                            if @sandbox.local?(pod_target.pod_name)
         
     | 
| 
       202 
223 
     | 
    
         
             
                              local_pods << pod_target.pod_name
         
     | 
| 
         @@ -215,22 +236,20 @@ module Pod 
     | 
|
| 
       215 
236 
     | 
    
         
             
                              show_skip_tip("#{pod_target.pod_name} 无需编译")
         
     | 
| 
       216 
237 
     | 
    
         
             
                              next
         
     | 
| 
       217 
238 
     | 
    
         
             
                            end
         
     | 
| 
       218 
     | 
    
         
            -
                            #  
     | 
| 
      
 239 
     | 
    
         
            +
                            # 非全量编译、不在白名单中且已经有相应的二进制版本
         
     | 
| 
       219 
240 
     | 
    
         
             
                            if has_created_binary?(pod_target.pod_name, version)
         
     | 
| 
       220 
241 
     | 
    
         
             
                              created_pods << pod_target.pod_name
         
     | 
| 
       221 
242 
     | 
    
         
             
                              show_skip_tip("#{pod_target.pod_name}(#{version}) 已经有二进制版本了")
         
     | 
| 
       222 
243 
     | 
    
         
             
                              next
         
     | 
| 
       223 
244 
     | 
    
         
             
                            end
         
     | 
| 
       224 
     | 
    
         
            -
                            # 是否跳过编译(黑名单)
         
     | 
| 
       225 
     | 
    
         
            -
                            next if skip_build?(pod_target)
         
     | 
| 
       226 
245 
     | 
    
         
             
                            # 构建产物
         
     | 
| 
       227 
     | 
    
         
            -
                            builder = Builder.new(pod_target, @sandbox.checkout_sources)
         
     | 
| 
      
 246 
     | 
    
         
            +
                            builder = Builder.new(pod_target, @sandbox.checkout_sources, @skip_simulator, @configuration)
         
     | 
| 
       228 
247 
     | 
    
         
             
                            result = builder.build
         
     | 
| 
       229 
248 
     | 
    
         
             
                            fail_pods << pod_target.pod_name unless result
         
     | 
| 
       230 
249 
     | 
    
         
             
                            next unless result
         
     | 
| 
       231 
250 
     | 
    
         
             
                            builder.create_binary
         
     | 
| 
       232 
251 
     | 
    
         
             
                            # 压缩并上传zip
         
     | 
| 
       233 
     | 
    
         
            -
                            zip_helper = ZipFileHelper.new(pod_target, version, builder.product_dir, builder.build_as_framework)
         
     | 
| 
      
 252 
     | 
    
         
            +
                            zip_helper = ZipFileHelper.new(pod_target, version, builder.product_dir, builder.build_as_framework?, @configuration)
         
     | 
| 
       234 
253 
     | 
    
         
             
                            result = zip_helper.zip_lib
         
     | 
| 
       235 
254 
     | 
    
         
             
                            fail_pods << pod_target.pod_name unless result
         
     | 
| 
       236 
255 
     | 
    
         
             
                            next unless result
         
     | 
| 
         @@ -238,15 +257,18 @@ module Pod 
     | 
|
| 
       238 
257 
     | 
    
         
             
                            fail_pods << pod_target.pod_name unless result
         
     | 
| 
       239 
258 
     | 
    
         
             
                            next unless result
         
     | 
| 
       240 
259 
     | 
    
         
             
                            # 生成二进制podspec并上传
         
     | 
| 
       241 
     | 
    
         
            -
                            podspec_creator = PodspecUtil.new(pod_target, version, builder.build_as_framework)
         
     | 
| 
      
 260 
     | 
    
         
            +
                            podspec_creator = PodspecUtil.new(pod_target, version, builder.build_as_framework?, @configuration)
         
     | 
| 
       242 
261 
     | 
    
         
             
                            bin_spec = podspec_creator.create_binary_podspec
         
     | 
| 
       243 
262 
     | 
    
         
             
                            bin_spec_file = podspec_creator.write_binary_podspec(bin_spec)
         
     | 
| 
       244 
     | 
    
         
            -
                            podspec_creator.push_binary_podspec(bin_spec_file)
         
     | 
| 
       245 
     | 
    
         
            -
                             
     | 
| 
      
 263 
     | 
    
         
            +
                            result = podspec_creator.push_binary_podspec(bin_spec_file)
         
     | 
| 
      
 264 
     | 
    
         
            +
                            fail_pods << pod_target.pod_name unless result
         
     | 
| 
      
 265 
     | 
    
         
            +
                            success_pods << pod_target.pod_name if result
         
     | 
| 
       246 
266 
     | 
    
         
             
                          rescue Pod::StandardError => e
         
     | 
| 
       247 
     | 
    
         
            -
                            UI.info " 
     | 
| 
      
 267 
     | 
    
         
            +
                            UI.info "`#{pod_target}`编译失败,原因:#{e}".red
         
     | 
| 
       248 
268 
     | 
    
         
             
                            fail_pods << pod_target.pod_name
         
     | 
| 
       249 
269 
     | 
    
         
             
                            next
         
     | 
| 
      
 270 
     | 
    
         
            +
                          ensure
         
     | 
| 
      
 271 
     | 
    
         
            +
                            clean_single_build_pod(pod_target) if @clean_single
         
     | 
| 
       250 
272 
     | 
    
         
             
                          end
         
     | 
| 
       251 
273 
     | 
    
         
             
                        end
         
     | 
| 
       252 
274 
     | 
    
         
             
                        results = {
         
     | 
| 
         @@ -4,56 +4,53 @@ module Pod 
     | 
|
| 
       4 
4 
     | 
    
         
             
              class Command
         
     | 
| 
       5 
5 
     | 
    
         
             
                class Bin < Command
         
     | 
| 
       6 
6 
     | 
    
         
             
                  class Init < Bin
         
     | 
| 
       7 
     | 
    
         
            -
                    self.summary = ' 
     | 
| 
      
 7 
     | 
    
         
            +
                    self.summary = '配置插件'
         
     | 
| 
       8 
8 
     | 
    
         
             
                    self.description = <<-DESC
         
     | 
| 
       9 
     | 
    
         
            -
                      创建yml 
     | 
| 
      
 9 
     | 
    
         
            +
                      创建yml配置文件,保存插件需要的配置信息,如二进制podspec仓库、二进制下载地址等
         
     | 
| 
       10 
10 
     | 
    
         
             
                    DESC
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                    def self.options
         
     | 
| 
       13 
13 
     | 
    
         
             
                      [
         
     | 
| 
       14 
     | 
    
         
            -
                        %w[--bin-url=URL 配置文件地址,直接从此地址下载配置文件] 
     | 
| 
       15 
     | 
    
         
            -
                        ['--update-sources', '更新源码私有源配置 bin_dev.yml 中的 code_repo_url_list 配置,支持多私有源,多个私有源用分号区分  example:git@techgit.meitu.com:iMeituPic/mtsourcespecs.git;git@techgit.meitu.com:iosmodules/specs.git;https://github.com/CocoaPods/Specs.git']
         
     | 
| 
      
 14 
     | 
    
         
            +
                        %w[--bin-url=URL 配置文件地址,直接从此地址下载配置文件]
         
     | 
| 
       16 
15 
     | 
    
         
             
                      ].concat(super)
         
     | 
| 
       17 
16 
     | 
    
         
             
                    end
         
     | 
| 
       18 
17 
     | 
    
         | 
| 
       19 
18 
     | 
    
         
             
                    def initialize(argv)
         
     | 
| 
       20 
19 
     | 
    
         
             
                      @bin_url = argv.option('bin-url')
         
     | 
| 
       21 
     | 
    
         
            -
                      @update_sources = argv.flag?('update-sources')
         
     | 
| 
       22 
20 
     | 
    
         
             
                      super
         
     | 
| 
       23 
21 
     | 
    
         
             
                    end
         
     | 
| 
       24 
22 
     | 
    
         | 
| 
       25 
23 
     | 
    
         
             
                    def run
         
     | 
| 
       26 
     | 
    
         
            -
                       
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
                      raise Informative, "当前目录下没有`Podfile`文件" unless File.exist?(File.join(Dir.pwd, "Podfile"))
         
     | 
| 
      
 25 
     | 
    
         
            +
                      raise Informative, "当前目录下已经存在配置文件" if File.exist?(CBin.config.config_file)
         
     | 
| 
      
 26 
     | 
    
         
            +
                      if @bin_url.nil?
         
     | 
| 
      
 27 
     | 
    
         
            +
                        config_with_asker
         
     | 
| 
       28 
28 
     | 
    
         
             
                      else
         
     | 
| 
       29 
     | 
    
         
            -
                         
     | 
| 
       30 
     | 
    
         
            -
                          config_with_asker
         
     | 
| 
       31 
     | 
    
         
            -
                        else
         
     | 
| 
       32 
     | 
    
         
            -
                          config_with_url(@bin_url)
         
     | 
| 
       33 
     | 
    
         
            -
                        end
         
     | 
| 
      
 29 
     | 
    
         
            +
                        config_with_url(@bin_url)
         
     | 
| 
       34 
30 
     | 
    
         
             
                      end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
31 
     | 
    
         
             
                    end
         
     | 
| 
       37 
32 
     | 
    
         | 
| 
       38 
33 
     | 
    
         
             
                    private
         
     | 
| 
       39 
34 
     | 
    
         | 
| 
      
 35 
     | 
    
         
            +
                    # 从远端下载配置文件
         
     | 
| 
       40 
36 
     | 
    
         
             
                    def config_with_url(url)
         
     | 
| 
       41 
37 
     | 
    
         
             
                      require 'open-uri'
         
     | 
| 
       42 
38 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                      UI.puts " 
     | 
| 
      
 39 
     | 
    
         
            +
                      UI.puts "开始下载配置文件..."
         
     | 
| 
       44 
40 
     | 
    
         
             
                      file = open(url)
         
     | 
| 
       45 
41 
     | 
    
         
             
                      contents = YAML.safe_load(file.read)
         
     | 
| 
       46 
42 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                      UI.puts " 
     | 
| 
      
 43 
     | 
    
         
            +
                      UI.puts "开始同步配置文件..."
         
     | 
| 
       48 
44 
     | 
    
         
             
                      CBin.config.sync_config(contents.to_hash)
         
     | 
| 
       49 
     | 
    
         
            -
                      UI.puts " 
     | 
| 
      
 45 
     | 
    
         
            +
                      UI.puts "设置完成.".green
         
     | 
| 
       50 
46 
     | 
    
         
             
                    rescue Errno::ENOENT => e
         
     | 
| 
       51 
47 
     | 
    
         
             
                      raise Informative, "配置文件路径 #{url} 无效,请确认后重试."
         
     | 
| 
       52 
48 
     | 
    
         
             
                    end
         
     | 
| 
       53 
49 
     | 
    
         | 
| 
      
 50 
     | 
    
         
            +
                    # 询问用户相关的配置
         
     | 
| 
       54 
51 
     | 
    
         
             
                    def config_with_asker
         
     | 
| 
       55 
52 
     | 
    
         
             
                      asker = CBin::Config::Asker.new
         
     | 
| 
       56 
     | 
    
         
            -
                      asker. 
     | 
| 
      
 53 
     | 
    
         
            +
                      asker.welcome_message
         
     | 
| 
       57 
54 
     | 
    
         | 
| 
       58 
55 
     | 
    
         
             
                      config = {}
         
     | 
| 
       59 
56 
     | 
    
         
             
                      template_hash = CBin.config.template_hash
         
     | 
| 
         @@ -69,25 +66,6 @@ module Pod 
     | 
|
| 
       69 
66 
     | 
    
         
             
                      CBin.config.sync_config(config)
         
     | 
| 
       70 
67 
     | 
    
         
             
                      asker.done_message
         
     | 
| 
       71 
68 
     | 
    
         
             
                    end
         
     | 
| 
       72 
     | 
    
         
            -
                    def update_code_repo_url_list
         
     | 
| 
       73 
     | 
    
         
            -
                      asker = CBin::Config::Asker.new
         
     | 
| 
       74 
     | 
    
         
            -
                      config = {}
         
     | 
| 
       75 
     | 
    
         
            -
                      template_hash = CBin.config.template_hash
         
     | 
| 
       76 
     | 
    
         
            -
                      template_hash.each do |k, v|
         
     | 
| 
       77 
     | 
    
         
            -
                        if k == "code_repo_url_list"
         
     | 
| 
       78 
     | 
    
         
            -
                          default = begin
         
     | 
| 
       79 
     | 
    
         
            -
                                      CBin.config.send(k)
         
     | 
| 
       80 
     | 
    
         
            -
                                    rescue StandardError
         
     | 
| 
       81 
     | 
    
         
            -
                                      nil
         
     | 
| 
       82 
     | 
    
         
            -
                                    end
         
     | 
| 
       83 
     | 
    
         
            -
                          config[k] = asker.ask_with_answer(v[:description], default, v[:selection])
         
     | 
| 
       84 
     | 
    
         
            -
                        else
         
     | 
| 
       85 
     | 
    
         
            -
                          config[k] =  CBin.config.config_old[k]
         
     | 
| 
       86 
     | 
    
         
            -
                        end
         
     | 
| 
       87 
     | 
    
         
            -
                      end
         
     | 
| 
       88 
     | 
    
         
            -
                      CBin.config.sync_config_code_repo_url_list(config)
         
     | 
| 
       89 
     | 
    
         
            -
                      asker.done_message_update
         
     | 
| 
       90 
     | 
    
         
            -
                    end
         
     | 
| 
       91 
69 
     | 
    
         
             
                  end
         
     | 
| 
       92 
70 
     | 
    
         
             
                end
         
     | 
| 
       93 
71 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,82 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            module Pod
         
     | 
| 
      
 3 
     | 
    
         
            +
              class Command
         
     | 
| 
      
 4 
     | 
    
         
            +
                class Bin < Command
         
     | 
| 
      
 5 
     | 
    
         
            +
                  class Lock < Bin
         
     | 
| 
      
 6 
     | 
    
         
            +
                    class Dependency < Lock
         
     | 
| 
      
 7 
     | 
    
         
            +
                      include Pod
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                      self.summary = '分析`POD_NAME`依赖的库'
         
     | 
| 
      
 10 
     | 
    
         
            +
                      self.description = <<-DESC
         
     | 
| 
      
 11 
     | 
    
         
            +
            #{self.summary},如果加上`--reverse`,则分析依赖`POD_NAME`的库
         
     | 
| 
      
 12 
     | 
    
         
            +
                      DESC
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                      self.arguments = [
         
     | 
| 
      
 15 
     | 
    
         
            +
                        CLAide::Argument.new('POD_NAME', true)
         
     | 
| 
      
 16 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                      def self.options
         
     | 
| 
      
 19 
     | 
    
         
            +
                        [
         
     | 
| 
      
 20 
     | 
    
         
            +
                          %w[--reverse 分析依赖`POD_NAME`的库]
         
     | 
| 
      
 21 
     | 
    
         
            +
                        ].concat(super).uniq
         
     | 
| 
      
 22 
     | 
    
         
            +
                      end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                      def initialize(argv)
         
     | 
| 
      
 25 
     | 
    
         
            +
                        super
         
     | 
| 
      
 26 
     | 
    
         
            +
                        @pod_name = argv.shift_argument
         
     | 
| 
      
 27 
     | 
    
         
            +
                        @reverse = argv.flag?('reverse', false)
         
     | 
| 
      
 28 
     | 
    
         
            +
                      end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                      def run
         
     | 
| 
      
 31 
     | 
    
         
            +
                        super
         
     | 
| 
      
 32 
     | 
    
         
            +
                        raise Informative, "请输入Pod库名称,如:AFNetworking" if @pod_name.nil?
         
     | 
| 
      
 33 
     | 
    
         
            +
                        if @reverse
         
     | 
| 
      
 34 
     | 
    
         
            +
                          reverse_dependencies
         
     | 
| 
      
 35 
     | 
    
         
            +
                        else
         
     | 
| 
      
 36 
     | 
    
         
            +
                          dependencies
         
     | 
| 
      
 37 
     | 
    
         
            +
                        end
         
     | 
| 
      
 38 
     | 
    
         
            +
                      end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                      def dependencies
         
     | 
| 
      
 41 
     | 
    
         
            +
                        deps = []
         
     | 
| 
      
 42 
     | 
    
         
            +
                        @analyze_result.specifications.map do |spec|
         
     | 
| 
      
 43 
     | 
    
         
            +
                          if spec.name == @pod_name
         
     | 
| 
      
 44 
     | 
    
         
            +
                            deps.concat(spec.all_dependencies)
         
     | 
| 
      
 45 
     | 
    
         
            +
                          end
         
     | 
| 
      
 46 
     | 
    
         
            +
                        end
         
     | 
| 
      
 47 
     | 
    
         
            +
                        deps.uniq!
         
     | 
| 
      
 48 
     | 
    
         
            +
                        UI.puts "\n"
         
     | 
| 
      
 49 
     | 
    
         
            +
                        if deps.empty?
         
     | 
| 
      
 50 
     | 
    
         
            +
                          UI.puts "`#{@pod_name}`无依赖的库".red
         
     | 
| 
      
 51 
     | 
    
         
            +
                        else
         
     | 
| 
      
 52 
     | 
    
         
            +
                          UI.puts "`#{@pod_name}`依赖的库如下:".yellow
         
     | 
| 
      
 53 
     | 
    
         
            +
                          deps.map { |dep| UI.puts "- #{dep}" }
         
     | 
| 
      
 54 
     | 
    
         
            +
                          UI.puts "total #{deps.size} deps".green
         
     | 
| 
      
 55 
     | 
    
         
            +
                        end
         
     | 
| 
      
 56 
     | 
    
         
            +
                      end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                      def reverse_dependencies
         
     | 
| 
      
 59 
     | 
    
         
            +
                        pods = []
         
     | 
| 
      
 60 
     | 
    
         
            +
                        @analyze_result.specifications.map do |spec|
         
     | 
| 
      
 61 
     | 
    
         
            +
                          spec.all_dependencies.map do |dep|
         
     | 
| 
      
 62 
     | 
    
         
            +
                            if dep.name == @pod_name
         
     | 
| 
      
 63 
     | 
    
         
            +
                              pods << spec
         
     | 
| 
      
 64 
     | 
    
         
            +
                              break
         
     | 
| 
      
 65 
     | 
    
         
            +
                            end
         
     | 
| 
      
 66 
     | 
    
         
            +
                          end
         
     | 
| 
      
 67 
     | 
    
         
            +
                        end
         
     | 
| 
      
 68 
     | 
    
         
            +
                        pods.uniq!
         
     | 
| 
      
 69 
     | 
    
         
            +
                        UI.puts "\n"
         
     | 
| 
      
 70 
     | 
    
         
            +
                        if pods.empty?
         
     | 
| 
      
 71 
     | 
    
         
            +
                          UI.puts "没有依赖`#{@pod_name}`的库".red
         
     | 
| 
      
 72 
     | 
    
         
            +
                        else
         
     | 
| 
      
 73 
     | 
    
         
            +
                          UI.puts "依赖`#{@pod_name}`的库如下:".yellow
         
     | 
| 
      
 74 
     | 
    
         
            +
                          pods.map { |dep| UI.puts "- #{dep}" }
         
     | 
| 
      
 75 
     | 
    
         
            +
                          UI.puts "total #{pods.size} pods".green
         
     | 
| 
      
 76 
     | 
    
         
            +
                        end
         
     | 
| 
      
 77 
     | 
    
         
            +
                      end
         
     | 
| 
      
 78 
     | 
    
         
            +
                    end
         
     | 
| 
      
 79 
     | 
    
         
            +
                  end
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,105 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            module Pod
         
     | 
| 
      
 3 
     | 
    
         
            +
              class Command
         
     | 
| 
      
 4 
     | 
    
         
            +
                class Bin < Command
         
     | 
| 
      
 5 
     | 
    
         
            +
                  class Lock < Bin
         
     | 
| 
      
 6 
     | 
    
         
            +
                    class SpecRepo < Lock
         
     | 
| 
      
 7 
     | 
    
         
            +
                      include Pod
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                      self.summary = '分析`podspec`源'
         
     | 
| 
      
 10 
     | 
    
         
            +
                      self.description = <<-DESC
         
     | 
| 
      
 11 
     | 
    
         
            +
            #{self.summary},如果加`POD_NAME`,则分析该`POD_NAME`所属的repo仓库;如果不加,则打印项目中用到的repo仓库及每个仓库下Pod个数
         
     | 
| 
      
 12 
     | 
    
         
            +
                      DESC
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                      self.arguments = [
         
     | 
| 
      
 15 
     | 
    
         
            +
                        CLAide::Argument.new('POD_NAME', false)
         
     | 
| 
      
 16 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                      def initialize(argv)
         
     | 
| 
      
 19 
     | 
    
         
            +
                        super
         
     | 
| 
      
 20 
     | 
    
         
            +
                        @pod_name = argv.shift_argument
         
     | 
| 
      
 21 
     | 
    
         
            +
                      end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                      def run
         
     | 
| 
      
 24 
     | 
    
         
            +
                        super
         
     | 
| 
      
 25 
     | 
    
         
            +
                        if @pod_name.nil?
         
     | 
| 
      
 26 
     | 
    
         
            +
                          spec_repo_summary
         
     | 
| 
      
 27 
     | 
    
         
            +
                        else
         
     | 
| 
      
 28 
     | 
    
         
            +
                          pod_source
         
     | 
| 
      
 29 
     | 
    
         
            +
                        end
         
     | 
| 
      
 30 
     | 
    
         
            +
                      end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                      private
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                      def spec_repos
         
     | 
| 
      
 35 
     | 
    
         
            +
                        raise Informative, "依赖分析失败" if @analyze_result.nil?
         
     | 
| 
      
 36 
     | 
    
         
            +
                        result = Hash.new
         
     | 
| 
      
 37 
     | 
    
         
            +
                        @analyze_result.specs_by_source.map do |source, specs|
         
     | 
| 
      
 38 
     | 
    
         
            +
                          next unless source
         
     | 
| 
      
 39 
     | 
    
         
            +
                          next if specs.empty?
         
     | 
| 
      
 40 
     | 
    
         
            +
                          key = source.url || source.name
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                          # save `trunk` as 'trunk' so that the URL itself can be changed without lockfile churn
         
     | 
| 
      
 43 
     | 
    
         
            +
                          key = Pod::TrunkSource::TRUNK_REPO_NAME if source.name == Pod::TrunkSource::TRUNK_REPO_NAME
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                          value = specs.map { |s| s.root.name }.uniq
         
     | 
| 
      
 46 
     | 
    
         
            +
                          # 合并重复的source源,而不是替换
         
     | 
| 
      
 47 
     | 
    
         
            +
                          if result[key].nil?
         
     | 
| 
      
 48 
     | 
    
         
            +
                            result[key] = YAMLHelper.sorted_array(value)
         
     | 
| 
      
 49 
     | 
    
         
            +
                          else
         
     | 
| 
      
 50 
     | 
    
         
            +
                            result[key] = YAMLHelper.sorted_array(result[key].concat(value))
         
     | 
| 
      
 51 
     | 
    
         
            +
                          end
         
     | 
| 
      
 52 
     | 
    
         
            +
                        end
         
     | 
| 
      
 53 
     | 
    
         
            +
                        result.compact
         
     | 
| 
      
 54 
     | 
    
         
            +
                      end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                      def external_sources
         
     | 
| 
      
 57 
     | 
    
         
            +
                        deps = config.podfile.dependencies.select(&:external?)
         
     | 
| 
      
 58 
     | 
    
         
            +
                        deps = deps.sort { |d, other| d.name <=> other.name }
         
     | 
| 
      
 59 
     | 
    
         
            +
                        sources = {}
         
     | 
| 
      
 60 
     | 
    
         
            +
                        deps.each { |d| sources[d.root_name] = d.external_source }
         
     | 
| 
      
 61 
     | 
    
         
            +
                        sources
         
     | 
| 
      
 62 
     | 
    
         
            +
                      end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                      # 打印所有source及其pods个数
         
     | 
| 
      
 65 
     | 
    
         
            +
                      def spec_repo_summary
         
     | 
| 
      
 66 
     | 
    
         
            +
                        pod_count = 0
         
     | 
| 
      
 67 
     | 
    
         
            +
                        UI.puts "\n"
         
     | 
| 
      
 68 
     | 
    
         
            +
                        spec_repos.map do |source, specs|
         
     | 
| 
      
 69 
     | 
    
         
            +
                          pod_count += specs.size
         
     | 
| 
      
 70 
     | 
    
         
            +
                          UI.puts "#{source}".yellow
         
     | 
| 
      
 71 
     | 
    
         
            +
                          UI.puts "- #{specs.size} pods"
         
     | 
| 
      
 72 
     | 
    
         
            +
                        end
         
     | 
| 
      
 73 
     | 
    
         
            +
                        pod_count += external_sources.keys.size
         
     | 
| 
      
 74 
     | 
    
         
            +
                        UI.puts "External".yellow
         
     | 
| 
      
 75 
     | 
    
         
            +
                        UI.puts "- #{external_sources.keys.size} pods"
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                        UI.puts "\n"
         
     | 
| 
      
 78 
     | 
    
         
            +
                        UI.puts "total #{spec_repos.size + 1} sources, #{pod_count} pods".green
         
     | 
| 
      
 79 
     | 
    
         
            +
                      end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                      # 打印pod所属的source
         
     | 
| 
      
 82 
     | 
    
         
            +
                      def pod_source
         
     | 
| 
      
 83 
     | 
    
         
            +
                        sources = []
         
     | 
| 
      
 84 
     | 
    
         
            +
                        external = false
         
     | 
| 
      
 85 
     | 
    
         
            +
                        spec_repos.map do |source, specs|
         
     | 
| 
      
 86 
     | 
    
         
            +
                          if specs.include?(@pod_name)
         
     | 
| 
      
 87 
     | 
    
         
            +
                            sources << source
         
     | 
| 
      
 88 
     | 
    
         
            +
                          end
         
     | 
| 
      
 89 
     | 
    
         
            +
                        end
         
     | 
| 
      
 90 
     | 
    
         
            +
                        external_sources.map do |pod, ext_source|
         
     | 
| 
      
 91 
     | 
    
         
            +
                          if pod == @pod_name
         
     | 
| 
      
 92 
     | 
    
         
            +
                            external = true
         
     | 
| 
      
 93 
     | 
    
         
            +
                            sources << ext_source
         
     | 
| 
      
 94 
     | 
    
         
            +
                          end
         
     | 
| 
      
 95 
     | 
    
         
            +
                        end
         
     | 
| 
      
 96 
     | 
    
         
            +
                        UI.puts "\n"
         
     | 
| 
      
 97 
     | 
    
         
            +
                        raise Informative, "未找到`#{@pod_name}`所属的source,请检查`#{@pod_name}`是否拼写错误" if sources.empty?
         
     | 
| 
      
 98 
     | 
    
         
            +
                        UI.puts "#{@pod_name}#{external ? ' (External Source)' : ''}".yellow
         
     | 
| 
      
 99 
     | 
    
         
            +
                        sources.map { |source| UI.puts "- #{source}" }
         
     | 
| 
      
 100 
     | 
    
         
            +
                      end
         
     | 
| 
      
 101 
     | 
    
         
            +
                    end
         
     | 
| 
      
 102 
     | 
    
         
            +
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
                end
         
     | 
| 
      
 104 
     | 
    
         
            +
              end
         
     | 
| 
      
 105 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            module Pod
         
     | 
| 
      
 3 
     | 
    
         
            +
              class Command
         
     | 
| 
      
 4 
     | 
    
         
            +
                class Bin < Command
         
     | 
| 
      
 5 
     | 
    
         
            +
                  class Lock < Bin
         
     | 
| 
      
 6 
     | 
    
         
            +
                    class Version < Lock
         
     | 
| 
      
 7 
     | 
    
         
            +
                      include Pod
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                      self.summary = '分析项目中使用的`Pod`库版本'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                      self.arguments = [
         
     | 
| 
      
 12 
     | 
    
         
            +
                        CLAide::Argument.new('POD_NAME', true)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                      def initialize(argv)
         
     | 
| 
      
 16 
     | 
    
         
            +
                        super
         
     | 
| 
      
 17 
     | 
    
         
            +
                        @pod_name = argv.shift_argument
         
     | 
| 
      
 18 
     | 
    
         
            +
                      end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                      def run
         
     | 
| 
      
 21 
     | 
    
         
            +
                        super
         
     | 
| 
      
 22 
     | 
    
         
            +
                        raise Informative, "请输入Pod库名称,如:AFNetworking" if @pod_name.nil?
         
     | 
| 
      
 23 
     | 
    
         
            +
                        versions = []
         
     | 
| 
      
 24 
     | 
    
         
            +
                        @analyze_result.specifications.map do |spec|
         
     | 
| 
      
 25 
     | 
    
         
            +
                          if spec.name == @pod_name
         
     | 
| 
      
 26 
     | 
    
         
            +
                            versions << spec.version
         
     | 
| 
      
 27 
     | 
    
         
            +
                          end
         
     | 
| 
      
 28 
     | 
    
         
            +
                        end
         
     | 
| 
      
 29 
     | 
    
         
            +
                        versions = versions.uniq
         
     | 
| 
      
 30 
     | 
    
         
            +
                        UI.puts "\n"
         
     | 
| 
      
 31 
     | 
    
         
            +
                        raise Informative, "未查找到`#{@pod_name}`的版本号,请检查`#{@pod_name}`是否拼写错误" if versions.empty?
         
     | 
| 
      
 32 
     | 
    
         
            +
                        UI.puts "`#{@pod_name}`版本如下:".yellow
         
     | 
| 
      
 33 
     | 
    
         
            +
                        versions.map { |v| UI.puts "- #{v}" }
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                        UI.puts "[!] `#{@pod_name}`有`#{versions.size}`个版本,可能会导致意想不到的事情,请确保每个Pod库只有一个依赖版本".yellow if versions.size > 1
         
     | 
| 
      
 36 
     | 
    
         
            +
                      end
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cocoapods-mtxx-bin/command/bin/lock/spec_repo'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'cocoapods-mtxx-bin/command/bin/lock/version'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'cocoapods-mtxx-bin/command/bin/lock/dependency'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module Pod
         
     | 
| 
      
 6 
     | 
    
         
            +
              class Command
         
     | 
| 
      
 7 
     | 
    
         
            +
                class Bin < Command
         
     | 
| 
      
 8 
     | 
    
         
            +
                  class Lock < Bin
         
     | 
| 
      
 9 
     | 
    
         
            +
                    include Pod
         
     | 
| 
      
 10 
     | 
    
         
            +
                    include Config::Mixin
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    self.abstract_command = true
         
     | 
| 
      
 13 
     | 
    
         
            +
                    self.summary = '分析 Pod 依赖关系'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    def initialize(argv)
         
     | 
| 
      
 16 
     | 
    
         
            +
                      super
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    def run
         
     | 
| 
      
 20 
     | 
    
         
            +
                      # 校验Podfile是否存在
         
     | 
| 
      
 21 
     | 
    
         
            +
                      verify_podfile_exists!
         
     | 
| 
      
 22 
     | 
    
         
            +
                      # 依赖分析
         
     | 
| 
      
 23 
     | 
    
         
            +
                      @analyze_result = analyze
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                    # 依赖分析
         
     | 
| 
      
 27 
     | 
    
         
            +
                    def analyze
         
     | 
| 
      
 28 
     | 
    
         
            +
                      UI.title 'Analyze dependencies'.green do
         
     | 
| 
      
 29 
     | 
    
         
            +
                        analyzer = Pod::Installer::Analyzer.new(config.sandbox, config.podfile, config.lockfile)
         
     | 
| 
      
 30 
     | 
    
         
            +
                        analyzer.analyze(true )
         
     | 
| 
      
 31 
     | 
    
         
            +
                      end
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -46,25 +46,32 @@ module Pod 
     | 
|
| 
       46 
46 
     | 
    
         
             
                      all_source_list = []
         
     | 
| 
       47 
47 
     | 
    
         
             
                      error_source_list = []
         
     | 
| 
       48 
48 
     | 
    
         
             
                      @analyze_result.specifications.each do |specification|
         
     | 
| 
       49 
     | 
    
         
            -
                         
     | 
| 
       50 
     | 
    
         
            -
                         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                          error_source_list << specification.name + '  ' + specification.source[:git] + + '  ' + specification.source[:tag]
         
     | 
| 
      
 49 
     | 
    
         
            +
                        all_source_list << {specification.root.name => specification.root.source}
         
     | 
| 
      
 50 
     | 
    
         
            +
                        if @error_source && invalid_git_address?(specification)
         
     | 
| 
      
 51 
     | 
    
         
            +
                          error_source_list << {specification.root.name => specification.root.source}
         
     | 
| 
       53 
52 
     | 
    
         
             
                        end
         
     | 
| 
       54 
53 
     | 
    
         
             
                      end
         
     | 
| 
       55 
54 
     | 
    
         
             
                      if @error_source
         
     | 
| 
       56 
     | 
    
         
            -
                         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
                        if error_source_list.uniq.empty?
         
     | 
| 
      
 56 
     | 
    
         
            +
                          UI.info "没有有问题的组件".green
         
     | 
| 
      
 57 
     | 
    
         
            +
                        else
         
     | 
| 
      
 58 
     | 
    
         
            +
                          UI.info '问题组件,source 为http CI打包不支持http认证,应修改为ssh'.red
         
     | 
| 
      
 59 
     | 
    
         
            +
                          error_source_list.uniq.map do |source|
         
     | 
| 
      
 60 
     | 
    
         
            +
                            UI.info "- #{source}".red
         
     | 
| 
      
 61 
     | 
    
         
            +
                          end
         
     | 
| 
      
 62 
     | 
    
         
            +
                        end
         
     | 
| 
       58 
63 
     | 
    
         
             
                      else
         
     | 
| 
       59 
     | 
    
         
            -
                        UI.info '输出所有pod组件source'. 
     | 
| 
       60 
     | 
    
         
            -
                         
     | 
| 
      
 64 
     | 
    
         
            +
                        UI.info '输出所有pod组件source'.yellow
         
     | 
| 
      
 65 
     | 
    
         
            +
                        all_source_list.uniq.map do |source|
         
     | 
| 
      
 66 
     | 
    
         
            +
                          UI.info "- #{source}"
         
     | 
| 
      
 67 
     | 
    
         
            +
                        end
         
     | 
| 
       61 
68 
     | 
    
         
             
                      end
         
     | 
| 
       62 
69 
     | 
    
         
             
                    end
         
     | 
| 
       63 
70 
     | 
    
         | 
| 
       64 
71 
     | 
    
         
             
                    # git clone 地址 是否非法
         
     | 
| 
       65 
     | 
    
         
            -
                    def  
     | 
| 
       66 
     | 
    
         
            -
                      return false if specification.source[:git].nil?
         
     | 
| 
       67 
     | 
    
         
            -
                      git = specification.source[:git]
         
     | 
| 
      
 72 
     | 
    
         
            +
                    def invalid_git_address?(specification)
         
     | 
| 
      
 73 
     | 
    
         
            +
                      return false if specification.root.source[:git].nil?
         
     | 
| 
      
 74 
     | 
    
         
            +
                      git = specification.root.source[:git]
         
     | 
| 
       68 
75 
     | 
    
         
             
                      git.include?('http://techgit.meitu.com') || git.include?('https://techgit.meitu.com')
         
     | 
| 
       69 
76 
     | 
    
         
             
                    end
         
     | 
| 
       70 
77 
     | 
    
         | 
| 
         @@ -39,7 +39,7 @@ pod bin upload Pod1 1.0.0 Pod1.framework mtxxspecs --spec=Pod1.podspec 
     | 
|
| 
       39 
39 
     | 
    
         
             
                      @file = argv.shift_argument
         
     | 
| 
       40 
40 
     | 
    
         
             
                      @repo = argv.shift_argument
         
     | 
| 
       41 
41 
     | 
    
         
             
                      @spec = argv.option('spec', nil)
         
     | 
| 
       42 
     | 
    
         
            -
                      @xcode_version = BinHelper.xcode_version
         
     | 
| 
      
 42 
     | 
    
         
            +
                      @xcode_version = CBin::BuildAll::BinHelper.xcode_version
         
     | 
| 
       43 
43 
     | 
    
         
             
                      super
         
     | 
| 
       44 
44 
     | 
    
         
             
                    end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
         @@ -128,7 +128,7 @@ pod bin upload Pod1 1.0.0 Pod1.framework mtxxspecs --spec=Pod1.podspec 
     | 
|
| 
       128 
128 
     | 
    
         | 
| 
       129 
129 
     | 
    
         
             
                    def source
         
     | 
| 
       130 
130 
     | 
    
         
             
                      url = "#{CBin.config.binary_download_url_str}/#{@xcode_version}/#{@name}/#{@version}/#{zip_file_name}"
         
     | 
| 
       131 
     | 
    
         
            -
                      { http: url, type:  
     | 
| 
      
 131 
     | 
    
         
            +
                      { http: url, type: CBin.config.download_file_type }
         
     | 
| 
       132 
132 
     | 
    
         
             
                    end
         
     | 
| 
       133 
133 
     | 
    
         | 
| 
       134 
134 
     | 
    
         
             
                    # 上传podspec
         
     | 
| 
         @@ -1,18 +1,17 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # require 'cocoapods-mtxx-bin/command/bin/initHotKey'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'cocoapods-mtxx-bin/command/bin/init'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'cocoapods-mtxx-bin/command/bin/archive'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'cocoapods-mtxx-bin/command/bin/auto'
         
     | 
| 
      
 2 
     | 
    
         
            +
            # require 'cocoapods-mtxx-bin/command/bin/archive'
         
     | 
| 
      
 3 
     | 
    
         
            +
            # require 'cocoapods-mtxx-bin/command/bin/auto'
         
     | 
| 
       5 
4 
     | 
    
         
             
            # require 'cocoapods-mtxx-bin/command/bin/code'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'cocoapods-mtxx-bin/command/bin/update'
         
     | 
| 
       7 
     | 
    
         
            -
            require 'cocoapods-mtxx-bin/command/bin/install'
         
     | 
| 
       8 
     | 
    
         
            -
            # require 'cocoapods-mtxx-bin/command/bin/imy'
         
     | 
| 
      
 5 
     | 
    
         
            +
            # require 'cocoapods-mtxx-bin/command/bin/update'
         
     | 
| 
      
 6 
     | 
    
         
            +
            # require 'cocoapods-mtxx-bin/command/bin/install'
         
     | 
| 
       9 
7 
     | 
    
         
             
            require 'cocoapods-mtxx-bin/command/bin/repo'
         
     | 
| 
       10 
8 
     | 
    
         
             
            require 'cocoapods-mtxx-bin/command/bin/spec'
         
     | 
| 
       11 
9 
     | 
    
         
             
            require 'cocoapods-mtxx-bin/command/bin/buildAll'
         
     | 
| 
       12 
10 
     | 
    
         
             
            require 'cocoapods-mtxx-bin/command/bin/outputSource'
         
     | 
| 
       13 
11 
     | 
    
         
             
            require 'cocoapods-mtxx-bin/command/bin/upload'
         
     | 
| 
      
 12 
     | 
    
         
            +
            require 'cocoapods-mtxx-bin/command/bin/lock'
         
     | 
| 
       14 
13 
     | 
    
         
             
            require 'cocoapods-mtxx-bin/helpers'
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
            require 'cocoapods-mtxx-bin/helpers/framework_builder'
         
     | 
| 
       16 
15 
     | 
    
         | 
| 
       17 
16 
     | 
    
         
             
            module Pod
         
     | 
| 
       18 
17 
     | 
    
         
             
              class Command
         
     | 
| 
         @@ -41,11 +40,11 @@ module Pod 
     | 
|
| 
       41 
40 
     | 
    
         | 
| 
       42 
41 
     | 
    
         
             
                  # self.default_subcommand = 'open'
         
     | 
| 
       43 
42 
     | 
    
         
             
                  self.summary = '组件二进制化插件'
         
     | 
| 
       44 
     | 
    
         
            -
                  self.description = <<-DESC.strip_heredoc
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  DESC
         
     | 
| 
      
 43 
     | 
    
         
            +
                  # self.description = <<-DESC.strip_heredoc
         
     | 
| 
      
 44 
     | 
    
         
            +
                  #   组件二进制化插件
         
     | 
| 
      
 45 
     | 
    
         
            +
                  #
         
     | 
| 
      
 46 
     | 
    
         
            +
                  #   利用源码私有源与二进制私有源实现对组件依赖类型的切换
         
     | 
| 
      
 47 
     | 
    
         
            +
                  # DESC
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
       50 
49 
     | 
    
         
             
                  def initialize(argv)
         
     | 
| 
       51 
50 
     | 
    
         
             
                    # !!! 下面这个require必须放在这里,不能放到文件顶部,切记 !!!
         
     |