lhj-tools 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lhj/action/sh_helper.rb +138 -0
- data/lib/lhj/command/config/info.rb +47 -0
- data/lib/lhj/command/config.rb +11 -0
- data/lib/lhj/command/file_path.rb +20 -0
- data/lib/lhj/command/head_import.rb +19 -3
- data/lib/lhj/command/http.rb +14 -0
- data/lib/lhj/command/init.rb +1 -3
- data/lib/lhj/command/local/fetch.rb +1 -1
- data/lib/lhj/command/local/filter.rb +1 -1
- data/lib/lhj/command/local/local.rb +1 -1
- data/lib/lhj/command/local/local_upload.rb +1 -1
- data/lib/lhj/command/local/micro_service.rb +1 -1
- data/lib/lhj/command/oss/del.rb +1 -1
- data/lib/lhj/command/oss/list.rb +1 -1
- data/lib/lhj/command/oss/upload.rb +1 -1
- data/lib/lhj/command/refactor_rename.rb +1 -1
- data/lib/lhj/command/rename_image.rb +1 -1
- data/lib/lhj/command/sync_pod_repo.rb +138 -0
- data/lib/lhj/command/trans.rb +1 -1
- data/lib/lhj/command/yapi.rb +15 -14
- data/lib/lhj/command.rb +25 -7
- data/lib/lhj/tools/version.rb +1 -1
- data/lib/lhj/tools.rb +1 -0
- data/lib/lhj/tree/hash_walker.rb +1 -1
- data/lib/lhj/tree/path_walker.rb +1 -2
- data/lib/lhj/tree/tree.rb +5 -5
- data/lib/lhj/ui/errors/lhj_common_error.rb +19 -0
- data/lib/lhj/ui/errors/lhj_crash.rb +11 -0
- data/lib/lhj/ui/errors/lhj_error.rb +25 -0
- data/lib/lhj/ui/errors/lhj_exception.rb +19 -0
- data/lib/lhj/ui/errors/lhj_shell_error.rb +11 -0
- data/lib/lhj/ui/errors.rb +1 -0
- data/lib/lhj/ui/implementations/shell.rb +148 -0
- data/lib/lhj/ui/interface.rb +205 -0
- data/lib/lhj/ui/ui.rb +26 -0
- metadata +51 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc16cb199d5effe6c4e343846614075ce57b187a5ffc94029018b6aba9984806
|
4
|
+
data.tar.gz: 95f135ea8bc7b9149ca8c0038ddd8b385e0d56b6ff5f19f8da871c844ff5bae1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0738172f4def843dfd49872dabb456db63dec9a1f92b335dfa5fd027cbba51077890f0e693349d08b9cb91b020506fae1fd3676aa32b00d14d0d074d80331a4a'
|
7
|
+
data.tar.gz: 5b835d1c230e54377d9fa2c8ad9a847b00c37fa57a5737d60fbdf6834a1925f84033f58f429671cef50e57319e39ed18c8662bdfdd9141d403e5e72371394d8e
|
@@ -0,0 +1,138 @@
|
|
1
|
+
require "open3"
|
2
|
+
|
3
|
+
module Lhj
|
4
|
+
module Actions
|
5
|
+
# Execute a shell command
|
6
|
+
# This method will output the string and execute it
|
7
|
+
# Just an alias for sh_no_action
|
8
|
+
# When running this in tests, it will return the actual command instead of executing it
|
9
|
+
# @param log [Boolean] should fastlane print out the executed command
|
10
|
+
# @param error_callback [Block] a callback invoked with the command output if there is a non-zero exit status
|
11
|
+
def self.sh(*command, log: true, error_callback: nil, &b)
|
12
|
+
sh_control_output(*command, print_command: log, print_command_output: log, error_callback: error_callback, &b)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.sh_no_action(*command, log: true, error_callback: nil, &b)
|
16
|
+
sh_control_output(*command, print_command: log, print_command_output: log, error_callback: error_callback, &b)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.sh_enabled?
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
# @param command The command to be executed (variadic)
|
24
|
+
# @param print_command [Boolean] Should we print the command that's being executed
|
25
|
+
# @param print_command_output [Boolean] Should we print the command output during execution
|
26
|
+
# @param error_callback [Block] A block that's called if the command exits with a non-zero status
|
27
|
+
# @yield [status, result, cmd] The return status of the command, all output from the command and an equivalent shell command
|
28
|
+
# @yieldparam [Process::Status] status A Process::Status indicating the status of the completed command
|
29
|
+
# @yieldparam [String] result The complete output to stdout and stderr of the completed command
|
30
|
+
# @yieldparam [String] cmd A shell command equivalent to the arguments passed
|
31
|
+
# rubocop: disable Metrics/PerceivedComplexity
|
32
|
+
def self.sh_control_output(*command, print_command: true, print_command_output: true, error_callback: nil)
|
33
|
+
print_command = print_command_output = true if $troubleshoot
|
34
|
+
# Set the encoding first, the user might have set it wrong
|
35
|
+
previous_encoding = [Encoding.default_external, Encoding.default_internal]
|
36
|
+
Encoding.default_external = Encoding::UTF_8
|
37
|
+
Encoding.default_internal = Encoding::UTF_8
|
38
|
+
|
39
|
+
# Workaround to support previous Fastlane syntax.
|
40
|
+
# This has some limitations. For example, it requires the caller to shell escape
|
41
|
+
# everything because of usages like ["ls -la", "/tmp"] instead of ["ls", "-la", "/tmp"].
|
42
|
+
command = [command.first.join(" ")] if command.length == 1 && command.first.kind_of?(Array)
|
43
|
+
|
44
|
+
shell_command = shell_command_from_args(*command)
|
45
|
+
UI.command(shell_command) if print_command
|
46
|
+
|
47
|
+
result = ''
|
48
|
+
exit_status = nil
|
49
|
+
if sh_enabled?
|
50
|
+
# The argument list is passed directly to Open3.popen2e, which
|
51
|
+
# handles the variadic argument list in the same way as Kernel#spawn.
|
52
|
+
# (http://ruby-doc.org/core-2.4.2/Kernel.html#method-i-spawn) or
|
53
|
+
# Process.spawn (http://ruby-doc.org/core-2.4.2/Process.html#method-c-spawn).
|
54
|
+
#
|
55
|
+
# sh "ls -la /Applications/Xcode\ 7.3.1.app"
|
56
|
+
# sh "ls", "-la", "/Applications/Xcode 7.3.1.app"
|
57
|
+
# sh({ "FOO" => "Hello" }, "echo $FOO")
|
58
|
+
Open3.popen2e(*command) do |stdin, io, thread|
|
59
|
+
io.sync = true
|
60
|
+
io.each do |line|
|
61
|
+
UI.command_output(line.strip) if print_command_output
|
62
|
+
result << line
|
63
|
+
end
|
64
|
+
exit_status = thread.value
|
65
|
+
end
|
66
|
+
|
67
|
+
# Checking Process::Status#exitstatus instead of #success? makes for more
|
68
|
+
# testable code. (Tests mock exitstatus only.) This is also consistent
|
69
|
+
# with previous implementations of sh and... probably portable to all
|
70
|
+
# relevant platforms.
|
71
|
+
if exit_status.exitstatus != 0
|
72
|
+
message = if print_command
|
73
|
+
"Exit status of command '#{shell_command}' was #{exit_status.exitstatus} instead of 0."
|
74
|
+
else
|
75
|
+
"Shell command exited with exit status #{exit_status.exitstatus} instead of 0."
|
76
|
+
end
|
77
|
+
message += "\n#{result}" if print_command_output
|
78
|
+
|
79
|
+
if error_callback || block_given?
|
80
|
+
UI.error(message)
|
81
|
+
# block notified below, on success or failure
|
82
|
+
error_callback && error_callback.call(result)
|
83
|
+
else
|
84
|
+
UI.shell_error!(message)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
else
|
88
|
+
result << shell_command # only for the tests
|
89
|
+
end
|
90
|
+
|
91
|
+
if block_given?
|
92
|
+
# Avoid yielding nil in tests. $? will be meaningless, but calls to
|
93
|
+
# it will not crash. There is no Process::Status.new. The alternative
|
94
|
+
# is to move this inside the sh_enabled? check and not yield in tests.
|
95
|
+
return yield(exit_status || $?, result, shell_command)
|
96
|
+
end
|
97
|
+
result
|
98
|
+
rescue => ex
|
99
|
+
raise ex
|
100
|
+
ensure
|
101
|
+
Encoding.default_external = previous_encoding.first
|
102
|
+
Encoding.default_internal = previous_encoding.last
|
103
|
+
end
|
104
|
+
# rubocop: enable Metrics/PerceivedComplexity
|
105
|
+
|
106
|
+
# Used to produce a shell command string from a list of arguments that may
|
107
|
+
# be passed to methods such as Kernel#system, Kernel#spawn and Open3.popen2e
|
108
|
+
# in order to print the command to the terminal. The same *args are passed
|
109
|
+
# directly to a system call (Open3.popen2e). This interpretation is not
|
110
|
+
# used when executing a command.
|
111
|
+
#
|
112
|
+
# @param args Any number of arguments used to construct a command
|
113
|
+
# @raise [ArgumentError] If no arguments passed
|
114
|
+
# @return [String] A shell command representing the arguments passed in
|
115
|
+
def self.shell_command_from_args(*args)
|
116
|
+
raise ArgumentError, "sh requires at least one argument" unless args.count > 0
|
117
|
+
|
118
|
+
command = ""
|
119
|
+
|
120
|
+
# Optional initial environment Hash
|
121
|
+
if args.first.kind_of?(Hash)
|
122
|
+
command = args.shift.map { |k, v| "#{k}=#{v.shellescape}" }.join(" ") + " "
|
123
|
+
end
|
124
|
+
|
125
|
+
# Support [ "/usr/local/bin/foo", "foo" ], "-x", ...
|
126
|
+
if args.first.kind_of?(Array)
|
127
|
+
command += args.shift.first.shellescape + " " + args.shelljoin
|
128
|
+
command.chomp!(" ")
|
129
|
+
elsif args.count == 1 && args.first.kind_of?(String)
|
130
|
+
command += args.first
|
131
|
+
else
|
132
|
+
command += args.shelljoin
|
133
|
+
end
|
134
|
+
|
135
|
+
command
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'highline'
|
2
|
+
require 'lhj/config'
|
3
|
+
|
4
|
+
module Lhj
|
5
|
+
class Command
|
6
|
+
class Config < Command
|
7
|
+
# show config info
|
8
|
+
class Info < Config
|
9
|
+
self.summary = '查看配置信息'
|
10
|
+
|
11
|
+
def initialize(argv)
|
12
|
+
@cli = HighLine.new
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def handle
|
17
|
+
show_config
|
18
|
+
end
|
19
|
+
|
20
|
+
def show_config
|
21
|
+
config_arr = Dir.glob("#{config_dir}/**/*.yml")
|
22
|
+
config_arr.each_index { |i| puts "#{i}.#{File.basename(config_arr[i])}".yellow }
|
23
|
+
idx = ask_which_one
|
24
|
+
config_file = config_arr[idx]
|
25
|
+
show_yaml(config_file)
|
26
|
+
end
|
27
|
+
|
28
|
+
def show_yaml(file)
|
29
|
+
table_rows = []
|
30
|
+
yaml = YAML.load_file(file)
|
31
|
+
yaml.each { |key, value| table_rows << [key, value] }
|
32
|
+
title = File.basename(file).to_s
|
33
|
+
table = Terminal::Table.new title: title, headings: %w[键 值], rows: table_rows
|
34
|
+
puts table
|
35
|
+
end
|
36
|
+
|
37
|
+
def ask_which_one
|
38
|
+
@cli.ask('查看哪个配置: '.green).strip.to_i
|
39
|
+
end
|
40
|
+
|
41
|
+
def config_dir
|
42
|
+
Lhj::Config.instance.home_dir
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'lhj/tree/tree'
|
2
|
+
|
3
|
+
module Lhj
|
4
|
+
class Command
|
5
|
+
# show file path
|
6
|
+
class Filepath < Command
|
7
|
+
self.summary = '显示文件目录'
|
8
|
+
|
9
|
+
def initialize(argv)
|
10
|
+
@current_path = argv.shift_argument || Dir.pwd
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def handle
|
15
|
+
tree = Lhj::Tree.new(@current_path)
|
16
|
+
puts tree.render
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -5,7 +5,8 @@ require 'fileutils'
|
|
5
5
|
|
6
6
|
module Lhj
|
7
7
|
class Command
|
8
|
-
|
8
|
+
# modify header
|
9
|
+
class HeaderImport < Command
|
9
10
|
self.summary = '更改头文件引入'
|
10
11
|
|
11
12
|
def initialize(argv)
|
@@ -13,14 +14,16 @@ module Lhj
|
|
13
14
|
@framework = argv.option('framework')
|
14
15
|
@header_map = {}
|
15
16
|
@header_folder_map = {}
|
17
|
+
@modify_files = []
|
16
18
|
super
|
17
19
|
end
|
18
20
|
|
19
|
-
def
|
21
|
+
def handle
|
20
22
|
generate_header_map
|
21
23
|
# say_header_map
|
22
24
|
# find_all_sub_folder
|
23
25
|
update_source_header
|
26
|
+
# print_modify_info
|
24
27
|
end
|
25
28
|
|
26
29
|
# @return [@header_map]
|
@@ -109,7 +112,10 @@ module Lhj
|
|
109
112
|
result = line
|
110
113
|
if line =~ /#import/
|
111
114
|
ma = find_head_key(line)
|
112
|
-
|
115
|
+
if ma && !exist_in_file(file, ma[0])
|
116
|
+
result = line.gsub(ma[0], @header_map[ma[0].to_sym] || ma[0])
|
117
|
+
# @modify_files << file unless @modify_files.include?(file)
|
118
|
+
end
|
113
119
|
end
|
114
120
|
result
|
115
121
|
end
|
@@ -123,6 +129,16 @@ module Lhj
|
|
123
129
|
header_reg = /"\D*.h"/
|
124
130
|
line.match(header_reg)
|
125
131
|
end
|
132
|
+
|
133
|
+
def print_modify_info
|
134
|
+
rows = []
|
135
|
+
@modify_files.each do |file|
|
136
|
+
rows << [File.basename(file), File.absolute_path(file)]
|
137
|
+
end
|
138
|
+
title = "修改了#{rows.count}个文件"
|
139
|
+
table = Terminal::Table.new title: title, headings: %w[文件 路径], rows: rows
|
140
|
+
puts table
|
141
|
+
end
|
126
142
|
end
|
127
143
|
end
|
128
144
|
end
|
data/lib/lhj/command/init.rb
CHANGED
data/lib/lhj/command/oss/del.rb
CHANGED
data/lib/lhj/command/oss/list.rb
CHANGED
@@ -0,0 +1,138 @@
|
|
1
|
+
require 'lhj/config'
|
2
|
+
require 'highline'
|
3
|
+
|
4
|
+
module Lhj
|
5
|
+
class Command
|
6
|
+
# sync code to pod
|
7
|
+
class SyncPod < Command
|
8
|
+
self.summary = '同步代码到私用仓库'
|
9
|
+
|
10
|
+
def initialize(argv)
|
11
|
+
@cli = HighLine.new
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
def handle
|
16
|
+
sync
|
17
|
+
end
|
18
|
+
|
19
|
+
def sync
|
20
|
+
config_file = File.join(Lhj::Config.instance.home_dir, 'pod_config.yml')
|
21
|
+
arr = YAML.load_file(config_file)
|
22
|
+
arr.each_index { |i| puts "#{i}.#{arr[i]['pod']}".yellow }
|
23
|
+
idx = @cli.ask('请选择哪一个库同步: '.green).strip.to_i
|
24
|
+
pod_name = arr[idx]['pod']
|
25
|
+
src = arr[idx]['main_path']
|
26
|
+
dest = arr[idx]['pod_path']
|
27
|
+
FileUtils.cp_r(src, dest, remove_destination: true)
|
28
|
+
puts '1.从主工程复制代码到pod库成功'.green
|
29
|
+
|
30
|
+
ma = nil
|
31
|
+
Dir.chdir(dest) do
|
32
|
+
Dir.glob("*.podspec").each do |p|
|
33
|
+
update_podspec_version(p)
|
34
|
+
version_line = IO.readlines(p).find{ |line| (/\.version/ =~ line) && (version_regex =~ line) }
|
35
|
+
ma = version_line.match(version_regex)
|
36
|
+
end
|
37
|
+
puts '2.更新版本号成功'.green
|
38
|
+
|
39
|
+
Actions.sh("git add .")
|
40
|
+
puts '3.git add成功'.green
|
41
|
+
|
42
|
+
Actions.sh("git commit -m '同步主工程代码by fastlane'")
|
43
|
+
puts '4.git 提交成功'.green
|
44
|
+
|
45
|
+
Actions.sh("git push")
|
46
|
+
puts '5.git 推送成功'.green
|
47
|
+
|
48
|
+
add_tag(ma[0]) if ma
|
49
|
+
puts "6.设置tag成功! tag号:#{ma[0]}".green
|
50
|
+
|
51
|
+
push_tag
|
52
|
+
puts '7.推送tag成功'.green
|
53
|
+
|
54
|
+
update_pod_repo
|
55
|
+
puts "8.#{pod_name}推送pod repo成功".green
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
if ma
|
60
|
+
pod_version = ma[0]
|
61
|
+
update_all_pod_dependency(pod_name, pod_version)
|
62
|
+
puts '9.更新主工程引用pod版本号成功'.green
|
63
|
+
end
|
64
|
+
|
65
|
+
puts '10.手动执行`pod update --verbose --no-repo-update`更新pod'.green
|
66
|
+
end
|
67
|
+
|
68
|
+
def version_regex
|
69
|
+
/\d+\.\d+\.(\d+)/
|
70
|
+
end
|
71
|
+
|
72
|
+
def update_podspec_version(path)
|
73
|
+
str = ''
|
74
|
+
File.readlines(path).each do |l|
|
75
|
+
if (/\.version/ =~ l) && (version_regex =~ l)
|
76
|
+
last_version = l.scan(version_regex).flatten.first
|
77
|
+
next_version = last_version.to_i + 1
|
78
|
+
next_version_str = next_version.to_s
|
79
|
+
str += l.gsub(/(\d+\.\d+\.)(\d+)/, '\1' + next_version_str)
|
80
|
+
else
|
81
|
+
str += l.dup
|
82
|
+
end
|
83
|
+
end
|
84
|
+
File.write(path, str)
|
85
|
+
end
|
86
|
+
|
87
|
+
def add_tag(tag)
|
88
|
+
cmd = ['git tag']
|
89
|
+
cmd << '--force'
|
90
|
+
cmd << tag
|
91
|
+
UI.message("Adding git tag '#{tag}' 🎯.")
|
92
|
+
Actions.sh(cmd.join(' '))
|
93
|
+
end
|
94
|
+
|
95
|
+
def push_tag
|
96
|
+
cmd = ['git push --tags']
|
97
|
+
UI.message("git push --tags 🎯.")
|
98
|
+
Actions.sh(cmd.join(' '))
|
99
|
+
end
|
100
|
+
|
101
|
+
def update_pod_repo
|
102
|
+
# pod repo push miguatech-aomi_ios-mlspecs *.podspec --sources=miguatech-aomi_ios-mlspecs,aliyun,trunk --allow-warnings --use-libraries --verbose
|
103
|
+
cmd = ['pod repo push']
|
104
|
+
pod_repo_name = 'miguatech-aomi_ios-mlspecs'
|
105
|
+
cmd << pod_repo_name
|
106
|
+
cmd << "*.podspec"
|
107
|
+
cmd << "--sources=#{pod_repo_name},aliyun,trunk"
|
108
|
+
cmd << "--allow-warnings"
|
109
|
+
cmd << "--use-libraries"
|
110
|
+
cmd << "--verbose"
|
111
|
+
Actions.sh(cmd.join(' '), log: true, error_callback: nil)
|
112
|
+
end
|
113
|
+
|
114
|
+
def update_all_pod_dependency(pod_name, pod_version)
|
115
|
+
Dir.glob(["./**/*.podspec", "./**/Podfile"]).each do |p|
|
116
|
+
unless /Example/ =~ p
|
117
|
+
puts "更新文件:#{p}".magenta
|
118
|
+
update_main_proj_podspec_version(p, pod_name, pod_version)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def update_main_proj_podspec_version(path, pod_name, pod_version)
|
124
|
+
cont = ''
|
125
|
+
File.readlines(path).each do |l|
|
126
|
+
if (/#{pod_name}/ =~ l) && (/\d+\.\d+\.\d+/ =~ l)
|
127
|
+
l.scan(/\d+\.\d+\.\d+/).each do |key|
|
128
|
+
cont += l.gsub(key, pod_version)
|
129
|
+
end
|
130
|
+
else
|
131
|
+
cont += l.dup
|
132
|
+
end
|
133
|
+
end
|
134
|
+
File.write(path, cont)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
data/lib/lhj/command/trans.rb
CHANGED
data/lib/lhj/command/yapi.rb
CHANGED
@@ -5,6 +5,7 @@ require 'yaml'
|
|
5
5
|
|
6
6
|
module Lhj
|
7
7
|
class Command
|
8
|
+
# generate model from yapi
|
8
9
|
class Yapi < Command
|
9
10
|
self.summary = '通过yapi接口生成请求'
|
10
11
|
self.description = '更新 ~/.lhj/yapi.yml 文件配置后执行`lhj api`生成接口模型'
|
@@ -34,7 +35,7 @@ module Lhj
|
|
34
35
|
super
|
35
36
|
end
|
36
37
|
|
37
|
-
def
|
38
|
+
def handle
|
38
39
|
load_config
|
39
40
|
fetch_model
|
40
41
|
print_methods
|
@@ -49,13 +50,13 @@ module Lhj
|
|
49
50
|
end
|
50
51
|
|
51
52
|
def puts_h(str)
|
52
|
-
puts str
|
53
|
+
puts str.magenta
|
53
54
|
@h_file_array ||= []
|
54
55
|
@h_file_array << str
|
55
56
|
end
|
56
57
|
|
57
58
|
def puts_m(str)
|
58
|
-
puts str
|
59
|
+
puts str.blue
|
59
60
|
@m_file_array ||= []
|
60
61
|
@m_file_array << str
|
61
62
|
end
|
@@ -65,9 +66,9 @@ module Lhj
|
|
65
66
|
file_name = gen_model_name('')
|
66
67
|
h_file = File.join('.', "#{file_name}.h")
|
67
68
|
m_file = File.join('.', "#{file_name}.m")
|
68
|
-
File.write(h_file, @h_file_array.join("\n")) if @h_file_array.count
|
69
|
-
File.write(m_file, @m_file_array.join("\n")) if @m_file_array.count
|
70
|
-
puts "\n\n生成文件成功!所在路径:\n#{File.expand_path(h_file)} \n#{File.expand_path(m_file)}"
|
69
|
+
File.write(h_file, @h_file_array.join("\n")) if @h_file_array.count.positive?
|
70
|
+
File.write(m_file, @m_file_array.join("\n")) if @m_file_array.count.positive?
|
71
|
+
puts "\n\n生成文件成功!所在路径:\n#{File.expand_path(h_file)} \n#{File.expand_path(m_file)}".green
|
71
72
|
end
|
72
73
|
|
73
74
|
def url_str
|
@@ -78,7 +79,7 @@ module Lhj
|
|
78
79
|
yml = File.join(Lhj::Config.instance.home_dir, 'yapi.yml')
|
79
80
|
config = YAML.load_file(yml)
|
80
81
|
config.each do |k, v|
|
81
|
-
@http_headers << "#{k}=#{v}" if
|
82
|
+
@http_headers << "#{k}=#{v}" if k.eql?('__wpkreporterwid_') || k.eql?('_yapi_token') || k.eql?('_yapi_uid')
|
82
83
|
end
|
83
84
|
@http_url = config['url']
|
84
85
|
@config_id = config['id']
|
@@ -107,27 +108,27 @@ module Lhj
|
|
107
108
|
res = Net::HTTP.start(uri.hostname, uri.port) do |http|
|
108
109
|
http.request(req)
|
109
110
|
end
|
110
|
-
puts res.body
|
111
|
+
puts res.body unless res.body['errcode'].to_i.zero?
|
111
112
|
JSON.parse(res.body)
|
112
113
|
end
|
113
114
|
|
114
115
|
def fetch_model
|
115
116
|
res_json = req_model
|
116
117
|
begin
|
117
|
-
puts "\n<===============打印返回数据模型-Begin=====================>\n"
|
118
|
+
puts "\n<===============打印返回数据模型-Begin=====================>\n".green
|
118
119
|
fetch_res_boy(res_json)
|
119
120
|
print_models
|
120
121
|
print_models_implementation
|
121
|
-
puts "\n<===============打印返回数据模型-End=====================>\n"
|
122
|
+
puts "\n<===============打印返回数据模型-End=====================>\n".green
|
122
123
|
end
|
123
124
|
begin
|
124
|
-
puts "\n<===============打印请求模型-Begin=====================>\n"
|
125
|
+
puts "\n<===============打印请求模型-Begin=====================>\n".green
|
125
126
|
@models = []
|
126
127
|
@model_names = []
|
127
128
|
fetch_req_body(res_json)
|
128
129
|
print_models
|
129
130
|
print_models_implementation
|
130
|
-
puts "\n<===============打印请求模型-End=====================>\n"
|
131
|
+
puts "\n<===============打印请求模型-End=====================>\n".green
|
131
132
|
end
|
132
133
|
end
|
133
134
|
|
@@ -221,7 +222,7 @@ module Lhj
|
|
221
222
|
@models.each do |model|
|
222
223
|
puts_m "@implementation #{model[:name]}"
|
223
224
|
str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('NSString') }.map { |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
|
224
|
-
if str && str.length
|
225
|
+
if str && str.length.positive?
|
225
226
|
puts_m '+(NSDictionary *)modelContainerPropertyGenericClass {'
|
226
227
|
puts_m " return @{#{str}};"
|
227
228
|
puts_m '}'
|
@@ -268,7 +269,7 @@ module Lhj
|
|
268
269
|
end
|
269
270
|
|
270
271
|
def print_methods
|
271
|
-
puts "\n<===============方法调用=====================>\n"
|
272
|
+
puts "\n<===============方法调用=====================>\n".green
|
272
273
|
puts_m '/**'
|
273
274
|
puts_m " * #{@data_json['title']} -- #{@data_json['username']}"
|
274
275
|
puts_m ' */'
|