cocoapods-jxedt 0.0.18 → 0.0.20
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-jxedt/binary/Intergation.rb +9 -6
 - data/lib/cocoapods-jxedt/binary/helper/podfile_options.rb +2 -2
 - data/lib/cocoapods-jxedt/binary/helper/prebuild_installer.rb +35 -14
 - data/lib/cocoapods-jxedt/binary/helper/target_definition.rb +15 -9
 - data/lib/cocoapods-jxedt/binary/prebuild.rb +9 -9
 - data/lib/cocoapods-jxedt/command/binary/command/source_project.rb +2 -0
 - data/lib/cocoapods-jxedt/command/jxedt.rb +1 -0
 - data/lib/cocoapods-jxedt/command/modify/modify.rb +63 -0
 - data/lib/cocoapods-jxedt/command/options/options.rb +24 -0
 - data/lib/cocoapods-jxedt/gem_version.rb +1 -1
 - metadata +3 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: abe43eae6c807ddde37ea7b81207987ba97882ffb07f19b6331d6e4ee3f0252a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4de675f594a49c74c3c6542c4c39025cad621aefd62110f155b6da3634520137
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 5fe8e4a1d9f7f49bc3171c97372a60f540180124468b81e34dfd055aff059d4fed9d865c4b0a0a7298ea638d77d9876e709246fef564b94e03fb707a3ba23ee7
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5a2aad13e0ac630865c88ef177048fbca2ef7b5cf88cc783c4cf8d502ca01faddf7e1f9fb6fa1c2b5db1c339124cf3bafeea3425074cfe1789eb29e714d8229e
         
     | 
| 
         @@ -18,8 +18,8 @@ module Pod 
     | 
|
| 
       18 
18 
     | 
    
         
             
                    class PodSourceInstaller
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                        def install_for_prebuild!(standard_sanbox)
         
     | 
| 
       21 
     | 
    
         
            -
                             
     | 
| 
       22 
     | 
    
         
            -
                            target_names =  
     | 
| 
      
 21 
     | 
    
         
            +
                            binary_sandbox = Jxedt::BinarySandbox.from_sandbox(standard_sanbox)
         
     | 
| 
      
 22 
     | 
    
         
            +
                            target_names = binary_sandbox.existed_target_names(self.name)
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                            def walk(path, &action)
         
     | 
| 
       25 
25 
     | 
    
         
             
                                return unless path.exist?
         
     | 
| 
         @@ -53,7 +53,7 @@ module Pod 
     | 
|
| 
       53 
53 
     | 
    
         
             
                            target_names.each do |name|
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         
             
                                # symbol link copy all substructure
         
     | 
| 
       56 
     | 
    
         
            -
                                real_file_folder =  
     | 
| 
      
 56 
     | 
    
         
            +
                                real_file_folder = binary_sandbox.framework_folder_path_for_target_name(name)
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
                                # If have only one platform, just place int the root folder of this pod.
         
     | 
| 
       59 
59 
     | 
    
         
             
                                # If have multiple paths, we use a sperated folder to store different
         
     | 
| 
         @@ -132,8 +132,11 @@ module Pod 
     | 
|
| 
       132 
132 
     | 
    
         
             
                                end
         
     | 
| 
       133 
133 
     | 
    
         
             
                            end
         
     | 
| 
       134 
134 
     | 
    
         
             
                        end
         
     | 
| 
      
 135 
     | 
    
         
            +
                        
         
     | 
| 
      
 136 
     | 
    
         
            +
                        # 设置使用二进制的targets标识
         
     | 
| 
      
 137 
     | 
    
         
            +
                        prebuilt_pod_targets.each { |target| target.use_binary = true }
         
     | 
| 
       135 
138 
     | 
    
         | 
| 
       136 
     | 
    
         
            -
                         
     | 
| 
      
 139 
     | 
    
         
            +
                        binary_sandbox = Jxedt::BinarySandbox.from_sandbox(self.sandbox)
         
     | 
