cocoapods-bb-PodAssistant 0.1.9.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32ae7a754051168b335839ef24e3241e10ae8c1ce9772b65ae1add131a591744
4
- data.tar.gz: fabd94ec00e74cd9b40dcbbf176baca21d88e54d640ddaf82b3c085520649807
3
+ metadata.gz: 46f2909212dda4283465cfe1db2a4b2311ed002e97f5c64290129b75a3f96c85
4
+ data.tar.gz: b11851246802d6000005ebbc23cbdf19687de70805896ccae2915963aa8aca49
5
5
  SHA512:
6
- metadata.gz: 3945a8e16d272daa2b8a13e6fa412127bd055b1f85f97b6dbee51c56df0465dce8a8403d913139bb669239e1c7926341e6f8e5a7a60f619b49f614983cb1f387
7
- data.tar.gz: 1d27d7075c0fae3e206182a07b2c061f2d1f67907083ff938084ed34d4bc4d872d19d6a55a1e09abfaaf3879b99ec47ec3fd2c101ff10e1eb617c9598ff23509
6
+ metadata.gz: aa134b6cc558192b7b864c4872592299dc70efd9a1c58786e53048fbd0e6a7967e8d167467353002b700808249c1d390fbcba938b73dc9215ac7b9d45e28d5e2
7
+ data.tar.gz: 3bff44bfca25a276653939eb3575b6872221a8412a3d3b717c9f1acfb3f566a5a65758226c04f992aae1f1dcef60390e39015e4770237457d3aa7282b9d7b650
@@ -91,9 +91,35 @@ def isPinyinAppp
91
91
  return bundleId === "com.sinyee.babybus.voicerecognition" || bundleId === "com.sinyee.babybus.read.ios" || bundleId === "com.sinyee.babybus.stroke"
92
92
  end
93
93
 
94
+ # 是否科学产品
95
+ def isCourseApp
96
+ bundleId = getProjectBundleIdentifier()
97
+ return bundleId === "com.ailiyong.world.course"
98
+ end
99
+
100
+ # 是否思维产品
101
+ def isMathApp
102
+ bundleId = getProjectBundleIdentifier()
103
+ return bundleId === "com.sinyee.babybus.mathIII"
104
+ end
105
+
106
+ # 是否abc产品
107
+ def isABCApp
108
+ bundleId = getProjectBundleIdentifier()
109
+ return bundleId === "com.sinyee.babybus.abc"
110
+ end
111
+
112
+ # 是否城市产品
113
+ def isCityApp
114
+ bundleId = getProjectBundleIdentifier()
115
+ return bundleId === "com.sinyee.babybus.city"
116
+ end
117
+
94
118
  # 是否矩阵产品
95
119
  def isMatrixApp
96
- if (isHanZiApp || isQMWApp || isPinyinAppp) then
120
+ bundleId = getProjectBundleIdentifier()
121
+ puts "###bundleId:#{bundleId}###".red
122
+ if (isHanZiApp || isQMWApp || isPinyinAppp || isCourseApp || isMathApp || isABCApp || isCityApp) then
97
123
  return false
98
124
  end
99
125
  return true
@@ -9,9 +9,8 @@ require 'cocoapods-bb-PodAssistant/helpers/pod_utils'
9
9
  class PodPostInstaller
10
10
  def initialize(lib, deployment_target=nil)
11
11
  @lib = lib
12
- puts "====isUnity3DApp:#{isUnity3DApp}".red
13
12
  if deployment_target.nil?
14
- @deployment_target = isUnity3DApp ? "12.0" : "11.0" # Unity2022引擎最低支持iOS12.0
13
+ @deployment_target = isUnity3DApp ? "12.0" : "11.0" # Unity2022引擎最低支持iOS12.0、unity2d iOS11 、cocos iOS10、超A产品 iOS11 (968广告厂商升级最低支持iOS11)
15
14
  else
16
15
  @deployment_target = deployment_target
17
16
  end
@@ -26,7 +25,7 @@ class PodPostInstaller
26
25
  env.createCocosResource
27
26
  end
28
27
  ios_deployment_target = @deployment_target
29
- puts "当前工程最低支持iOS系统 ===> #{ios_deployment_target.to_s.send(:red)}".green
28
+ puts "pod组件配置工程最低支持iOS系统 ===> #{ios_deployment_target.to_s.send(:red)}".green
30
29
  @lib.aggregate_targets.first.user_project.save # 解决Xcode13 pod update操作出现failed to save pods.xcodeproj问题 by hm 21/11/8
