cocoapods-aomi-bin 0.1.14 → 0.1.19

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ae0f1c3d276bd9f8b0cd9a8f6fd44b98152a7e5bf47e3f9e5fd1b652173013e
4
- data.tar.gz: eb24bbf850884f1cc01a801960a78d3d1d39cf1796d11ca350a97791bae34ffb
3
+ metadata.gz: 0416aa32911cd1105fb8cc785d16ef9255347324dbfc0d26999c4393fcbfb414
4
+ data.tar.gz: 346112074ef84c99ef22c39d374d6cc83b658cd1981ef782f170ca43a78330ae
5
5
  SHA512:
6
- metadata.gz: 7232bbe4165e66208653984d2a5f92827fdd68da37109db474c0c278b364df17376eeab3f720b220cf9fe06ebf10cc3c0f5f62360ae63c86ce209ac71c28c3a0
7
- data.tar.gz: 2ba17d477ce1401f7d7e25cb1c7b47e11a46e74572ed6dcb1b619e946a784a1d854da6b1129acf257817e14bdca3d7d0b10641588bd954d300ef4f60d3a4712f
6
+ metadata.gz: 9374f154ead0d0a0ce600d9a8ce899f989f58556f0a6651687f63c3513874dec5fef798405ab6587606ba87b989442b57c0b67ee3f14fcfa698d7e05c183b280
7
+ data.tar.gz: d82815aa70210dbfe3c6fdf3151fcd4be77b6b7c3340431cdb91e29e71729134b9ea3a9dff2fa1dbfa660cca13a522cba33d3d3726a052b26b5192ac04a8950f
@@ -15,6 +15,8 @@ require 'cocoapods-lhj-bin/command/bin/local/upload'
15
15
  require 'cocoapods-lhj-bin/command/bin/trans'
16
16
  require 'cocoapods-lhj-bin/command/bin/lhj'
17
17
  require 'cocoapods-lhj-bin/command/bin/model'
18
+ require 'cocoapods-lhj-bin/command/bin/yapi'
19
+ require 'cocoapods-lhj-bin/command/bin/view'
18
20
  require 'cocoapods-lhj-bin/command/bin/config/push'
19
21
  require 'cocoapods-lhj-bin/command/bin/oss/list'
20
22
  require 'cocoapods-lhj-bin/command/bin/oss/del'
@@ -57,7 +59,7 @@ module Pod
57
59
  end
58
60
 
59
61
  def validate!
60
- super
62
+ # super
61
63
  # 这里由于 --help 是在 validate! 方法中提取的,会导致 --help 失效
62
64
  # pod lib create 也有这个问题
63
65
  banner! if @help
@@ -115,6 +115,16 @@ module Pod
115
115
  result
116
116
  end
117
117
 
118
+ =begin
119
+ def format_string(file, line)
120
+ result = line
121
+ if /(\W)(TicketList)(\W)/ =~ line
122
+ result = result.gsub(/(\W)(TicketList)(\W)/, '\1TKTicketModel\3')
123
+ end
124
+ result
125
+ end
126
+ =end
127
+
118
128
  def exist_in_file(file, header)
119
129
  folder_name = @header_folder_map[header.to_sym]
120
130
  Regexp.new("/Pods/#{folder_name}") =~ File.path(file) if folder_name
@@ -10,16 +10,22 @@ module Pod
10
10
 
11
11
  def initialize(argv)
12
12
  @url = argv.shift_argument
13
+ @model_pre_name = argv.option('model-pre', 'ML')
13
14
  @models = []
14
15
  end
15
16
 
16
17
  def run
18
+ model = fetch_model
19
+ fetch_models(nil, model) if model
20
+ print_models
21
+ print_models_implementation
22
+ end
23
+
24
+ def fetch_model
17
25
  uri = URI.parse(@url)
18
26
  res = Net::HTTP.get_response(uri)
19
27
  res_body = JSON.parse(res.body)
20
- detail_msg = res_body['detailMsg']
21
- fetch_models(nil, detail_msg) if detail_msg
22
- print_models
28
+ res_body['detailMsg']
23
29
  end
24
30
 
25
31
  def validate!
@@ -29,10 +35,12 @@ module Pod
29
35
  def fetch_models(name, obj)
30
36
  model = obj
31
37
  model = obj.first if obj.respond_to? :<<