| 
       137 
140 
     | 
    
         | 
| 
       138 
141 
     | 
    
         
             
                        specs = self.analysis_result.specifications
         
     | 
| 
       139 
142 
     | 
    
         
             
                        prebuilt_specs = (specs.select do |spec|
         
     | 
| 
         @@ -175,7 +178,7 @@ module Pod 
     | 
|
| 
       175 
178 
     | 
    
         
             
                                resources = [resources] if resources.kind_of?(String)
         
     | 
| 
       176 
179 
     | 
    
         
             
                                spec.attributes_hash["resources"] = resources
         
     | 
| 
       177 
180 
     | 
    
         
             
                                # spec.attributes_hash["resources"] += bundle_names.map{|n| n+".bundle"}
         
     | 
| 
       178 
     | 
    
         
            -
                                prebuild_bundles =  
     | 
| 
      
 181 
     | 
    
         
            +
                                prebuild_bundles = binary_sandbox.prebuild_bundles(spec.root.name).each.map { |bundle_path| "_Prebuild/" + bundle_path }
         
     | 
| 
       179 
182 
     | 
    
         
             
                                prebuild_bundles = [] if checked_specs[spec.root.name].size > 1 # spec.root.name相同的只添加一次bundle文件
         
     | 
| 
       180 
183 
     | 
    
         
             
                                spec.attributes_hash["resources"] += prebuild_bundles
         
     | 
| 
       181 
184 
     | 
    
         
             
                            end
         
     | 
| 
         @@ -186,7 +189,7 @@ module Pod 
     | 
|
| 
       186 
189 
     | 
    
         
             
                            targets.each do |target|
         
     | 
| 
       187 
190 
     | 
    
         
             
                                # the framework_file_path rule is decided when `install_for_prebuild`,
         
     | 
| 
       188 
191 
     | 
    
         
             
                                # as to compitable with older version and be less wordy.
         
     | 
| 
       189 
     | 
    
         
            -
                                 
     | 
| 
      
 192 
     | 
    
         
            +
                                binary_sandbox.prebuild_vendored_frameworks(spec.root.name).each do |frame_file_path|
         
     | 
| 
       190 
193 
     | 
    
         
             
                                    framework_file_path = "_Prebuild/" + frame_file_path
         
     | 
| 
       191 
194 
     | 
    
         
             
                                    framework_file_path = nil if checked_specs[spec.root.name].size > 1 # spec.root.name相同的只添加一次framework文件
         
     | 
| 
       192 
195 
     | 
    
         
             
                                    add_vendered_framework(spec, target.platform.name.to_s, framework_file_path)
         
     | 
| 
         @@ -52,8 +52,8 @@ module Pod 
     | 
|
| 
       52 
52 
     | 
    
         
             
                      }.uniq
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                      available_pod_names = []
         
     | 
| 
       55 
     | 
    
         
            -
                       
     | 
| 
       56 
     | 
    
         
            -
                      available_pod_names =  
     | 
| 
      
 55 
     | 
    
         
            +
                      binary_sandbox = Jxedt::BinarySandbox.from_sandbox(self.sandbox)
         
     | 
| 
      
 56 
     | 
    
         
            +
                      available_pod_names = binary_sandbox.target_paths.map {|path| path.basename.to_s }
         
     | 
| 
       57 
57 
     | 
    
         
             
                      if Jxedt.config.all_binary_enabled?
         
     | 
| 
       58 
58 
     | 
    
         
             
                        explicit_prebuild_pod_names = available_pod_names
         
     | 
| 
       59 
59 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -12,26 +12,40 @@ module Pod 
     | 
|
| 
       12 
12 
     | 
    
         
             
                        return unless Jxedt.config.create_index_project?
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
                        Pod::UI.puts "-----------------------------------------"
         
     | 
| 
       15 
     | 
    
         
            -
                        Pod::UI.puts "🚖   
     | 