31
30
  project = Xcodeproj::Project.open(BB::PodUtils.getXcodeprojPath)
32
31
  project.targets.each do |target|
@@ -64,51 +63,50 @@ class PodPostInstaller
64
63
  # project.targets.config
65
64
  @lib.pod_target_subprojects.flat_map { |p| p.targets }.each do |target|
66
65
  target.build_configurations.each do |config|
67
- # pod 1.13.0兼容故去除,避免
68
- # 适配xcode 15 动态库报错: Error 'DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead'
69
- # if (is_xcode15 == true) then
70
- # xcconfig_path = config.base_configuration_reference.real_path
71
- # xcconfig = File.read(xcconfig_path)
72
- # xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
73
- # File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
74
- # end
75
-
76
- config.build_settings['DEAD_CODE_STRIPPING'] = 'YES'
77
- config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = ios_deployment_target
78
- if (isUnityProject) then
79
- config.build_settings['ARCHS'] = 'arm64'
80
- else
81
- config.build_settings['ARCHS'] = '$(ARCHS_STANDARD)'
82
- end
83
- # fix xcode14手动签名问题 https://github.com/CocoaPods/CocoaPods/issues/11402
84
- # config.build_settings["DEVELOPMENT_TEAM"] = "#{teamid}"
85
- # Fix Xcode14 bundle need sign
86
- # https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1201464693
87
- if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
88
- config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
89
- end
90
- # 编译器优化
91
- config.build_settings['WARNING_CFLAGS'] = '-Wno-documentation -Wno-nullability-completeness -Wno-macro-redefined -Wno-property-attribute-mismatch -Wno-strict-prototypes -Wno-incompatible-pointer-types'
92
- config.build_settings['ASSETCATALOG_COMPILER_OPTIMIZATION'] = 'space'
93
- config.build_settings['ENABLE_BITCODE'] = 'NO'
94
- config.build_settings['DEAD_CODE_STRIPPING'] = 'YES'
95
- if config.name.include? 'Debug'
96
- config.build_settings['SWIFT_COMPILATION_MODE'] = 'Incremental'
97
- config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-Onone'
98
- config.build_settings['GCC_OPTIMIZATION_LEVEL'] = '0'
99
- else
100
- config.build_settings['SWIFT_COMPILATION_MODE'] = 'wholemodule'
101
- config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-Osize'
102
- config.build_settings['GCC_OPTIMIZATION_LEVEL'] = 'z'
103
- end
104
- # C++支持@import (工程中带mm类需要进行控制)
105
- if (target.name.include? 'matrix-wechat') || (target.name.include? 'Sentry')
106
- # 三方库不支持modulemap
107
- config.build_settings['OTHER_CPLUSPLUSFLAGS'] = "$(inherited) $(OTHER_CFLAGS)"
108
- else
109
- config.build_settings['OTHER_CPLUSPLUSFLAGS'] = "$(inherited) $(OTHER_CFLAGS) -fmodules -fcxx-modules"
110
- end
111
-
66
+ # pod 1.13.0兼容故去除,避免
67
+ # 适配xcode 15 动态库报错: Error 'DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead'
68
+ # if (is_xcode15 == true) then
69
+ # xcconfig_path = config.base_configuration_reference.real_path
70
+ # xcconfig = File.read(xcconfig_path)
71
+ # xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
72
+ # File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
73
+ # end
74
+
75
+ config.build_settings['DEAD_CODE_STRIPPING'] = 'YES'
76
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = ios_deployment_target
77
+ if (isUnityProject) then
78
+ config.build_settings['ARCHS'] = 'arm64'
79
+ else
80
+ config.build_settings['ARCHS'] = '$(ARCHS_STANDARD)'
81
+ end
82
+ # fix xcode14手动签名问题 https://github.com/CocoaPods/CocoaPods/issues/11402
83
+ # config.build_settings["DEVELOPMENT_TEAM"] = "#{teamid}"
84
+ # Fix Xcode14 bundle need sign
85
+ # https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1201464693
86
+ if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
87
+ config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
88
+ end
89
+ # 编译器优化
90
+ config.build_settings['WARNING_CFLAGS'] = '-Wno-documentation -Wno-nullability-completeness -Wno-macro-redefined -Wno-property-attribute-mismatch -Wno-strict-prototypes -Wno-incompatible-pointer-types'
91
+ config.build_settings['ASSETCATALOG_COMPILER_OPTIMIZATION'] = 'space'
92
+ config.build_settings['ENABLE_BITCODE'] = 'NO'
93
+ config.build_settings['DEAD_CODE_STRIPPING'] = 'YES'
94
+ if config.name.include? 'Debug'
95
+ config.build_settings['SWIFT_COMPILATION_MODE'] = 'Incremental'
96
+ config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-Onone'
97
+ config.build_settings['GCC_OPTIMIZATION_LEVEL'] = '0'
98
+ else
99
+ config.build_settings['SWIFT_COMPILATION_MODE'] = 'wholemodule'
100
+ config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-Osize'
101
+ config.build_settings['GCC_OPTIMIZATION_LEVEL'] = 'z'
102
+ end
103
+ # C++支持@import (工程中带mm类需要进行控制)
104
+ if (target.name.include? 'matrix-wechat') || (target.name.include? 'Sentry')
105
+ # 三方库不支持modulemap
106
+ config.build_settings['OTHER_CPLUSPLUSFLAGS'] = "$(inherited) $(OTHER_CFLAGS)"
107
+ else
108
+ config.build_settings['OTHER_CPLUSPLUSFLAGS'] = "$(inherited) $(OTHER_CFLAGS) -fmodules -fcxx-modules"
109
+ end
112
110
  end