32
- @models.unshift({name: name, value: model})
33
- model.each do |key, value|
34
- if (value.instance_of? Hash) || (value.instance_of? Array)
35
- fetch_models(key, value)
38
+ @models.unshift({name: name, value: model}) if model.instance_of? Hash
39
+ if model.instance_of? Hash
40
+ model.each do |key, value|
41
+ if (value.instance_of? Hash) || (value.instance_of? Array)
42
+ fetch_models(key, value)
43
+ end
36
44
  end
37
45
  end
38
46
  end
@@ -41,17 +49,21 @@ module Pod
41
49
  @models.each do |model|
42
50
  model_name = ''
43
51
  model_name = model[:name].gsub('List', '').gsub('Vo', '').gsub(/^\w/) { $&.upcase } if model[:name]
44
- puts "@interface ML#{model_name}Model : NSObject"
52
+ puts "@interface #{@model_pre_name}#{model_name}Model : NSObject"
45
53
  model[:value].each do |key, value|
46
54
  print_property(key, value)
47
55
  end
48
- puts "@end\n\n"
49
- puts "@implementation ML#{model_name}Model"
50
- if model[:name]
51
- puts "+(NSDictionary *)modelContainerPropertyGenericClass {"
52
- puts " return @{@\"#{model[:name]}\" : ML#{model_name}Model.class};"
53
- puts "}"
54
- end
56
+ puts "@end\n\n\n"
57
+ end
58
+ end
59
+
60
+ def print_models_implementation
61
+ @models.each do |model|
62
+ model_name = model[:name].gsub('List', '').gsub('Vo', '').gsub(/^\w/) { $&.upcase } if model[:name]
63
+ puts "@implementation #{@model_pre_name}#{model_name}Model"
64
+ puts "+(NSDictionary *)modelContainerPropertyGenericClass {"
65
+ puts " return @{@\"#{model[:name]}\" : #{@model_pre_name}#{model_name}Model.class};"
66
+ puts "}"
55
67
  puts "@end\n\n\n"
56
68
  end
57
69
  end
@@ -72,13 +84,21 @@ module Pod
72
84
  puts "///#{value}"
73
85
  puts "@property (nonatomic, assign) BOOL #{key};"
74
86
  elsif value.instance_of? Array
75
- puts "///#{key}"
76
- name = key.gsub('List', '').gsub('Vo', '').gsub(/^\w/) { $&.upcase }
77
- puts "@property (nonatomic, strong) NSArray<ML#{name}Model *> *#{key};"
87
+ if value.first.instance_of? String
88
+ puts "///#{key}"
89
+ puts "@property (nonatomic, strong) NSArray<NSString *> *#{key};"
90
+ else
91
+ puts "///#{key}"
92
+ name = key.gsub('List', '').gsub('Vo', '').gsub(/^\w/) { $&.upcase }
93
+ puts "@property (nonatomic, strong) NSArray<#{@model_pre_name}#{name}Model *> *#{key};"
94
+ end
78
95
  elsif value.instance_of? Hash
79
96
  puts "///#{key}"
80
97
  name = key.gsub('List', '').gsub('Vo', '').gsub(/^\w/) { $&.upcase }
81
- puts "@property (nonatomic, strong) ML#{name}Model *#{key};"
98
+ puts "@property (nonatomic, strong) #{@model_pre_name}#{name}Model *#{key};"
99
+ else
100
+ puts "///#{value}"
101
+ puts "@property (nonatomic, copy) NSString *#{key};"
82
102
  end
83
103
  end
84
104
  end