| 
      
 15 
     | 
    
         
            +
                        Pod::UI.puts "🚖  正在生成Pods-Index.xcodeproj,可以直接把工程拖入workspace来查看源码或进行二进制调试"
         
     | 
| 
       16 
16 
     | 
    
         
             
                        Pod::UI.puts "-----------------------------------------"
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                        # 生成index project开始标识
         
     | 
| 
       19 
19 
     | 
    
         
             
                        sandbox.index_project_create_stage = true
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                        #  
     | 
| 
      
 21 
     | 
    
         
            +
                        # 获取缓存
         
     | 
| 
       22 
22 
     | 
    
         
             
                        cache_analysis_result = analyze_project_cache
         
     | 
| 
       23 
     | 
    
         
            -
                        # 获取缓存中需要生成的pod_targets
         
     | 
| 
       24 
     | 
    
         
            -
                        pod_targets_to_generate = cache_analysis_result.pod_targets_to_generate. 
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                         
     | 
| 
      
 23 
     | 
    
         
            +
                        # 获取缓存中需要生成的pod_targets,并拷贝一份新的,不修改原来的值
         
     | 
| 
      
 24 
     | 
    
         
            +
                        pod_targets_to_generate = cache_analysis_result.pod_targets_to_generate.map do |target|
         
     | 
| 
      
 25 
     | 
    
         
            +
                          target_to_copy = target.clone
         
     | 
| 
      
 26 
     | 
    
         
            +
                          target_to_copy.binary_index_enabled = true # 修改标识,用于修改Target的productName
         
     | 
| 
      
 27 
     | 
    
         
            +
                          target_to_copy
         
     | 
| 
      
 28 
     | 
    
         
            +
                        end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                        # 调用生成project的方法,aggregate_targets传空数组
         
     | 
| 
       29 
31 
     | 
    
         
             
                        create_and_save_projects(pod_targets_to_generate, [],
         
     | 
| 
       30 
32 
     | 
    
         
             
                                                 cache_analysis_result.build_configurations, cache_analysis_result.project_object_version)
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
34 
     | 
    
         
             
                        # 恢复sandbox标识
         
     | 
| 
       33 
35 
     | 
    
         
             
                        sandbox.index_project_create_stage = false
         
     | 
| 
       34 
36 
     | 
    
         
             
                    end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                    def resolve_dependencies
         
     | 
| 
      
 39 
     | 
    
         
            +
                      analyzer = super
         
     | 
| 
      
 40 
     | 
    
         
            +
                      self.analysis_result.specifications.each do |spec|
         
     | 
| 
      
 41 
     | 
    
         
            +
                        # keep all file in pods
         
     | 
| 
      
 42 
     | 
    
         
            +
                        preserve_paths = spec.attributes_hash["preserve_paths"] || []
         
     | 
| 
      
 43 
     | 
    
         
            +
                        preserve_paths = [preserve_paths] if preserve_paths.kind_of?(String)
         
     | 
| 
      
 44 
     | 
    
         
            +
                        preserve_paths += ['_Prebuild']
         
     | 
| 
      
 45 
     | 
    
         
            +
                        spec.attributes_hash["preserve_paths"] = preserve_paths
         
     | 
| 
      
 46 
     | 
    
         
            +
                      end
         
     | 
| 
      
 47 
     | 
    
         
            +
                      analyzer
         
     | 
| 
      
 48 
     | 
    
         
            +
                    end
         
     | 
| 
       35 
49 
     | 
    
         
             
                end
         
     | 
| 
       36 
50 
     | 
    
         
             
            end
         
     | 
| 
       37 
51 
     | 
    
         | 
| 
         @@ -55,12 +69,19 @@ module Pod 
     | 
|
| 
       55 
69 
     | 
    
         
             
                class PodTarget < Target
         
     | 
| 
       56 
70 
     | 
    
         
             
                  attr_accessor :binary_index_enabled
         
     | 
| 
       57 
71 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
                  #  
     | 
| 
       59 
     | 
    
         
            -
                   
     | 