113
111
  # 修复警告 Run script build phase '[CP] Copy Pods Resources' will be run during every build because it does not specify any outputs
114
112
  fix_phases = target.shell_script_build_phases.find { |x| x.name == '[CP] Copy XCFrameworks' || 'Create Symlinks to Header Folders' }
@@ -0,0 +1,93 @@
1
+ require 'cocoapods-bb-PodAssistant/config/source_manager'
2
+
3
+ module Pod
4
+ class Command
5
+ class Stable < Command
6
+ class Push < Stable
7
+ self.summary = '[更新stable组件稳定版本] Update outdated project dependencies and create new ' \
8
+ 'Podfile.lock'
9
+
10
+ self.description = <<-DESC
11
+ 常用命令如下:\n
12
+ 更新所有公共组件: `pod stable push`\n
13
+ 更新指定公共组件: `pod stable push 组件名称`\n
14
+ 更新指定公共组件/移除组件: `pod stable push 组件名称 --remove=组件名称` #多个移除名称带`,`\n
15
+ 更新指定公共组件/带依赖关系: `pod stable push 组件名称 --dependencies=组件名称` #多个依赖名称带`,`\n
16
+ 更新指定公共组件/带依赖关系/移除组件: `pod stable push 组件名称 --dependencies=组件名称 --remove=组件名称` #多个依赖名称带`,`\n
17
+ 参数说明:--dependencies 依赖组件 --remove 需要移除组件 --update-matrix 更新矩阵产品公共业务线
18
+ DESC
19
+
20
+ self.arguments = [
21
+ CLAide::Argument.new('POD_NAMES', false, true),
22
+ ]
23
+
24
+ def self.options
25
+ [
26
+ ['--dependencies', '依赖组件名称,多个使用`,`隔开'],
27
+ ['--remove', '移除公共组件名称,多个使用`,`隔开'],
28
+ ['--update-matrix', '更新矩阵产品公共业务线'],
29
+ ].concat(super)
30
+ end
31
+
32
+ def initialize(argv)
33
+ @pods = argv.arguments!
34
+ @dependencies = argv.option('dependencies', nil)&.split(',')
35
+ @remove = argv.option('remove', nil)&.split(',')
36
+ @is_matrix = argv.flag?('update-matrix', false)
37
+ super
38
+ end
39
+
40
+ def run
41
+ puts "[PodAssistant] 开始执行 $ pod stable push".yellow
42
+ source_manager = BB::SourceManager.new(false)
43
+ cachePath = source_manager.cache_path
44
+ puts "stable cache git=>#{cachePath}"
45
+ Dir.chdir(File.join(cachePath)) {
46
+ # puts "pwd:#{`pwd`}".green
47
+ path = @is_matrix ? matrix_stable_path : common_stable_path
48
+ Dir.chdir(File.join(path)) {
49
+ if @pods.any?
50
+ if (@pods.length > 1) && (@dependencies)
51
+ puts "❌ 无效指令,不能处理多个组件#{@pods}依赖,更新组件仅支持单组件".red
52
+ puts "举例:pod stable push <单组件> --dependencies=<多组件>".green
53
+ puts "详见 pod stable push --help".green
54
+ system "pod stable push --help"
55
+ exit
56
+ elsif (@pods.length == 1) && (@dependencies || @remove)
57
+ pod_name=@pods.first
58
+ dependencies_hash = {}
59
+ if @dependencies
60
+ dependencies_hash[pod_name] = @dependencies
61
+ end
62
+ if @is_matrix
63
+ source_manager.update_business_dependencies_and_remove_data(dependencies_hash, @remove)
64
+ else
65
+ source_manager.update_common_dependencies_and_remove_data(dependencies_hash, @remove)
66
+ end
67
+ end
68
+ pods_str = @pods.join(" ")
69
+ system "pod stable update #{pods_str}"
70
+ else
71
+ if (@dependencies) || (@remove)
72
+ puts "❌ 无效指令,没有制定组件名称 详见 pod stable push --help".red
73
+ system "pod stable push --help"
74
+ exit
75
+ end
76
+ system "pod stable update"
77
+ end
78
+ }
79
+ }
80
+ end
81
+
82
+ # 公共stable目录
83
+ private def common_stable_path
84
+ return File.join(Dir.pwd, 'Common_Stable')
85
+ end
86
+ # 全线矩阵产品公共stable目录
87
+ private def matrix_stable_path
88
+ return File.join(Dir.pwd, 'Matrix_Common_Stable')
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -8,7 +8,7 @@ module Pod
8
8
  class Stable < Command