@@ -0,0 +1,108 @@
1
+ module Pod
2
+ class Command
3
+ class Bin < Command
4
+ class View < Bin
5
+ self.summary = '生成源码'
6
+
7
+ def initialize(argv)
8
+ @name = argv.option('name', 'titleLabel')
9
+ @type = argv.option('type', 'UILabel')
10
+ end
11
+
12
+ def names
13
+ @name.split(",").map(&:strip)
14
+ end
15
+
16
+ def run
17
+ print_declare
18
+ puts "\n\n"
19
+ print_instance
20
+ puts "\n\n"
21
+ print_layout
22
+ puts "\n\n"
23
+ print_value
24
+ end
25
+
26
+ def print_declare
27
+ names.each do |name|
28
+ puts "///"
29
+ puts "@property (nonatomic, strong) #{@type} *#{name};"
30
+ end
31
+ end
32
+
33
+ def print_instance
34
+ names.each do |name|
35
+ puts "-(#{@type} *)#{name}"
36
+ puts "{"
37
+ puts " if(!_#{name}){"
38
+ print_alloc(name)
39
+ puts " _#{name}.translatesAutoresizingMaskIntoConstraints = NO;"
40
+ print_property(name)
41
+ puts " }"
42
+ puts " return _#{name};"
43
+ puts "}"
44
+ puts "\n"
45
+ end
46
+ end
47
+
48
+ def print_alloc(name)
49
+ if @type.eql?('UIImageView')
50
+ puts " _#{name} = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"xxxx\"]];"
51
+ elsif @type.eql?('UIButton')
52
+ puts " _#{name} = [UIButton buttonWithType:UIButtonTypeCustom];"
53
+ else
54
+ puts " _#{name} = [[#{@type} alloc] init];"
55
+ end
56
+ end
57
+
58
+ def print_property(name)
59
+ if @type.eql?('UILabel')
60
+ puts " _#{name}.textColor = kSetCOLOR(0x333333);"
61
+ puts " _#{name}.text = @\"xxxxxxxx\";"
62
+ puts " _#{name}.font = [UIFont systemFontOfSize:12.0 weight:UIFontWeightRegular];"
63
+ puts " _#{name}.textAlignment = NSTextAlignmentCenter;"
64
+ elsif @type.eql?('UIImageView')
65
+ puts " _#{name}.backgroundColor = kBackgroundColor;"
66
+ puts " _#{name}.contentMode = UIViewContentModeScaleAspectFit;"
67
+ puts " _#{name}.clipsToBounds = YES;"
68
+ puts " _#{name}.layer.cornerRadius = 6.0f;"
69
+ puts " _#{name}.layer.borderColor = kLineColor.CGColor;"
70
+ puts " _#{name}.layer.borderWidth = 0.5;"
71
+ elsif @type.eql?('UITextField')
72
+ puts " _#{name}.textColor = kSetCOLOR(0x333333);"
73
+ puts " _#{name}.font = [UIFont systemFontOfSize:12.0 weight:UIFontWeightRegular];"
74
+ elsif @type.eql?('UIView')
75
+ puts " _#{name}.backgroundColor = kBackgroundColor;"
76
+ elsif @type.eql?('UIButton')
77
+ puts " _#{name}.backgroundColor = kBackgroundColor;"
78
+ puts " [_#{name} setTitle:@\"xxx\" forState:UIControlStateNormal];"
79
+ puts " [_#{name} setTitleColor:kSetCOLOR(0x999999) forState:UIControlStateNormal];"
80
+ puts " [_#{name} setImage:[UIImage imageNamed:@\"xx\"] forState:UIControlStateNormal];"
81
+ puts " [_#{name} setImage:[UIImage imageNamed:@\"xx\"] forState:UIControlStateSelected];"
82
+ puts " [_#{name} addTarget:self action:@selector(actionHandler:) forControlEvents:UIControlEventTouchUpInside];"
83
+ end
84
+ end
85
+
86
+ def print_layout
87
+ names.each do |name|
88
+ puts "[contentView addSubview:self.#{name}];"
89
+ puts "[self.#{name}.leadingAnchor constraintEqualToAnchor:contentView.leadingAnchor constant:0].active = YES;"
90
+ puts "[self.#{name}.trailingAnchor constraintEqualToAnchor:contentView.trailingAnchor constant:0].active = YES;"
91
+ puts "[self.#{name}.topAnchor constraintEqualToAnchor:contentView.topAnchor].active = YES;"
92
+ puts "[self.#{name}.bottomAnchor constraintEqualToAnchor:contentView.bottomAnchor].active = YES;"
93
+ puts "\n\n"
94
+ end
95
+ end
96
+
97
+ def print_value
98
+ names.each do |name|
99
+ if @type.eql?('UILabel')
100
+ puts "self.#{name}.text = @\"xxxxx\";"
101
+ end
102
+ end
103
+ end
104
+
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,221 @@
1
+ require 'net/https'
2
+ require 'uri'
3
+ require 'json'
4
+
5
+ module Pod
6
+ class Command
7
+ class Bin < Command
8
+ class Yapi < Bin
9
+ self.summary = '通过yapi接口生成请求'
10
+
11
+ def initialize(argv)
12
+ @id = argv.option('id')
13
+ @model_pre_name = argv.option('model-pre')
14
+ @http_url = ''
15
+ @http_headers = []
16
+ @data_json = {}
17
+ @models = []
18
+ @config_id = ''
19
+ @config_model_pre = 'ML'
20
+ @type_trans = {}
21
+ @config_model_names = []
22
+ @model_names = []
23
+ end
24
+
25
+ def run
26
+ load_config
27
+ fetch_model
28
+ print_models
29
+ print_models_implementation
30
+ print_methods
31
+ end
32
+
33
+ def url_str
34
+ "#{@http_url}#{api_id}"
35
+ end
36
+
37
+ def load_config
38
+ yml = File.join(Pod::Config.instance.home_dir, 'yapi.yml')
39
+ config = YAML.load_file(yml)
40
+ config.each do |k, v|
41
+ @http_headers << "#{k}=#{v}" if (k.eql?('__wpkreporterwid_') || k.eql?('_yapi_token') || k.eql?('_yapi_uid'))
42
+ end
43
+ @http_url = config['url']
44
+ @config_id = config['id']
45
+ @config_model_pre = config['model_pre']
46
+ @config_model_names = config['model_names']
47
+ @type_trans = config['type_trans']
48
+ end
49
+
50
+ def api_id
51
+ @id || @config_id.to_s
52
+ end
53
+
54
+ def model_pre
55
+ @model_pre_name || @config_model_pre
56
+ end
57
+
58
+ def req_model
59
+ uri = URI.parse(url_str)
60
+ req = Net::HTTP::Get.new(uri)
61
+ req['Cookie'] = @http_headers.join('; ')
62
+ res = Net::HTTP.start(uri.hostname, uri.port) do |http|
63
+ http.request(req)
64
+ end
65
+ puts res.body
66
+ JSON.parse(res.body)
67
+ end
68
+
69
+ def fetch_model
70
+ res_json = req_model
71
+ if res_json && res_json['data']
72
+ @data_json = res_json['data']
73
+ if @data_json['res_body']
74
+ begin
75
+ res_body = JSON.parse(@data_json['res_body'])
76
+ detail_obj = res_body['properties']['detailMsg'] || {}
77
+ detail_obj['name'] = gen_model_name('')
78
+ handle_model(detail_obj)
79
+ rescue => ex
80
+ puts ex
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ def gen_model_name(name)
87
+ n = name.gsub(/vo|model|list/i, '').gsub(/(.*)s$/, '\1').gsub(/^\w/) { $&.upcase }
88
+ if n.length <= 0
89
+ n = @config_model_names.detect{ |c| !@model_names.any?{ |n| n.gsub(/#{model_pre}(.*)Model/, '\1').eql?(c) } }
90
+ end
91
+ model_name = "#{model_pre}#{n}Model"
92
+ @model_names << model_name
93
+ model_name
94
+ end
95
+
96
+ def handle_model(model)
97
+ p_type = model['type']
98
+ p_name = model['name']
99
+ p_properties = model['properties']
100
+ p_model = { name: p_name }
101
+
102
+ properties = []
103
+ if p_type.eql?('object')
104
+ p_properties.each do |k, v|
105
+ c_type = @type_trans[v['type']] || v['type']
106
+ c_model = {key: k, type: c_type, description: v['description'], default: ''}
107
+ if v['type'].eql?('object') || v['type'].eql?('array')
108
+ o = v['items'] || v
109
+ o['name'] = gen_model_name(k)
110
+ if v['type'].eql?('array') && v['items']['type'].eql?('string')
111
+ c_model[:type_name] = "NSString"
112
+ else
113
+ c_model[:type_name] = o['name']
114
+ handle_model(o)
115
+ end
116
+ end
117
+ properties << c_model
118
+ end
119
+ p_model[:properties] = properties
120
+ @models << p_model
121
+ elsif p_type.eql?('array')
122
+ t = model['items']
123
+ t['name'] = p_name
124
+ handle_model(t)
125
+ end
126
+ end
127
+
128
+ def print_models
129
+ puts "\n<===============打印模型=====================>\n"
130
+ @models.each do |model|
131
+ model_name = model[:name] || ''
132
+ model_properties = model[:properties]
133
+ puts "@interface #{model_name} : NSObject"
134
+ model_properties.each do |m|
135
+ print_model(m)
136
+ end
137
+ puts "@end\n\n\n"
138
+ end
139
+ end
140
+
141
+ def print_models_implementation
142
+ @models.each do |model|
143
+ puts "@implementation #{model[:name]}"
144
+ str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('NSString') }.map{ |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
145
+ if str && str.length > 0
146
+ puts "+(NSDictionary *)modelContainerPropertyGenericClass {"
147
+ puts " return @{#{str}};"
148
+ puts "}"
149
+ end
150
+ puts "@end\n\n\n"
151
+ end
152
+ end
153
+
154
+ def print_model(m)
155
+ key = m[:key]
156
+ type_name = m[:type_name]
157
+ type = m[:type]
158
+ des = m[:description] || ''
159
+ des.gsub!(/\n/, '')
160
+ default = m[:default]
161
+ puts "///#{des} #{default}"
162
+ if type.eql?('integer')
163
+ puts "@property (nonatomic, assign) NSInteger #{key};"
164
+ elsif type.eql?('cent')
165
+ puts "@property (nonatomic, strong) MLCentNumber *#{key};"
166
+ elsif type.eql?('string')
167
+ puts "@property (nonatomic, copy) NSString *#{key};"
168
+ elsif type.eql?('number')
169
+ puts "@property (nonatomic, strong) NSNumber *#{key};"
170
+ elsif type.eql?('float')
171
+ puts "@property (nonatomic, assign) CGFloat #{key};"
172
+ elsif type.eql?('double')
173
+ puts "@property (nonatomic, assign) double #{key};"
174
+ elsif type.eql?('boolean')
175
+ puts "@property (nonatomic, assign) BOOL #{key};"
176
+ elsif type.eql?('object')
177
+ puts "@property (nonatomic, strong) #{type_name} *#{key};"
178
+ elsif type.eql?('array')
179
+ puts "@property (nonatomic, strong) NSArray<#{type_name} *> *#{key};"
180
+ else
181
+ puts "@property (nonatomic, copy) NSString *#{key};"
182
+ end
183
+ end
184
+
185
+ def print_methods
186
+ puts "\n<===============方法调用=====================>\n"
187
+ puts "/**"
188
+ puts " * #{@data_json['title']} -- #{@data_json['username']}"
189
+ puts " */"
190
+ key_str = @data_json['path'].split('/').map{ |s| s.gsub(/[^A-Za-z0-9]/, '').gsub(/^\w/){ $&.upcase } }.join('')
191
+ key = "k#{key_str}URL"
192
+ puts "static NSString * const #{key} = @\"#{@data_json['path']}\";"
193
+ puts "\n\n"
194
+ puts "@interface MLParamModel : NSObject"
195
+ @data_json['req_query'].each do |h|
196
+ puts "///#{h['desc']} #{h['example']}"
197
+ puts "@property (nonatomic, copy) NSString *#{h['name']}"
198
+ end
199
+ puts "@end"
200
+ puts "\n\n"
201
+ model = @models.last
202
+ if @data_json['method'].eql?('GET')
203
+ puts " [MLNetworkingManager getWithUrl:#{key} params:nil response:^(MLResponseMessage *responseMessage) {"
204
+ puts " if (response.resultCode == 0 && !response.error){"
205
+ puts " NSDictionary *detailMsg = response.detailMsg"
206
+ puts " #{model[:name]} *model = [#{model[:name]} yy_modelWithDictionary:detailMsg];" if model
207
+ puts " }"
208
+ puts " }];"
209
+ else
210
+ puts " [MLNetworkingManager postWithUrl:#{key} params:nil response:^(MLResponseMessage *responseMessage) {"
211
+ puts " if (response.resultCode == 0 && !response.error){"
212
+ puts " NSDictionary *detailMsg = response.detailMsg"
213
+ puts " #{model[:name]} *model = [#{model[:name]} yy_modelWithDictionary:detailMsg];" if model
214
+ puts " }"
215
+ puts " }];"
216
+ end
217
+ end
218
+ end
219
+ end
220
+ end
221
+ end
@@ -1,5 +1,5 @@
1
1
  module CBin
2
- VERSION = '0.1.14'
2
+ VERSION = '0.1.19'
3
3
  end
4
4
 
5
5
  module Pod
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-aomi-bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - lihaijian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-08 00:00:00.000000000 Z
11
+ date: 2021-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -131,6 +131,8 @@ files:
131
131
  - lib/cocoapods-lhj-bin/command/bin/spec/push.rb
132
132
  - lib/cocoapods-lhj-bin/command/bin/trans.rb
133
133
  - lib/cocoapods-lhj-bin/command/bin/update.rb
134
+ - lib/cocoapods-lhj-bin/command/bin/view.rb
135
+ - lib/cocoapods-lhj-bin/command/bin/yapi.rb
134
136
  - lib/cocoapods-lhj-bin/config/config.rb
135
137
  - lib/cocoapods-lhj-bin/config/config_asker.rb
136
138
  - lib/cocoapods-lhj-bin/config/config_builder.rb