| 
       60 
     | 
    
         
            -
                   
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
      
 72 
     | 
    
         
            +
                  # Target的PRODUCT_NAME写入逻辑可以查看`PodTargetInstaller`
         
     | 
| 
      
 73 
     | 
    
         
            +
                  # settings['PRODUCT_NAME'] = target.product_basename
         
     | 
| 
      
 74 
     | 
    
         
            +
                  # settings['PRODUCT_MODULE_NAME'] = target.product_module_name
         
     | 
| 
      
 75 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 76 
     | 
    
         
            +
                  # 所以插件采用的方式是修改`product_basename`来改变Pods-Index.xcodeproj的名称
         
     | 
| 
      
 77 
     | 
    
         
            +
                  #
         
     | 
| 
      
 78 
     | 
    
         
            +
                  alias_method :old_product_basename, :product_basename
         
     | 
| 
      
 79 
     | 
    
         
            +
                  def product_basename
         
     | 
| 
      
 80 
     | 
    
         
            +
                    if binary_index_enabled
         
     | 
| 
      
 81 
     | 
    
         
            +
                      # 在后面添加'_Source'改变PRODUCT_NAME
         
     | 
| 
      
 82 
     | 
    
         
            +
                      return "#{old_product_basename}_Source"
         
     | 
| 
      
 83 
     | 
    
         
            +
                    end
         
     | 
| 
      
 84 
     | 
    
         
            +
                    old_product_basename
         
     | 
| 
       64 
85 
     | 
    
         
             
                  end
         
     | 
| 
       65 
86 
     | 
    
         
             
                end
         
     | 
| 
       66 
87 
     | 
    
         
             
            end
         
     | 
| 
         @@ -10,21 +10,16 @@ module Pod 
     | 
|
| 
       10 
10 
     | 
    
         
             
                      if options.is_a?(Hash) && options.include?(:binary)
         
     | 
| 
       11 
11 
     | 
    
         
             
                        @explicit_prebuild_pod_names << Specification.root_name(name) if options[:binary]
         
     | 
| 
       12 
12 
     | 
    
         
             
                        @reject_prebuild_pod_names << Specification.root_name(name) unless options[:binary]
         
     | 
| 
       13 
     | 
    
         
            -
                      else
         
     | 
| 
       14 
     | 
    
         
            -
                        settings = Jxedt.config.binary_settings
         
     | 
| 
       15 
     | 
    
         
            -
                        symbol_name = Specification.root_name(name).to_sym
         
     | 
| 
       16 
     | 
    
         
            -
                        if settings.include?(symbol_name) && [true, false].include?(settings[symbol_name])
         
     | 
| 
       17 
     | 
    
         
            -
                          @explicit_prebuild_pod_names << Specification.root_name(name) if settings[symbol_name]
         
     | 
| 
       18 
     | 
    
         
            -
                          @reject_prebuild_pod_names << Specification.root_name(name) unless settings[symbol_name]
         
     | 
| 
       19 
     | 
    
         
            -
                        end
         
     | 
| 
       20 
13 
     | 
    
         
             
                      end
         
     | 
| 
       21 
14 
     | 
    
         | 
| 
       22 
15 
     | 
    
         | 
| 
       23 
16 
     | 
    
         
             
                      # header search path
         
     | 
| 
       24 
17 
     | 
    
         
             
                      @explicit_header_search_pod_names ||= []
         
     | 
| 
       25 
18 
     | 
    
         
             
                      @reject_header_search_pod_names ||= []
         
     | 
| 
       26 
     | 
    
         
            -
                       
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
                      if options.is_a?(Hash) && options.include?(:framework_header_search)
         
     | 
| 
      
 20 
     | 
    
         
            +
                        @explicit_header_search_pod_names << Specification.root_name(name) if options[:framework_header_search]
         
     | 
| 
      
 21 
     | 
    
         
            +
                        @reject_header_search_pod_names << Specification.root_name(name) unless options[:framework_header_search]
         
     | 
| 
      
 22 
     | 
    
         
            +
                      end
         
     | 
| 
       28 
23 
     | 
    
         | 
| 
       29 
24 
     | 
    
         
             
                      options.delete(:binary) if options.is_a?(Hash)
         
     | 
| 
       30 
25 
     | 
    
         
             
                      options.delete(:framework_header_search) if options.is_a?(Hash)
         
     | 
| 
         @@ -37,6 +32,17 @@ module Pod 
     | 
|
| 
       37 
32 
     | 
    
         
             
                    original_parse_inhibit_warnings = instance_method(:parse_inhibit_warnings)
         
     | 
| 
       38 
33 
     | 
    
         
             
                    define_method(:parse_inhibit_warnings) do |name, requirements|
         
     | 
| 
       39 
34 
     | 
    
         
             
                      detect_prebuilt_pod(name, requirements)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                      # merge binary settings
         
     | 
| 
      
 37 
     | 
    
         
            +
                      Jxedt.config.binary_settings.each { |name, val| 
         
     | 
| 
      
 38 
     | 
    
         
            +
                        next if @explicit_prebuild_pod_names.include?(name) # 配置:binary的组件优先级高
         
     | 
| 
      
 39 
     | 
    
         
            +
                        next if @reject_prebuild_pod_names.include?(name)
         
     | 
| 
      
 40 
     | 
    
         
            +
                        next unless [true, false].include?(val)
         
     | 
| 
      
 41 
     | 
    
         
            +
                        
         
     | 
| 
      
 42 
     | 
    
         
            +
                        @explicit_prebuild_pod_names << name.to_s if val
         
     | 
| 
      
 43 
     | 
    
         
            +
                        @reject_prebuild_pod_names << name.to_s unless val
         
     | 
| 
      
 44 
     | 
    
         
            +
                      }
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
       40 
46 
     | 
    
         
             
                      original_parse_inhibit_warnings.bind(self).call(name, requirements)
         
     | 
| 
       41 
47 
     | 
    
         
             
                    end
         
     | 
| 
       42 
48 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Jxedt
         
     | 
| 
       2 
     | 
    
         
            -
                class  
     | 
| 
       3 
     | 
    
         
            -
                    attr_accessor : 
     | 
| 
      
 2 
     | 
    
         
            +
                class BinarySandbox
         
     | 
| 
      
 3 
     | 
    
         
            +
                    attr_accessor :standard_sandbox
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
                    def initialize(path=nil)
         
     | 
| 
       6 
6 
     | 
    
         
             
                        @sandbox_path = path
         
     | 
| 
         @@ -9,9 +9,9 @@ module Jxedt 
     | 
|
| 
       9 
9 
     | 
    
         
             
                    def self.from_sandbox(sandbox)
         
     | 
| 
       10 
10 
     | 
    
         
             
                        search_path = Jxedt.config.binary_dir
         
     | 
| 
       11 
11 
     | 
    
         
             
                        binary_dir = search_path.empty? ? nil : sandbox.standard_sandbox_root + search_path
         
     | 
| 
       12 
     | 
    
         
            -
                         
     | 
| 
       13 
     | 
    
         
            -
                         
     | 
| 
       14 
     | 
    
         
            -
                         
     | 
| 
      
 12 
     | 
    
         
            +
                        binary_sandbox = BinarySandbox.new(binary_dir)
         
     | 
| 
      
 13 
     | 
    
         
            +
                        binary_sandbox.standard_sandbox = sandbox
         
     | 
| 
      
 14 
     | 
    
         
            +
                        binary_sandbox
         
     | 
| 
       15 
15 
     | 
    
         
             
                    end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                    def binary_dir
         
     | 
| 
         @@ -21,11 +21,11 @@ module Jxedt 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    def target_paths
         
     | 
| 
       22 
22 
     | 
    
         
             
                        return [] if @sandbox_path.nil?
         
     | 
| 
       23 