9
9
  class Sync < Stable
10
10
 
11
- self.summary = '[同步远端yml配置] sync a Stable yml config file'
11
+ self.summary = '[同步远端yml配置,更新所有公共组件标签库版本] sync a Stable yml config file'
12
12
 
13
13
  self.description = <<-DESC
14
14
  同步远端stable yml配置文件,并对本地文件进行合并操作
@@ -4,7 +4,7 @@ module Pod
4
4
  class Command
5
5
  class Stable < Command
6
6
  class Update < Stable
7
- self.summary = '[命令同执行`pod update操作`] Update outdated project dependencies and create new ' \
7
+ self.summary = '[命令同执行`pod update操作`,同步更新stable组件标签版本到最新] Update outdated project dependencies and create new ' \
8
8
  'Podfile.lock'
9
9
 
10
10
  self.description = <<-DESC
@@ -21,13 +21,14 @@ module Pod
21
21
 
22
22
  def self.options
23
23
  [
24
- ['--sync', '立即同步远端yml配置,更新组件信息'],
24
+ ['--force', '强制更新组件,突破stable版本限制'],
25
25
  ].concat(super)
26
26
  end
27
27
 
28
28
  def initialize(argv)
29
29
  @pods = argv.arguments!
30
- @sync = argv.flag?('sync')
30
+ @sync = argv.flag?('sync', true)
31
+ @force = argv.flag?('force', true)
31
32
  super
32
33
  end
33
34
 
@@ -38,9 +39,10 @@ module Pod
38
39
  # verify_podfile_exists! # 系统提供api验证podfile是否ok
39
40
  if @sync
40
41
  puts "[PodAssistant] 需要同步组件信息#{@pods}".green
41
- source_manager.merge_stable_data(@pods)
42
+ source_manager.merge_stable_data(@pods, @force)
42
43
  end
43
44
  podStartTime = Time.new
45
+ update_spec
44
46
  if @pods.any?
45
47
  pods_str = @pods.join(" ")
46
48
  system "pod update #{pods_str}"
@@ -55,6 +57,11 @@ module Pod
55
57
  source_manager.update_local_stable_from_podmodules(@pods)
56
58
  puts "[PodAssistant] `pod stable update` complete!".green
57
59
  end
60
+ def update_spec
61
+ system "pod repo update babybus-babybus-ios-specs-babybus-specs"
62
+ system "pod repo update babybus-babybus-ios-specs-sourcev2-specs"
63
+ system "pod repo update babybus-babybus-ios-specs-dylib-specs"
64
+ end
58
65
  end
59
66
  end
60
67
  end
@@ -6,6 +6,7 @@ require 'cocoapods-bb-PodAssistant/command/stable/init'
6
6
  require 'cocoapods-bb-PodAssistant/command/stable/install'
7
7
  require 'cocoapods-bb-PodAssistant/command/stable/update'
8
8
  require 'cocoapods-bb-PodAssistant/command/stable/sync'
9
+ require 'cocoapods-bb-PodAssistant/command/stable/push'
9
10
 
10
11
  module Pod
11
12
 
@@ -29,21 +30,16 @@ module Pod
29
30
  拉取稳定lock配置插件。利用版本比对进行更新配置实现对组件版本控制管理。
30
31
  DESC
31
32
 
32
- self.default_subcommand = 'init'
33
+ # self.default_subcommand = 'init'
33
34
 
34
35
  #-----------------------------------------------------------------------#
