cocoapods-soul-component-plugin 0.0.7 → 0.0.11

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: 538e901040b541fa4e0ea1cbf57988925e52d826a5d58ad4ca2ed48b0974f557
4
- data.tar.gz: ee18ce9056fc63b06c87a667256f11adab50ab28430a8f616f77892ec75773e5
3
+ metadata.gz: 4fe112b7a0c2576a90976d2ad3893dff3ebf8043b1426f61273282ae1d0344b8
4
+ data.tar.gz: 78f2bc8841a4005661a077c460dc4714a548a37cc00f1e57f438dc46cf227a61
5
5
  SHA512:
6
- metadata.gz: 126f0255c192ff5c9f3ae04855fa50745afe7b85a7d228335789dafb42c6031b30eae548610e4b143aeb1559981fe613d18edd7b003de696e7e2d52063c3eb2c
7
- data.tar.gz: f7d5606e61d8a3525faa18bb02afe312ccfa80dc81b7b0fa12732331d204b717c39e9642d668aa83243a500966a0afd2c5497b694dc17b90e732d5d8501f4f23
6
+ metadata.gz: fc7abff4f40879636d4e611dd7a61992cdd7a3acbb51d14d29659934eff48c1b8ecb073efe29fc5c567ab8724941b7e2b66b131ab5b7900a9b4a6658df575f73
7
+ data.tar.gz: b25d96af0cb3455fbb40c6f0ad3f2c4f934f0ea23bc60d9449748b492b3211ab64c36960405bbc38f31b577b6c20bc138bba392ba75177bd95c3db1d61549ef2
@@ -1,11 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cocoapods'
2
4
  require 'fileutils'
3
5
  require 'json'
4
6
  require 'xcodeproj'
5
7
  require 'cocoapods-downloader'
8
+ require 'cocoapods/user_interface'
6
9
  require_relative '../gem_version'
7
10
 
8
11
  module Pod
12
+ module Downloader
13
+ class Git < Base
14
+ def download_deep
15
+ clone(false, false)
16
+ checkout_commit if options[:commit]
17
+ end
18
+
19
+ def self.check_if_has_auth_clone(url)
20
+ cmd = "git ls-remote #{url} --exit-code"
21
+ stdout, stderr, status = Open3.capture3(cmd)
22
+ status.success?
23
+ end
24
+ end
25
+ end
26
+
9
27
  class Command
10
28
  class Devops < Command
11
29
  self.summary = <<-SUMMARY
@@ -14,7 +32,6 @@ module Pod
14
32
  self.description = <<-DESC
15
33
  Install components through devops/components.json
16
34
  DESC
17
- self.arguments = []
18
35
 
19
36
  def run
20
37
  # do nothing
@@ -25,12 +42,25 @@ module Pod
25
42
  end
26
43
 
27
44
  module CocoapodsSoulComponentPlugin
28
- $components = []
45
+ @@components = []
46
+ @@use_source = false
47
+
48
+ def self.use_source=(t_use_source)
49
+ @@use_source = t_use_source
50
+ end
51
+
52
+ def self.use_source
53
+ @@use_source
54
+ end
55
+
56
+ def self.components
57
+ @@components
58
+ end
29
59
 
30
60
  class Soul_Component
31
61
  attr_accessor :name, :local, :submodule, :version, :git, :branch, :path, :commit
32
62
 
33
- def initialize(name, local, submodule, version, git, branch, path)
63
+ def initialize(name, local, submodule, version, git, branch, path, commit)
34
64
  @name = name
35
65
  @local = local
36
66
  @submodule = submodule
@@ -40,6 +70,12 @@ module CocoapodsSoulComponentPlugin
40
70
  @path = path
41
71
  @commit = commit
42
72
  end
73
+
74
+ def to_hash
75
+ instance_variables.map do |var|
76
+ [var[1..-1].to_sym, instance_variable_get(var)]
77
+ end.to_h
78
+ end
43
79
  end
44
80
 
45
81
  def self.use_components
@@ -75,7 +111,7 @@ module CocoapodsSoulComponentPlugin
75
111
  group = project.main_group
76
112
  group.set_source_tree('SOURCE_ROOT')
77
113
  # 向group中添加 文件引用
78
- file_ref = group.new_reference(self.component_file_path)
114
+ file_ref = group.new_reference(component_file_path)
79
115
  # podfile_local排序
80
116
  podfile_local_group = group.children.last
81
117
  group.children.pop
@@ -84,43 +120,54 @@ module CocoapodsSoulComponentPlugin
84
120
  end
85
121
 
86
122
  def self.pre_run
87
- puts "当前版本:#{CocoapodsSoulComponentPlugin::VERSION}"
88
- json = File.read(self.component_file_path)
123
+ json = File.read(component_file_path)
89
124
  obj = JSON.parse(json)
90
125
  dependencies = obj['dependencies']
91
126
 