23 
     | 
    
         
             
                        return [] unless binary_dir.exist?
         
     | 
| 
       24 
     | 
    
         
            -
                        return [] if @ 
     | 
| 
      
 24 
     | 
    
         
            +
                        return [] if @standard_sandbox.source_lockfile.nil?
         
     | 
| 
       25 
25 
     | 
    
         
             
                        @targets ||= begin
         
     | 
| 
       26 
26 
     | 
    
         
             
                            prebuild_targets = binary_dir.children().map do |target_path|
         
     | 
| 
       27 
27 
     | 
    
         
             
                                if target_path.directory? && (not target_path.children.empty?)
         
     | 
| 
       28 
     | 
    
         
            -
                                    hash_key = @ 
     | 
| 
      
 28 
     | 
    
         
            +
                                    hash_key = @standard_sandbox.source_lockfile.spec_checksums_hash_key(target_path.basename.to_s)
         
     | 
| 
       29 
29 
     | 
    
         
             
                                    next if hash_key.nil?
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
                                    checksum_files = target_path.children().select { |path| path.extname == '.checksum' }
         
     | 
| 
         @@ -126,8 +126,8 @@ module Jxedt 
     | 
|
| 
       126 
126 
     | 
    
         
             
                    end
         
     | 
| 
       127 
127 
     | 
    
         | 
| 
       128 
128 
     | 
    
         
             
                    def build
         
     | 
| 
       129 
     | 
    
         
            -
                         
     | 
| 
       130 
     | 
    
         
            -
                        existed_target_names =  
     | 
| 
      
 129 
     | 
    
         
            +
                        binary_sandbox = Jxedt::BinarySandbox.from_sandbox(@source_installer.sandbox)
         
     | 
| 
      
 130 
     | 
    
         
            +
                        existed_target_names = binary_sandbox.target_paths.map { |pair| pair.basename.to_s }
         
     | 
| 
       131 
131 
     | 
    
         
             
                        targets = targets_to_prebuild.reject { |target| existed_target_names.include?(target.name.to_s) }
         
     | 
| 
       132 
132 
     | 
    
         | 
| 
       133 
133 
     | 
    
         
             
                        Pod::UI.puts "Prebuild total count: #{targets.size}"
         
     | 
| 
         @@ -0,0 +1,63 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Pod
         
     | 
| 
      
 2 
     | 
    
         
            +
                class Command
         
     | 
| 
      
 3 
     | 
    
         
            +
                    class JxedtCommand < Command
         
     | 
| 
      
 4 
     | 
    
         
            +
                        class ModifyDir < JxedtCommand
         
     | 
| 
      
 5 
     | 
    
         
            +
                            self.summary = '修改文件目录的真实路径,并在原位置创建一个目录的软链接,为二进制调试提供便利。'
         
     | 
| 
      
 6 
     | 
    
         
            +
                            self.description = <<-DESC
         
     | 
| 
      
 7 
     | 
    
         
            +
                            可以把很多台机器上的工程目录统一放置到一个相同目录,这样可以确保所有的机器的工程目录都是相同的。\n
         
     | 
| 
      
 8 
     | 
    
         
            +
                            编译打包的文件路径也是相同的,然后就可以使用二进制调试的功能了。\n
         
     | 
| 
      
 9 
     | 
    
         
            +
                            这个统一的目录是`/Users/cocoapods-jxedt/`
         
     | 
| 
      
 10 
     | 
    
         
            +
                            DESC
         
     | 
| 
      
 11 
     | 
    
         
            +
                            self.command = 'modifydir'
         
     | 
| 
      
 12 
     | 
    
         
            +
                            self.arguments = [
         
     | 
| 
      
 13 
     | 
    
         
            +
                                CLAide::Argument.new('DIRECTORY_PATH', true)
         
     | 
| 
      
 14 
     | 
    
         
            +
                            ]
         
     | 
| 
      
 15 
     | 
    
         
            +
                            def self.options
         
     | 