35
36
 
36
37
  extend Executable
37
38
  executable :git
38
39
 
39
- def validate!
40
+ def initialize(argv)
40
41
  super
41
- banner! if @help
42
- end
43
-
44
- def run
45
- puts "[PodAssistant] `pod stable` 帮助文档请查看�".yellow
46
- # banner!
42
+ puts "cocoapods-bb-PodAssistant (#{CocoapodsBbPodassistant::VERSION})"
47
43
  end
48
44
 
49
45
  end
@@ -3,12 +3,12 @@ require 'cocoapods-bb-PodAssistant/helpers/pod_utils'
3
3
 
4
4
  module BB
5
5
  class Cache
6
- def initialize(stable_source = nil)
6
+ def initialize(stable_source = nil, verify_stable_env=true)
7
7
  if stable_source.nil?
8
8
  stable_source = StableSource.stable_default_source
9
9
  end
10
10
  @stable_source = stable_source
11
- if File.exist?(File.join(Pathname.pwd, "Podfile"))
11
+ if verify_stable_env && File.exist?(File.join(Pathname.pwd, "Podfile"))
12
12
  @bundleId = BB::PodUtils.getProjectBundleIdentifier
13
13
  end
14
14
  if @bundleId.nil?
@@ -7,13 +7,16 @@ require 'cocoapods-bb-PodAssistant/helpers/stable_env_helper'
7
7
  # 数据源管理
8
8
  module BB
9
9
  class SourceManager
10
- def initialize()
11
- env = BB::StableEnv.new()
12
- # puts "SourceManager env:#{env}".red
13
- @businessSpecName = env.business_stable
14
- @stableMgr = BB::StableManager.new(env)
10
+ def initialize(verify_stable_env=true)
11
+ @env = BB::StableEnv.new(verify_stable_env)
12
+ @businessSpecName = @env.business_stable
13
+ @stableMgr = BB::StableManager.new(@env, verify_stable_env)
15
14
  end
16
15
 
16
+ def cache_path
17
+ return @env.cache_path
18
+ end
19
+
17
20
  # 公共源路径(远端)
18
21
  def public_stable_yaml
19
22
  return @stableMgr.public_stable_yaml
@@ -29,6 +32,18 @@ module BB
29
32
  return @stableMgr.local_stable_yaml
30
33
  end
31
34
 
35
+ def get_stable_datas(yml)
36
+ spec = BB::StableSpecs.new()
37
+ return spec.readData(yml)
38
+ end
39
+ # 通用-公共lock数据
40
+ def common_stable_datas
41
+ return get_stable_datas(public_stable_yaml)
42
+ end
43
+ # 业务线-公共lock数据
44
+ def business_stable_datas
45
+ return get_stable_datas(business_stable_yaml)
46
+ end
32
47
  # 产品线本地lock数据
33
48
  def fetch_local_stable_datas
34
49
  localSpec = BB::StableSpecs.new()
@@ -37,7 +52,7 @@ module BB
37
52
  puts "yml配置文件不存在,执行自动初始化项目yml配置文件".green
38
53
  generate_localStable
39
54
  end
40
- return localSpec.readData(yml)
55
+ return get_stable_datas(yml)
41
56
  end
42
57
 
43
58
  # 远端公共lock数据
@@ -90,14 +105,25 @@ module BB
90
105
 
91
106
  # 更新本地lock数据
92
107
  def update_localstable_datas(stable_lock)
93
- localSpec = BB::StableSpecs.new()
94
- localSpec.writeData(local_stable_yaml, stable_lock)
108
+ update_stable_lock(local_stable_yaml, stable_lock)
109
+ end
110
+ # podfile 更新配置文件使用(通用)
111
+ def update_common_stable_lock(stable_lock)
112
+ update_stable_lock(public_stable_yaml, stable_lock)
113
+ end
114
+ # podfile 更新配置文件使用(业务线)
115
+ def update_business_stable_lock(stable_lock)
116
+ update_stable_lock(business_stable_yaml, stable_lock)
117
+ end
118
+ def update_stable_lock(stable_yaml, stable_lock)
119
+ stableSpec = BB::StableSpecs.new()
120
+ stableSpec.writeData(stable_yaml, stable_lock)
95
121
  end
96
122
 
97
123
  # 合并stable数据,参数,支持传入更新某几个数据
98
- def merge_stable_data(update_pods=[])
124
+ def merge_stable_data(update_pods=[], is_force = false)
99
125
  #4、show origin_stable_lock diff with local_stable_lock
100
- new_stable_spec = compare_specs(fetch_local_stable_datas, fetch_origin_stable_datas, update_pods)
126
+ new_stable_spec = compare_specs(fetch_local_stable_datas, fetch_origin_stable_datas, update_pods, is_force)
101
127
 
102
128
  #5、rewirte local_stable_lock with origin_stable_lock
103
129
  update_localstable_datas(new_stable_spec)
@@ -122,9 +148,50 @@ module BB
122
148
  end
123
149
  return result
124
150
  end
125
-
151
+ # 更新依赖/移除数据
152
+ def update_dependencies_and_remove_data(stable_yaml, stable_specs, dependencies_pods, remove_pods)
153
+ if dependencies_pods || remove_pods
154
+ listdata = stable_specs[YAML_CONFIG_LIST_KEY]
155
+ removedata = stable_specs[YAML_CONFIG_REMOVE_KEY]
156
+ dependenciesdata = stable_specs[YAML_CONFIG_DEPENDENCIES_KEY]
157
+ if remove_pods
158
+ remove_pods.each do |name|
159
+ name = name.to_s
160
+ if listdata[name].nil?
161
+ puts "❌ 移除未知公共组件【#{name}】,请确认名称是否正确!!! 传入参数list:#{remove_pods}".red
162
+ exit
163
+ end
164
+ if !removedata.include?(name)
165
+ removedata.push(name)
166
+ end
167
+ end
168
+ end
169
+ if dependencies_pods
170
+ dependencies_pods.each do |name, array|
171
+ if array.length > 0
172
+ array.each do |pod_name|
173
+ if listdata[pod_name].nil?
174
+ puts "❌ 依赖未知公共组件【#{name}】,请确认名称是否正确!!! 传入参数list:#{array}".red
175
+ exit
176
+ end
177
+ end
178
+ dependenciesdata[name] = array
179
+ end
180
+ end
181
+ end
182
+ stable_specs[YAML_CONFIG_REMOVE_KEY] = removedata
183
+ stable_specs[YAML_CONFIG_DEPENDENCIES_KEY] = dependenciesdata
184
+ update_stable_lock(stable_yaml, stable_specs)
185
+ end
186
+ end
187
+ def update_common_dependencies_and_remove_data(dependencies_pods, remove_pods)
188
+ update_dependencies_and_remove_data(public_stable_yaml, common_stable_datas, dependencies_pods, remove_pods)
189
+ end
190
+ def update_business_dependencies_and_remove_data(dependencies_pods, remove_pods)
191
+ update_dependencies_and_remove_data(business_stable_yaml, business_stable_datas, dependencies_pods, remove_pods)
192
+ end
126
193
  # compare specs 参数1:本地,参数2:远端,参数3:指定更新pod库
127
- def compare_specs(local_specs, common_specs, update_pods=[])
194
+ def compare_specs(local_specs, common_specs, update_pods=[], is_force = false)
128
195
  added_projects = []
129
196
  updated_projects = []
130
197
  rollbacked_projects = []
@@ -204,6 +271,17 @@ module BB
204
271
  new_specs.delete(name)
205
272
  end
206
273
  showMergeLog(added_projects, updated_projects, rollbacked_projects, deleted_projects)
274
+ # step.4 强制更新组件
275
+ if is_force == true
276
+ puts "强制升级组件#{update_pods}".red
277
+ update_pods.each do |pod_name|
278
+ pod = new_specs[pod_name]
279
+ if (pod.is_a? String) && !pod.include?('>=')
280
+ puts "强制升级name:#{pod_name} (>= #{pod})".red
281
+ new_specs[pod_name] = ">= #{pod}"
282
+ end
283
+ end
284
+ end
207
285
  # puts "new_specs:#{new_specs}".send(:red)
208
286
  return new_specs
209
287
  end
@@ -1,3 +1,3 @@
1
1
  module CocoapodsBbPodassistant
2
- VERSION = "0.1.9.2"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -111,6 +111,7 @@ module BB
111
111
  commit = pod[:commit]
112
112
  linkages = pod[:linkages]
113
113
  linkage = pod[:linkage]
114
+ remove = pod[:remove]
114
115
  if (names.is_a? Array) && !names.empty?
115
116
  data = {}
116
117
  if version
@@ -141,6 +142,10 @@ module BB
141
142
  if linkage
142
143
  data[:linkage] = linkage
143
144
  end
145
+ if remove
146
+ data[:remove] = remove
147
+ puts "###业务方配置需要移除插件####names:[#{names}] pod:#{pod}".red
148
+ end
144
149
  names.each do |pod_name|