92
127
  dependencies.each do |each|
93
- $components.push(Soul_Component.new(each[0], each[1]['local'], each[1]['submodule'], each[1]['version'], each[1]['git'], each[1]['branch'], each[1]['path']))
128
+ component = Soul_Component.new(each[0], each[1]['local'], each[1]['submodule'], each[1]['version'], each[1]['git'],
129
+ each[1]['branch'], each[1]['path'], each[1]['commit'])
130
+ if @@use_source
131
+ component.local = true
132
+ if Pod::Downloader::Git.check_if_has_auth_clone(component.git) == false
133
+ component.local = false
134
+ Pod::UI.puts "本地依赖 #{component.name} 切换失败,使用 binary 。参数:#{component.to_hash}".red
135
+ end
136
+ end
137
+ @@components.push(component)
94
138
  end
95
139
 
96
- $components.each do |each|
97
- if each.path == nil
140
+ @@components.each do |each|
141
+ if each.path.nil?
98
142
  if each.submodule == false
99
143
  if each.local == true
100
144
  local_path = each.name
101
- if each.branch != nil
102
- local_path += '-'
103
- local_path += each.branch.to_s.tr('/','-')
104
- end
105
- if each.commit != nil
145
+
146
+ if !each.commit.nil?
106
147
  local_path += '-'
107
148
  local_path += each.commit.to_s
149
+ elsif !each.branch.nil?
150
+ local_path += '-'
151
+ local_path += each.branch.to_s
152
+ elsif !each.version.nil?
153
+ local_path += '-'
154
+ local_path += each.version.to_s
108
155
  end
109
156
  target_path = "#{root_path}/LocalPods/#{local_path}"
110
157
  each.path = target_path
111
158
 
112
159
  if File.exist?(target_path) == false
113
- options = { git: each.git, commit: each.commit, branch: each.branch }
160
+ options = { git: each.git, commit: each.commit, tag: each.version, branch: each.branch }
114
161
  options = Pod::Downloader.preprocess_options(options)
115
162
  downloader = Pod::Downloader.for_target(target_path, options)
116
- downloader.download
117
- downloader.checkout_options #=> { :git => 'example.com', :commit => 'd7f410490dabf7a6bde665ba22da102c3acf1bd9' }
163
+ Pod::UI.puts "本地依赖 #{each.name} 不存在,即将进行下载 。参数:#{options}".green
164
+ downloader.download_deep
165
+ else
166
+ Pod::UI.puts "本地依赖 #{each.name} 已存在,不进行变更,如需更新请删除重新 install。位置:#{target_path}".yellow
118
167
  end
119
168
  end
120
- else
121
- if each.local == true
122
- each.path = "SOPods/#{each.name}"
123
- end
169
+ elsif each.local == true
170
+ each.path = "SOPods/#{each.name}"
124
171
  end
125
172
  end
126
173
  end
@@ -131,8 +178,21 @@ end
131
178
  module Pod
132
179
  class Command
133
180
  class Install < Command
181
+ def self.options
182
+ [
183
+ ['--source', 'Use source']
184
+ ].concat(super)
185
+ end
186
+
187
+ def initialize(argv)
188
+ CocoapodsSoulComponentPlugin.use_source = argv.flag?('source')
189
+ super
190
+ end
191
+
134
192
  alias old_run run
193
+
135
194
  def run
195
+ Pod::UI.puts "当前版本:#{CocoapodsSoulComponentPlugin::VERSION}".green
136
196
  CocoapodsSoulComponentPlugin.pre_run if CocoapodsSoulComponentPlugin.use_components
137
197
  old_run
138
198
  CocoapodsSoulComponentPlugin.post_run if CocoapodsSoulComponentPlugin.use_components
@@ -144,7 +204,7 @@ module Pod
144
204
  alias old_initialize initialize
145
205
 
146
206
  def initialize(name = nil, *requirements)
147
- if requirements == nil
207
+ if requirements.nil?
148
208
  old_initialize(name)
149
209
  return
150
210
  end
@@ -153,14 +213,14 @@ module Pod
153
213
  # puts name, requirements
154
214
  # end
155
215
 
156
- $components.each do |each|
157
- if each.name == name
158
- if each.local == true
159
- requirements = [{ :name => each.name, :path => each.path }]
160
- else
161
- requirements = [each.version]
162
- end
163
- end
216
+ CocoapodsSoulComponentPlugin.components.each do |each|
217
+ next unless each.name == name
218
+
219
+ requirements = if each.local == true
220
+ [{ name: each.name, path: each.path }]
221
+ else
222
+ [each.version]
223
+ end
164
224
  end
165
225
 
166
226
  old_initialize(name, *requirements)
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module CocoapodsSoulComponentPlugin
3
- VERSION = '0.0.7'
3
+ VERSION = '0.0.11'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-soul-component-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - fang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-16 00:00:00.000000000 Z
11
+ date: 2021-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler