cocoapods-aomi-bin 0.1.15 → 0.1.20

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: ed246e9a0f0e2f98e30932e84961ac9134201400e7b699264faf3f1f0cc122ae
4
- data.tar.gz: 80944ebf177b7dcfebc249d45effba91be1072988261a841f19cf89000928a44
3
+ metadata.gz: b0ab50139a50285ba68913f933fc41b22f44d14a6121ca60262a0ff927b92d95
4
+ data.tar.gz: 45db5d44f8db5ced6c5fd7b3233f3b6c9fb63c7e10dffc58cec720b66ea8e98c
5
5
  SHA512:
6
- metadata.gz: 8704818341ad7763e15195dcc3f6a925d1a530fac67f027303cdab6ded57ebff868a1f84572999d44b35538dbe8d6d99d92d953ce3befe32d7055377b02c6eb1
7
- data.tar.gz: f869b158e0a6cd7f5ae359e349a9547c0159bd4a72095af484308c1a2528cb2dd096c76acbbcfa53e65d0f5b1c982eeff8e5a1be1c2bb6a4513fde10634c80ed
6
+ metadata.gz: aeca9253e58a3e53e3678fa9b40d8a57a5090c4d3f9a226d51c7676d352a94a9de0dff05370f4733eacbb36bd87ba124b1db29d49efefa9294e482f7c6959b58
7
+ data.tar.gz: 2001007fa825622887c068d97b901a29d094523442a743471a939b7c807042400fb8361d77be41725559aee1261844ecb910408f4a92632c536763b20e7156d6
@@ -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
@@ -15,13 +15,17 @@ module Pod
15
15
  end
16
16
 
17
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
18
25
  uri = URI.parse(@url)
19
26
  res = Net::HTTP.get_response(uri)
20
27
  res_body = JSON.parse(res.body)
21
- detail_msg = res_body['detailMsg']
22
- fetch_models(nil, detail_msg) if detail_msg
23
- print_models
24
- print_models_implementation
28
+ res_body['detailMsg']
25
29
  end
26
30
 
27
31
  def validate!
@@ -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.15'
2
+ VERSION = '0.1.20'
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.15
4
+ version: 0.1.20
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