145
150
  podfile_hash[pod_name] = data
146
151
  end
@@ -159,7 +164,7 @@ module BB
159
164
  stable_hash = local_stable_data
160
165
  podfile_hash.each do |podName,podfile_pod|
161
166
  if podfile_pod.count == 0
162
- puts "❌ podfile组件配置异常,请确认:method => REMOTE_VERSION是否配置\n组件信息如下:\n#{podName} => #{podfile_pod}".red
167
+ puts "❌ podfile组件[#{podName}]配置异常,请确认:method => REMOTE_VERSION是否配置\n组件信息如下:\n#{podName} => #{podfile_pod}".red
163
168
  exit
164
169
  end
165
170
  podCoreName = @source_manager.subspec_podname(podName)
@@ -168,10 +173,6 @@ module BB
168
173
  if pod.nil? # stbale没有受版本控制
169
174
  need_update_pod_data[podName] = podfile_pod
170
175
  else
171
- # if podCoreName == 'BBGameModule'
172
- # succ = (pod == podfile_pod) ? true : false
173
- # puts "[stable]podCoreName:#{podCoreName}(#{pod}) VS [podfile] podName:#{podName}(#{podfile_pod}) succ:#{succ}".green
174
- # end
175
176
  if pod == podfile_pod
176
177
  if podName != podCoreName
177
178
  need_update_pod_data[podName] = podfile_pod
@@ -183,6 +184,12 @@ module BB
183
184
  git = podfile_pod[:git_format]
184
185
  end
185
186
  version = podfile_pod[:version]
187
+ remove = podfile_pod[:remove]
188
+ if remove
189
+ puts "[PodAssistant] 过滤组件数据 #{podName} #{podfile_pod}".red
190
+ stable_hash.delete(podCoreName)
191
+ next
192
+ end
186
193
  if (branch && !branch.empty?) || (git && !git.empty?)
187
194
  # 项目配置指向分支数据,以本项目为主
188
195
  puts "[PodAssistant] #{podName} 指向分支数据 => #{podfile_pod}"
@@ -256,8 +263,16 @@ module BB
256
263
  # puts "need_update_pod_data:#{need_update_pod_data}".green
257
264
  # 规避指向分支/远端版本替换yml配置所有组件,避免pod指向指向多个源
258
265
  need_update_pod_data.each do |podName,pod|
266
+ if pod.is_a? Hash
267
+ remove = pod[:remove]
268
+ if remove
269
+ puts "[PodAssistant] 过滤组件数据 #{podName} #{pod} remove:#{remove}".red
270
+ stable_hash.delete(podName)
271
+ next
272
+ end
273
+ end
259
274
  stable_hash[podName] = pod
260
- puts "[PodAssistant] merge pod #{podName} #{pod}"
275
+ # puts "[PodAssistant] merge pod #{podName} #{pod}"
261
276
  end
262
277
  else
263
278
  puts "[PodAssistant] 本地stable数据无变化<===完成".yellow
@@ -2,16 +2,17 @@ require 'cocoapods-bb-PodAssistant/config/stable_source'
2
2
 
3
3
  module BB
4
4
  class StableEnv
5
- def initialize()
6
- @cache = BB::Cache.new()
5
+ def initialize(verify_stable_env=true)
6
+ @cache = BB::Cache.new(nil, verify_stable_env)
7
7
  configGitPath(@cache.cachePath)
8
- # 自动加载stable环境
9
- loadStaleEnv
10
- if verify_stable_env_exists == false
11
- puts "[PodAssistant] ❌工程没有配置stable环境".red
12
- else
13
- fetch_stale_git # 自动拉取远端git仓库数据
8
+ if verify_stable_env
9
+ # 自动加载stable环境
10
+ loadStaleEnv
11
+ if verify_stable_env_exists == false
12
+ puts "[PodAssistant] ❌工程没有配置stable环境".red
13
+ end
14
14
  end
15
+ fetch_stale_git # 自动拉取远端git仓库数据
15
16
  end
16
17
 
17
18
  # stable 环境,执行pod stable
@@ -40,27 +41,28 @@ module BB
40
41
  # 拉取stable仓库代码 hook开发环境,执行pod install/update
41
42
  def system_clone_stable_git
42
43
  cachePath = @cache.cachePath
43
- puts "hook [pod install/update] fetch stable git=>#{cachePath}"
44
+ puts "fetch stable git=>#{cachePath}"
44
45
  if !Dir.exist?(File.join(cachePath))
46
+ puts "git clone=>#{stable_source}"
45
47
  clonePath = File.dirname(cachePath)