| 
      
 16 
     | 
    
         
            +
                                [
         
     | 
| 
      
 17 
     | 
    
         
            +
                                    ['--name', '统一路径下的工程目录名称']
         
     | 
| 
      
 18 
     | 
    
         
            +
                                ]
         
     | 
| 
      
 19 
     | 
    
         
            +
                            end
         
     | 
| 
      
 20 
     | 
    
         
            +
                            def initialize(argv)
         
     | 
| 
      
 21 
     | 
    
         
            +
                                @dir_path = argv.shift_argument
         
     | 
| 
      
 22 
     | 
    
         
            +
                                @name = argv.option('name')
         
     | 
| 
      
 23 
     | 
    
         
            +
                                super
         
     | 
| 
      
 24 
     | 
    
         
            +
                            end
         
     | 
| 
      
 25 
     | 
    
         
            +
                  
         
     | 
| 
      
 26 
     | 
    
         
            +
                            def validate!
         
     | 
| 
      
 27 
     | 
    
         
            +
                                super
         
     | 
| 
      
 28 
     | 
    
         
            +
                                help! '没有传入操作目录!!!' if @dir_path.nil?
         
     | 
| 
      
 29 
     | 
    
         
            +
                                # 获取完整路径
         
     | 
| 
      
 30 
     | 
    
         
            +
                                @dir_path = File.expand_path(@dir_path)
         
     | 
| 
      
 31 
     | 
    
         
            +
                                help! '操作目录不存在!!!' unless File.exist?(@dir_path)
         
     | 
| 
      
 32 
     | 
    
         
            +
                                help! '传入的地址不是一个目录!!!' unless File.directory?(@dir_path)
         
     | 
| 
      
 33 
     | 
    
         
            +
                                help! '操作目录已经是一个软链接!!!' if File.ftype(@dir_path) == 'link'
         
     | 
| 
      
 34 
     | 
    
         
            +
                                help! '操作目录已经在指定目录下!!!' if @dir_path =~ /^#{user_path}/
         
     | 
| 
      
 35 
     | 
    
         
            +
                                help! '当前目录不允许操作,操作路径最少要3层目录!!!' unless @dir_path.split('/').reject { |path| path.empty? }.count > 2
         
     | 
| 
      
 36 
     | 
    
         
            +
                            end
         
     | 
| 
      
 37 
     | 
    
         
            +
                  
         
     | 
| 
      
 38 
     | 
    
         
            +
                            def run
         
     | 
| 
      
 39 
     | 
    
         
            +
                                op_dir_path = Pathname.new(@dir_path)
         
     | 
| 
      
 40 
     | 
    
         
            +
                                # 获取target name
         
     | 
| 
      
 41 
     | 
    
         
            +
                                @name = op_dir_path.basename if @name.nil? || @name.empty?
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                                # create user directory
         
     | 
| 
      
 44 
     | 
    
         
            +
                                `sudo mkdir #{user_path} && sudo chmod -R 777 #{user_path}` unless user_path.exist?
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                                # 路径是否存在
         
     | 
| 
      
 47 
     | 
    
         
            +
                                target_path = user_path + @name
         
     | 
| 
      
 48 
     | 
    
         
            +
                                # target_path.rmtree if target_path.exist?
         
     | 
| 
      
 49 
     | 
    
         
            +
                                help! '目录已存在!!!' if target_path.exist?
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                                # 移动目录
         
     | 
| 
      
 52 
     | 
    
         
            +
                                FileUtils.mv(@dir_path, target_path)
         
     | 
| 
      
 53 
     | 
    
         
            +
                                # 创建软链接
         
     | 
| 
      
 54 
     | 
    
         
            +
                                FileUtils.ln_s(target_path, op_dir_path)
         
     | 
| 
      
 55 
     | 
    
         
            +
                            end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                            def user_path
         
     | 
| 
      
 58 
     | 
    
         
            +
                                @user_path ||= Pathname.new('/Users/cocoapods-jxedt/')
         
     | 
