lhj-tools 0.1.2 → 0.1.6
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/lhj/command/init.rb +33 -6
- data/lib/lhj/command/oss/del.rb +17 -4
- data/lib/lhj/command/oss/list.rb +7 -1
- data/lib/lhj/command/oss/upload.rb +8 -4
- data/lib/lhj/command/oss.rb +10 -0
- data/lib/lhj/command/refactor_rename.rb +17 -1
- data/lib/lhj/command/rename_image.rb +49 -7
- data/lib/lhj/command/trans.rb +1 -0
- data/lib/lhj/command/view.rb +27 -23
- data/lib/lhj/command/yapi.rb +32 -29
- data/lib/lhj/command.rb +18 -1
- data/lib/lhj/config.rb +2 -342
- data/lib/lhj/tools/version.rb +1 -1
- data/lib/lhj/tools.rb +0 -1
- data/lib/lhj/tree/directory_renderer.rb +45 -0
- data/lib/lhj/tree/hash_walker.rb +70 -0
- data/lib/lhj/tree/node.rb +90 -0
- data/lib/lhj/tree/number_renderer.rb +30 -0
- data/lib/lhj/tree/path_walker.rb +108 -0
- data/lib/lhj/tree/tree.rb +112 -0
- metadata +43 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d7427bf47063e690b70a09d1bf6987c387d7289ec0c4206fd7d6182372e463e
|
4
|
+
data.tar.gz: d43905b649b15c84de3120b966c42ebb684bdacfec57af0ac2c622fb57218c79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c3f50b5221b68bdec3d7257c31456a70f9fc04263fd48ce4007157b638ab96613a8077339ae016126c9abf0cb75bc2d35f5bb6ef98f70ca55d3310512e21171
|
7
|
+
data.tar.gz: 0bbff5886d4a5aace7ad8c2143db0fbfe7a7c52cf5809e62a6325a478f7c9c045aede8f74eea640e5a366b38cc6f203e87c372187a257452b65e557d5e87eec3
|
data/lib/lhj/command/init.rb
CHANGED
@@ -1,12 +1,21 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
require 'net/http'
|
4
|
+
require 'uri'
|
5
|
+
require 'lhj/config'
|
1
6
|
|
2
7
|
module Lhj
|
3
8
|
class Command
|
4
|
-
#
|
9
|
+
# sync config
|
5
10
|
class Init < Command
|
6
11
|
self.summary = '初始化控件'
|
12
|
+
self.description = '使用工具前先执行`lhj init`'
|
7
13
|
|
8
14
|
def run
|
9
|
-
|
15
|
+
auto_spin
|
16
|
+
FileUtils.mkdir_p(target_folder) unless File.exist?(target_folder)
|
17
|
+
download_file
|
18
|
+
stop
|
10
19
|
end
|
11
20
|
|
12
21
|
def down_load_urls
|
@@ -16,11 +25,29 @@ module Lhj
|
|
16
25
|
http://aomi-ios-repo.oss-cn-shenzhen.aliyuncs.com/zh2hant.yml]
|
17
26
|
end
|
18
27
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
28
|
+
def target_folder
|
29
|
+
Lhj::Config.instance.home_dir
|
30
|
+
end
|
31
|
+
|
32
|
+
def save_file(url, target)
|
33
|
+
http_client = Faraday.new do |c|
|
34
|
+
c.adapter Faraday.default_adapter
|
35
|
+
end
|
36
|
+
response = http_client.get(url)
|
37
|
+
File.open(target, 'wb') { |fp| fp.write(response.body) }
|
38
|
+
end
|
39
|
+
|
40
|
+
def file_name_with_url(url)
|
41
|
+
url.scan(%r{/([^/]+)}).flatten.last
|
42
|
+
end
|
43
|
+
|
44
|
+
def download_file
|
45
|
+
down_load_urls.each do |url|
|
46
|
+
file_name = file_name_with_url(url)
|
47
|
+
file_path = File.join(target_folder, file_name)
|
48
|
+
save_file(url, file_path) unless File.exist?(file_path)
|
22
49
|
end
|
23
|
-
puts "
|
50
|
+
puts "工具初始化完成 \n"
|
24
51
|
end
|
25
52
|
end
|
26
53
|
end
|
data/lib/lhj/command/oss/del.rb
CHANGED
@@ -8,27 +8,40 @@ module Lhj
|
|
8
8
|
self.summary = '删除OSS的key'
|
9
9
|
|
10
10
|
self.arguments = [
|
11
|
-
CLAide::Argument.new('--key=XX', true)
|
11
|
+
CLAide::Argument.new('--key=XX', true),
|
12
|
+
CLAide::Argument.new('--type=XX', true)
|
12
13
|
]
|
13
14
|
|
14
15
|
def self.options
|
15
16
|
[
|
16
|
-
%w[--key OSS对应的key]
|
17
|
+
%w[--key OSS对应的key],
|
18
|
+
%w[--type OSS对应的类型]
|
17
19
|
]
|
18
20
|
end
|
19
21
|
|
20
22
|
def initialize(argv)
|
21
23
|
@key = argv.option('key')
|
24
|
+
@type = argv.option('type')
|
22
25
|
super
|
23
26
|
end
|
24
27
|
|
25
28
|
def validate!
|
26
|
-
help! '请输入key' unless @key
|
29
|
+
help! '请输入key或者类型' unless @key || @type
|
27
30
|
super
|
28
31
|
end
|
29
32
|
|
30
33
|
def run
|
31
|
-
|
34
|
+
if @type
|
35
|
+
objects = Lhj::OSS::Helper.instance.list
|
36
|
+
objects.each do |o|
|
37
|
+
if /#{@type}/ =~ o.key
|
38
|
+
puts "成功删除#{o.key}"
|
39
|
+
Lhj::OSS::Helper.instance.delete(o.key)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
else
|
43
|
+
Lhj::OSS::Helper.instance.delete(@key)
|
44
|
+
end
|
32
45
|
end
|
33
46
|
end
|
34
47
|
end
|
data/lib/lhj/command/oss/list.rb
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
require 'lhj/helper/oss_helper'
|
2
|
+
require 'terminal-table'
|
2
3
|
|
3
4
|
module Lhj
|
4
5
|
class Command
|
5
6
|
class OSS < Command
|
6
7
|
class List < OSS
|
8
|
+
self.summary = '查看oss列表'
|
9
|
+
|
7
10
|
def run
|
8
11
|
objects = Lhj::OSS::Helper.instance.list
|
12
|
+
rows = []
|
9
13
|
objects.each do |o|
|
10
14
|
path = "#{Lhj::OSS::Helper.instance.url_path}/#{o.key}"
|
11
|
-
|
15
|
+
rows << [path]
|
12
16
|
end
|
17
|
+
table = Terminal::Table.new title: 'OSS List', headings: ['URL'], rows: rows
|
18
|
+
puts table
|
13
19
|
end
|
14
20
|
end
|
15
21
|
end
|
@@ -11,30 +11,33 @@ module Lhj
|
|
11
11
|
|
12
12
|
self.arguments = [
|
13
13
|
CLAide::Argument.new('type', false),
|
14
|
-
CLAide::Argument.new('name', false)
|
14
|
+
CLAide::Argument.new('name', false),
|
15
|
+
CLAide::Argument.new('tag', false)
|
15
16
|
]
|
16
17
|
|
17
18
|
def self.options
|
18
19
|
[
|
19
20
|
%w[--type 文件类型],
|
20
|
-
%w[--name 文件名]
|
21
|
+
%w[--name 文件名],
|
22
|
+
%w[--tag 标签]
|
21
23
|
]
|
22
24
|
end
|
23
25
|
|
24
26
|
def validate!
|
25
27
|
super
|
26
|
-
help! '类型或名字必须输入' unless @name
|
28
|
+
help! '类型或名字必须输入' unless @name || @type
|
27
29
|
end
|
28
30
|
|
29
31
|
def initialize(argv)
|
30
32
|
@current_path = argv.shift_argument || Dir.pwd
|
31
33
|
@type = argv.option('type')
|
32
34
|
@name = argv.option('name')
|
35
|
+
@tag = argv.option('tag')
|
33
36
|
super
|
34
37
|
end
|
35
38
|
|
36
39
|
def run
|
37
|
-
Dir.glob(@current_path).each do |f|
|
40
|
+
Dir.glob("#{@current_path}/*").each do |f|
|
38
41
|
file_name = File.basename(f)
|
39
42
|
if @name && /#{@name}/ =~ file_name
|
40
43
|
upload(f, file_name)
|
@@ -48,6 +51,7 @@ module Lhj
|
|
48
51
|
|
49
52
|
def upload(file, file_name)
|
50
53
|
oss_key = file_name
|
54
|
+
oss_key = "#{@tag}/#{file_name}" if @tag
|
51
55
|
Lhj::OSS::Helper.instance.upload(oss_key, file)
|
52
56
|
url = Lhj::OSS::Helper.instance.object_url(oss_key)
|
53
57
|
puts "云端上传成功:#{url}\n"
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'find'
|
4
4
|
require 'fileutils'
|
5
|
+
require 'terminal-table'
|
5
6
|
|
6
7
|
module Lhj
|
7
8
|
class Command
|
@@ -31,11 +32,13 @@ module Lhj
|
|
31
32
|
@current_path = argv.shift_argument || Dir.pwd
|
32
33
|
@key = argv.option('key')
|
33
34
|
@other = argv.option('other')
|
35
|
+
@modify_files = []
|
34
36
|
super
|
35
37
|
end
|
36
38
|
|
37
39
|
def run
|
38
40
|
update_source_file
|
41
|
+
print_info
|
39
42
|
end
|
40
43
|
|
41
44
|
def update_source_file
|
@@ -69,9 +72,22 @@ module Lhj
|
|
69
72
|
|
70
73
|
def format_string(file, line)
|
71
74
|
result = line
|
72
|
-
|
75
|
+
if /(\W)(#{@key})(\W)/ =~ line
|
76
|
+
result = result.gsub(/(\W)(#{@key})(\W)/, "\\1#{@other}\\3")
|
77
|
+
@modify_files << file unless @modify_files.include?(file)
|
78
|
+
end
|
73
79
|
result
|
74
80
|
end
|
81
|
+
|
82
|
+
def print_info
|
83
|
+
rows = []
|
84
|
+
@modify_files.each do |file|
|
85
|
+
rows << [File.basename(file), File.absolute_path(file)]
|
86
|
+
end
|
87
|
+
title = "修改了#{rows.count}个文件"
|
88
|
+
table = Terminal::Table.new title: title, headings: %w[文件 路径], rows: rows
|
89
|
+
puts table
|
90
|
+
end
|
75
91
|
end
|
76
92
|
end
|
77
93
|
end
|
@@ -1,17 +1,59 @@
|
|
1
|
-
|
2
1
|
module Lhj
|
3
2
|
class Command
|
4
|
-
class
|
3
|
+
class RenameImage < Command
|
4
|
+
self.summary = '重命名图片'
|
5
|
+
|
6
|
+
self.arguments = [
|
7
|
+
CLAide::Argument.new('--pre=xx', false),
|
8
|
+
CLAide::Argument.new('--name=xx', false),
|
9
|
+
CLAide::Argument.new('--other=xx', false)
|
10
|
+
]
|
11
|
+
|
12
|
+
def self.options
|
13
|
+
[
|
14
|
+
%w[--pre 图片前缀],
|
15
|
+
%w[--name 图片名称],
|
16
|
+
%w[--other 图片变化后的名称]
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
def validate!
|
21
|
+
super
|
22
|
+
help! '输入图片信息' unless @image_pre || @image_name || @image_other_name
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize(argv)
|
26
|
+
@current_path = argv.shift_argument || Dir.pwd
|
27
|
+
@image_pre = argv.option('pre')
|
28
|
+
@image_name = argv.option('name')
|
29
|
+
@image_other_name = argv.option('other')
|
30
|
+
super
|
31
|
+
end
|
32
|
+
|
5
33
|
def run
|
6
|
-
|
34
|
+
rename_image
|
7
35
|
end
|
8
36
|
|
9
|
-
def
|
10
|
-
|
11
|
-
Dir.glob("#{folder_path}/**/*.{png}").sort.each do |f|
|
37
|
+
def rename_image
|
38
|
+
Dir.glob("#{@current_path}/**/*.{png}").sort.each do |f|
|
12
39
|
filename = File.basename(f, File.extname(f))
|
13
|
-
|
40
|
+
m_filename = modify_name(filename, File.extname(f))
|
41
|
+
target = File.join(@current_path, m_filename)
|
42
|
+
File.rename(f, target)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def modify_name(file_name, extname)
|
47
|
+
name = file_name.downcase + extname
|
48
|
+
if @image_pre
|
49
|
+
name = @image_pre + file_name.downcase + extname
|
50
|
+
elsif @image_name && @image_other_name
|
51
|
+
if file_name =~ /#{@image_name}/
|
52
|
+
other_name = file_name.gsub(/#{@image_name}/, @image_other_name)
|
53
|
+
name = other_name + extname
|
54
|
+
end
|
14
55
|
end
|
56
|
+
name
|
15
57
|
end
|
16
58
|
end
|
17
59
|
end
|
data/lib/lhj/command/trans.rb
CHANGED
data/lib/lhj/command/view.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
module Lhj
|
2
2
|
class Command
|
3
3
|
class View < Command
|
4
|
-
self.summary = '
|
4
|
+
self.summary = '生成iOS组件源码'
|
5
|
+
self.description = '使用`lhj view --type=UILabel --name=titleLabel`'
|
5
6
|
|
6
7
|
def initialize(argv)
|
7
8
|
@name = argv.option('name', 'titleLabel')
|
@@ -10,24 +11,25 @@ module Lhj
|
|
10
11
|
end
|
11
12
|
|
12
13
|
def names
|
13
|
-
@name.split(
|
14
|
+
@name.split(',').map(&:strip)
|
14
15
|
end
|
15
16
|
|
16
17
|
def type
|
17
18
|
@ele_type ||= begin
|
18
|
-
|
19
|
+
case @type
|
20
|
+
when /image/i
|
19
21
|
'UIImageView'
|
20
|
-
|
22
|
+
when /stack/i
|
21
23
|
'UIStackView'
|
22
|
-
|
24
|
+
when /label/i
|
23
25
|
'UILabel'
|
24
|
-
|
26
|
+
when /table/i
|
25
27
|
'UITableView'
|
26
|
-
|
28
|
+
when /text/i
|
27
29
|
'UITextField'
|
28
|
-
|
30
|
+
when /button/i
|
29
31
|
'UIButton'
|
30
|
-
|
32
|
+
when /view/i
|
31
33
|
'UIView'
|
32
34
|
else
|
33
35
|
@type
|
@@ -47,7 +49,7 @@ module Lhj
|
|
47
49
|
|
48
50
|
def print_declare
|
49
51
|
names.each do |name|
|
50
|
-
puts
|
52
|
+
puts '///'
|
51
53
|
puts "@property (nonatomic, strong) #{type} *#{name};"
|
52
54
|
end
|
53
55
|
end
|
@@ -55,24 +57,25 @@ module Lhj
|
|
55
57
|
def print_instance
|
56
58
|
names.each do |name|
|
57
59
|
puts "-(#{type} *)#{name}"
|
58
|
-
puts
|
60
|
+
puts '{'
|
59
61
|
puts " if(!_#{name}){"
|
60
62
|
print_alloc(name)
|
61
63
|
puts " _#{name}.translatesAutoresizingMaskIntoConstraints = NO;"
|
62
64
|
print_property(name)
|
63
|
-
puts
|
65
|
+
puts ' }'
|
64
66
|
puts " return _#{name};"
|
65
|
-
puts
|
67
|
+
puts '}'
|
66
68
|
puts "\n"
|
67
69
|
end
|
68
70
|
end
|
69
71
|
|
70
72
|
def print_alloc(name)
|
71
|
-
|
73
|
+
case type
|
74
|
+
when 'UIImageView'
|
72
75
|
puts " _#{name} = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"xxxx\"]];"
|
73
|
-
|
76
|
+
when 'UIButton'
|
74
77
|
puts " _#{name} = [UIButton buttonWithType:UIButtonTypeCustom];"
|
75
|
-
|
78
|
+
when 'UITableView'
|
76
79
|
puts " _#{name} = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];"
|
77
80
|
else
|
78
81
|
puts " _#{name} = [[#{type} alloc] init];"
|
@@ -80,34 +83,35 @@ module Lhj
|
|
80
83
|
end
|
81
84
|
|
82
85
|
def print_property(name)
|
83
|
-
|
86
|
+
case type
|
87
|
+
when 'UILabel'
|
84
88
|
puts " _#{name}.textColor = kSetCOLOR(0x333333);"
|
85
89
|
puts " _#{name}.text = @\"xxxxxxxx\";"
|
86
90
|
puts " _#{name}.font = [UIFont systemFontOfSize:12.0 weight:UIFontWeightRegular];"
|
87
91
|
puts " _#{name}.textAlignment = NSTextAlignmentCenter;"
|
88
|
-
|
92
|
+
when 'UIImageView'
|
89
93
|
puts " _#{name}.backgroundColor = kBackgroundColor;"
|
90
94
|
puts " _#{name}.contentMode = UIViewContentModeScaleAspectFit;"
|
91
95
|
puts " _#{name}.clipsToBounds = YES;"
|
92
96
|
puts " _#{name}.layer.cornerRadius = 6.0f;"
|
93
97
|
puts " _#{name}.layer.borderColor = kLineColor.CGColor;"
|
94
98
|
puts " _#{name}.layer.borderWidth = 0.5;"
|
95
|
-
|
99
|
+
when 'UITextField'
|
96
100
|
puts " _#{name}.textColor = kSetCOLOR(0x333333);"
|
97
101
|
puts " _#{name}.font = [UIFont systemFontOfSize:12.0 weight:UIFontWeightRegular];"
|
98
|
-
|
102
|
+
when 'UIView'
|
99
103
|
puts " _#{name}.backgroundColor = kBackgroundColor;"
|
100
|
-
|
104
|
+
when 'UIStackView'
|
101
105
|
puts " _#{name}.axis = UILayoutConstraintAxisHorizontal;"
|
102
106
|
puts " _#{name}.distribution = UIStackViewDistributionFillEqually;"
|
103
|
-
|
107
|
+
when 'UITableView'
|
104
108
|
puts " _#{name}.backgroundColor = kBackgroundColor;"
|
105
109
|
puts " _#{name}.delegate = self;"
|
106
110
|
puts " _#{name}.delegate = self;"
|
107
111
|
puts " _#{name}.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];"
|
108
112
|
puts " _#{name}.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];"
|
109
113
|
puts " _#{name}.separatorStyle = UITableViewCellSeparatorStyleNone;"
|
110
|
-
|
114
|
+
when 'UIButton'
|
111
115
|
puts " _#{name}.backgroundColor = kBackgroundColor;"
|
112
116
|
puts " [_#{name} setTitle:@\"xxx\" forState:UIControlStateNormal];"
|
113
117
|
puts " [_#{name} setTitleColor:kSetCOLOR(0x999999) forState:UIControlStateNormal];"
|
data/lib/lhj/command/yapi.rb
CHANGED
@@ -7,6 +7,7 @@ module Lhj
|
|
7
7
|
class Command
|
8
8
|
class Yapi < Command
|
9
9
|
self.summary = '通过yapi接口生成请求'
|
10
|
+
self.description = '更新 ~/.lhj/yapi.yml 文件配置后执行`lhj api`生成接口模型'
|
10
11
|
|
11
12
|
def self.options
|
12
13
|
[
|
@@ -43,8 +44,8 @@ module Lhj
|
|
43
44
|
def test_ding
|
44
45
|
require 'net/http'
|
45
46
|
require 'uri'
|
46
|
-
body = {
|
47
|
-
Net::HTTP.post(URI('https://oapi.dingtalk.com/robot/send?access_token=6a3519057170cdb1b7274edfe43934c84a0062ffe2c9bcced434699296a7e26e'), body,
|
47
|
+
body = { 'msgtype' => 'text', 'text' => { 'content' => 'error:上传蒲公英超时失败!' } }.to_json
|
48
|
+
Net::HTTP.post(URI('https://oapi.dingtalk.com/robot/send?access_token=6a3519057170cdb1b7274edfe43934c84a0062ffe2c9bcced434699296a7e26e'), body, 'Content-Type' => 'application/json')
|
48
49
|
end
|
49
50
|
|
50
51
|
def puts_h(str)
|
@@ -178,7 +179,8 @@ module Lhj
|
|
178
179
|
p_model = { name: p_name }
|
179
180
|
|
180
181
|
properties = []
|
181
|
-
|
182
|
+
case p_type
|
183
|
+
when 'object'
|
182
184
|
p_properties.each do |k, v|
|
183
185
|
c_type = @type_trans[v['type']] || v['type']
|
184
186
|
c_model = { key: k, type: c_type, description: v['description'], default: '' }
|
@@ -186,7 +188,7 @@ module Lhj
|
|
186
188
|
o = v['items'] || v
|
187
189
|
o['name'] = gen_model_name(k)
|
188
190
|
if v['type'].eql?('array') && v['items']['type'].eql?('string')
|
189
|
-
c_model[:type_name] =
|
191
|
+
c_model[:type_name] = 'NSString'
|
190
192
|
else
|
191
193
|
c_model[:type_name] = o['name']
|
192
194
|
handle_model(o)
|
@@ -196,7 +198,7 @@ module Lhj
|
|
196
198
|
end
|
197
199
|
p_model[:properties] = properties
|
198
200
|
@models << p_model
|
199
|
-
|
201
|
+
when 'array'
|
200
202
|
t = model['items']
|
201
203
|
t['name'] = p_name
|
202
204
|
handle_model(t)
|
@@ -220,9 +222,9 @@ module Lhj
|
|
220
222
|
puts_m "@implementation #{model[:name]}"
|
221
223
|
str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('NSString') }.map { |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
|
222
224
|
if str && str.length > 0
|
223
|
-
puts_m
|
225
|
+
puts_m '+(NSDictionary *)modelContainerPropertyGenericClass {'
|
224
226
|
puts_m " return @{#{str}};"
|
225
|
-
puts_m
|
227
|
+
puts_m '}'
|
226
228
|
end
|
227
229
|
puts_m "@end\n"
|
228
230
|
puts "\n\n"
|
@@ -237,27 +239,28 @@ module Lhj
|
|
237
239
|
des.gsub!(/\n/, ' ')
|
238
240
|
default = m[:default]
|
239
241
|
puts_h "///#{des} #{default}"
|
240
|
-
|
242
|
+
case type
|
243
|
+
when 'integer'
|
241
244
|
puts_h "@property (nonatomic, assign) NSInteger #{key};"
|
242
245
|
if des.include?('分')
|
243
|
-
puts_h
|
246
|
+
puts_h '/////////==========删掉其中一个属性'
|
244
247
|
puts_h "@property (nonatomic, strong) MLCentNumber *#{key};"
|
245
248
|
end
|
246
|
-
|
249
|
+
when 'cent'
|
247
250
|
puts_h "@property (nonatomic, strong) MLCentNumber *#{key};"
|
248
|
-
|
251
|
+
when 'string'
|
249
252
|
puts_h "@property (nonatomic, copy) NSString *#{key};"
|
250
|
-
|
253
|
+
when 'number'
|
251
254
|
puts_h "@property (nonatomic, strong) NSNumber *#{key};"
|
252
|
-
|
255
|
+
when 'float'
|
253
256
|
puts_h "@property (nonatomic, assign) CGFloat #{key};"
|
254
|
-
|
257
|
+
when 'double'
|
255
258
|
puts_h "@property (nonatomic, assign) double #{key};"
|
256
|
-
|
259
|
+
when 'boolean'
|
257
260
|
puts_h "@property (nonatomic, assign) BOOL #{key};"
|
258
|
-
|
261
|
+
when 'object'
|
259
262
|
puts_h "@property (nonatomic, strong) #{type_name} *#{key};"
|
260
|
-
|
263
|
+
when 'array'
|
261
264
|
puts_h "@property (nonatomic, strong) NSArray<#{type_name} *> *#{key};"
|
262
265
|
else
|
263
266
|
puts_h "@property (nonatomic, copy) NSString *#{key};"
|
@@ -266,36 +269,36 @@ module Lhj
|
|
266
269
|
|
267
270
|
def print_methods
|
268
271
|
puts "\n<===============方法调用=====================>\n"
|
269
|
-
puts_m
|
272
|
+
puts_m '/**'
|
270
273
|
puts_m " * #{@data_json['title']} -- #{@data_json['username']}"
|
271
|
-
puts_m
|
274
|
+
puts_m ' */'
|
272
275
|
key_str = @data_json['path'].split('/').map { |s| s.gsub(/[^A-Za-z0-9]/, '').gsub(/^\w/) { $&.upcase } }.join('')
|
273
276
|
key = "k#{key_str}URL"
|
274
277
|
puts_m "static NSString * const #{key} = @\"#{@data_json['path']}\";"
|
275
278
|
puts_m "\n\n"
|
276
|
-
puts_h
|
279
|
+
puts_h '@interface MLParamModel : NSObject'
|
277
280
|
@data_json['req_query'].each do |h|
|
278
281
|
des = h['desc']
|
279
282
|
puts_h "///#{des} #{h['example']}"
|
280
283
|
puts_h "@property (nonatomic, copy) NSString *#{h['name']};"
|
281
284
|
end
|
282
|
-
puts_h
|
285
|
+
puts_h '@end'
|
283
286
|
puts "\n\n"
|
284
287
|
model = @models.last
|
285
288
|
if @data_json['method'].eql?('GET')
|
286
289
|
puts_m " [MLNetworkingManager getWithUrl:#{key} params:nil response:^(MLResponseMessage *responseMessage) {"
|
287
|
-
puts_m
|
288
|
-
puts_m
|
290
|
+
puts_m ' if (response.resultCode == 0 && !response.error){'
|
291
|
+
puts_m ' NSDictionary *detailMsg = response.detailMsg'
|
289
292
|
puts_m " #{model[:name]} *model = [#{model[:name]} yy_modelWithDictionary:detailMsg];" if model
|
290
|
-
puts_m
|
291
|
-
puts_m
|
293
|
+
puts_m ' }'
|
294
|
+
puts_m ' }];'
|
292
295
|
else
|
293
296
|
puts_m " [MLNetworkingManager postWithUrl:#{key} params:nil response:^(MLResponseMessage *responseMessage) {"
|
294
|
-
puts_m
|
295
|
-
puts_m
|
297
|
+
puts_m ' if (response.resultCode == 0 && !response.error){'
|
298
|
+
puts_m ' NSDictionary *detailMsg = response.detailMsg'
|
296
299
|
puts_m " #{model[:name]} *model = [#{model[:name]} yy_modelWithDictionary:detailMsg];" if model
|
297
|
-
puts_m
|
298
|
-
puts_m
|
300
|
+
puts_m ' }'
|
301
|
+
puts_m ' }];'
|
299
302
|
end
|
300
303
|
end
|
301
304
|
end
|
data/lib/lhj/command.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'claide'
|
2
|
+
require "tty-spinner"
|
2
3
|
|
3
4
|
module Lhj
|
5
|
+
# command plugin
|
4
6
|
class Command < CLAide::Command
|
5
7
|
require 'lhj/command/init'
|
6
8
|
require 'lhj/command/head_import'
|
@@ -10,6 +12,7 @@ module Lhj
|
|
10
12
|
require 'lhj/command/local/local'
|
11
13
|
require 'lhj/command/local/micro_service'
|
12
14
|
require 'lhj/command/local/local_upload'
|
15
|
+
require 'lhj/command/oss'
|
13
16
|
require 'lhj/command/oss/del'
|
14
17
|
require 'lhj/command/oss/upload'
|
15
18
|
require 'lhj/command/oss/list'
|
@@ -20,5 +23,19 @@ module Lhj
|
|
20
23
|
|
21
24
|
self.abstract_command = true
|
22
25
|
self.command = 'lhj'
|
26
|
+
|
27
|
+
def spinner
|
28
|
+
@spinner ||= TTY::Spinner.new('[:spinner]正在处理...', output: $stdout, format: :dots)
|
29
|
+
end
|
30
|
+
|
31
|
+
def auto_spin
|
32
|
+
spinner.auto_spin
|
33
|
+
puts "\n"
|
34
|
+
end
|
35
|
+
|
36
|
+
def stop
|
37
|
+
spinner.stop('Done!')
|
38
|
+
end
|
39
|
+
|
23
40
|
end
|
24
|
-
end
|
41
|
+
end
|