46
48
  FileUtils.mkdir_p clonePath
47
- system "git clone #{@stable_source} #{cachePath}"
49
+ system "git clone #{stable_source} #{cachePath}"
48
50
  end
49
51
  if verify_branch_exists
50
52
  if stable_tag || stable_branch
51
53
  if stable_branch
52
- system "cd #{cachePath}; git checkout #{stable_branch}; git reset --hard origin/#{stable_branch}; git pull --all"
54
+ system "cd #{cachePath}; git pull --all; git checkout #{stable_branch}; git reset --hard origin/#{stable_branch}"
53
55
  end
54
56
  if stable_tag
55
- system "cd #{cachePath}; git checkout #{stable_tag};"
57
+ system "cd #{cachePath}; git pull --all; git checkout #{stable_tag};"
56
58
  end
57
59
  else
58
60
  result =`git symbolic-ref refs/remotes/origin/HEAD`
59
61
  protechBranch = result.split("/").last.strip || default_branch
60
- system "cd #{cachePath}; git checkout #{protechBranch}; git reset --hard origin/#{protechBranch}; git pull --all"
62
+ system "cd #{cachePath}; git pull --all; git checkout #{protechBranch}; git reset --hard origin/#{protechBranch}"
61
63
  end
62
64
  else
63
- puts "❌ stable配置无效分支信息source:#{@stable_source} branch:#{stable_branch}".red
65
+ puts "❌ stable配置无效分支信息source:#{stable_source} branch:#{stable_branch}".red
64
66
  exit
65
67
  end
66
68
  end
@@ -81,6 +83,9 @@ module BB
81
83
  end
82
84
 
83
85
  def stable_source
86
+ if @stable_source.nil?
87
+ @stable_source = StableSource.stable_default_source
88
+ end
84
89
  return @stable_source
85
90
  end
86
91
  def default_branch
@@ -129,5 +134,8 @@ module BB
129
134
  end
130
135
  return false
131
136
  end
137
+ def cache_path
138
+ return @cache.cachePath
139
+ end
132
140
  end
133
141
  end
@@ -4,8 +4,9 @@ require 'cocoapods-bb-PodAssistant/helpers/stable_env_helper'
4
4
 
5
5
  module BB
6
6
  class StableManager
7
- def initialize(env = nil)
7
+ def initialize(env = nil, verify_stable_env=true)
8
8
  @env = env
9
+ @verify_stable_env = verify_stable_env
9
10
  end
10
11
 
11
12
  # podfile 更新配置文件使用(通用)
@@ -32,7 +33,7 @@ module BB
32
33
  # 仓库缓存目录
33
34
  def cachePath
34
35
  if @cache.nil?
35
- @cache = BB::Cache.new()
36
+ @cache = BB::Cache.new(nil, @verify_stable_env)
36
37
  end
37
38
  return @cache.cachePath
38
39
  end
@@ -61,7 +62,8 @@ module BB
61
62
  stableSpec.update_stable_lock(yml_path, pod_targets)
62
63
  # step.2 提交修改后代码
63
64
  yml_name = File.basename(yml_path)
64
- `cd #{cachePath}; git pull --all; git add #{yml_name}; git commit -m "[update] 更新stable配置文件#{yml_name}"; git push; git pull --all;`
65
+ # `cd #{cachePath}; git pull --all; git add #{yml_name}; git commit -m "[update] 更新stable配置文件#{yml_name}"; git push; git pull --all;`
66
+ `cd #{cachePath}; git pull --all; git add * ; git commit -m "[update] 更新stable配置文件#{yml_name}"; git push; git pull --all;`
65
67
  end
66
68
  private def update_local_stable_lock(yml_path, pod_targets)
67
69
  # step.1 更新yaml配置文件
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-bb-PodAssistant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - humin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-17 00:00:00.000000000 Z
11
+ date: 2023-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods-core
@@ -88,6 +88,7 @@ files:
88
88
  - lib/cocoapods-bb-PodAssistant/command/stable.rb
89
89
  - lib/cocoapods-bb-PodAssistant/command/stable/init.rb
90
90
  - lib/cocoapods-bb-PodAssistant/command/stable/install.rb
91
+ - lib/cocoapods-bb-PodAssistant/command/stable/push.rb
91
92
  - lib/cocoapods-bb-PodAssistant/command/stable/sync.rb
92
93
  - lib/cocoapods-bb-PodAssistant/command/stable/update.rb
93
94
  - lib/cocoapods-bb-PodAssistant/config/cache_path.rb