| 
      
 59 
     | 
    
         
            +
                            end
         
     | 
| 
      
 60 
     | 
    
         
            +
                        end
         
     | 
| 
      
 61 
     | 
    
         
            +
                    end
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -40,6 +40,30 @@ module Pod 
     | 
|
| 
       40 
40 
     | 
    
         
             
                                log_section "🌹 GIT_CACHE_CONFIG"
         
     | 
| 
       41 
41 
     | 
    
         
             
                                git_config = Jxedt::Config::GIT_CACHE_CONFIG
         
     | 
| 
       42 
42 
     | 
    
         
             
                                Pod::UI.puts JSON.pretty_generate(git_config)
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                                log_section "🌹 DSL支持的方法"
         
     | 
| 
      
 45 
     | 
    
         
            +
                                Pod::UI.puts dsl_support_method
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                                log_section "🌹 组件支持的DSL配置"
         
     | 
| 
      
 48 
     | 
    
         
            +
                                Pod::UI.puts arguments_support
         
     | 
| 
      
 49 
     | 
    
         
            +
                            end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                            def dsl_support_method
         
     | 
| 
      
 52 
     | 
    
         
            +
                                dsl_method = <<DSL_METHOD
         
     | 
| 
      
 53 
     | 
    
         
            +
            all_binary!                             组件全部使用二进制
         
     | 
| 
      
 54 
     | 
    
         
            +
            binary_dir('../_Prebuild')              配置二进制的放置路径
         
     | 
| 
      
 55 
     | 
    
         
            +
            binary_switch(true)                     二进制开关
         
     | 
| 
      
 56 
     | 
    
         
            +
            framework_header_search_enabled(true)   开启配置依赖的framework头文件配置
         
     | 
| 
      
 57 
     | 
    
         
            +
            use_binary_settings(Hash)               使用二进制的组件配置
         
     | 
| 
      
 58 
     | 
    
         
            +
            cocoapods_jxedt_config(Hash)            配置插件
         
     | 
| 
      
 59 
     | 
    
         
            +
            DSL_METHOD
         
     | 
| 
      
 60 
     | 
    
         
            +
                            end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                            def arguments_support
         
     | 
| 
      
 63 
     | 
    
         
            +
                                config = <<CONFIG
         
     | 
| 
      
 64 
     | 
    
         
            +
            :binary => true                         组件是否使用二进制
         
     | 
| 
      
 65 
     | 
    
         
            +
            :framework_header_search => true        组件是否需要配置依赖的framework的头文件
         
     | 
| 
      
 66 
     | 
    
         
            +
            CONFIG
         
     | 
| 
       43 
67 
     | 
    
         
             
                            end
         
     | 
| 
       44 
68 
     | 
    
         | 
| 
       45 
69 
     | 
    
         
             
                            def print_base_options_config
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: cocoapods-jxedt
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.20
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - guojiashuang
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2023-08- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-08-31 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: cocoapods
         
     | 
| 
         @@ -100,6 +100,7 @@ files: 
     | 
|
| 
       100 
100 
     | 
    
         
             
            - lib/cocoapods-jxedt/command/binary/command/statistics.rb
         
     | 
| 
       101 
101 
     | 
    
         
             
            - lib/cocoapods-jxedt/command/header/header.rb
         
     | 
| 
       102 
102 
     | 
    
         
             
            - lib/cocoapods-jxedt/command/jxedt.rb
         
     | 
| 
      
 103 
     | 
    
         
            +
            - lib/cocoapods-jxedt/command/modify/modify.rb
         
     | 
| 
       103 
104 
     | 
    
         
             
            - lib/cocoapods-jxedt/command/options/options.rb
         
     | 
| 
       104 
105 
     | 
    
         
             
            - lib/cocoapods-jxedt/command/user/user.rb
         
     | 
| 
       105 
106 
     | 
    
         
             
            - lib/cocoapods-jxedt/gem_version.rb
         
     |