cocoapods-ykutility 0.0.12 → 0.0.14
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/cocoapods-ykutility/command/Ykutility.rb +2 -1
- data/lib/cocoapods-ykutility/{function → command/create}/yk_create_pod_action.rb +43 -4
- data/lib/cocoapods-ykutility/{function → command/create}/yk_create_pod_config.rb +2 -1
- data/lib/cocoapods-ykutility/{function → command/create}/yk_exchange_tool.rb +1 -1
- data/lib/cocoapods-ykutility/command/{ykutility/create.rb → create.rb} +4 -2
- data/lib/cocoapods-ykutility/command/push/yk_api_analysis.rb +81 -0
- data/lib/cocoapods-ykutility/command/push/yk_api_parse.rb +68 -0
- data/lib/cocoapods-ykutility/command/push/yk_git_manager.rb +87 -0
- data/lib/cocoapods-ykutility/command/push.rb +102 -0
- data/lib/cocoapods-ykutility/gem_version.rb +2 -1
- data/lib/cocoapods-ykutility/{function → tools}/yk_log_tool.rb +8 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.pbxproj +2 -2
- data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.xcworkspace/xcuserdata/imac24inch.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterRouter.h +16 -0
- data/podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterRouter.m +27 -0
- data/podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterService.h +15 -0
- data/podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterService.m +27 -0
- data/podTemplate/register/swift/YKRPC_POD_NAME/Private/.gitkeep +0 -0
- data/podTemplate/register/swift/YKRPC_POD_NAME/Private/register/YKRPC_POD_NAMERegisterRouter.swift +19 -0
- data/podTemplate/register/swift/YKRPC_POD_NAME/Private/register/YKRPC_POD_NAMERegisterService.swift +20 -0
- metadata +79 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15081082459e430368dd8dbfae737c373a8086d6b96bcb7e22ffcb7ca7d66083
|
4
|
+
data.tar.gz: a9c819d9272170f5bbc3b56650b419c1c888bd596609ce9d56772c48a4f80ffa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51c259c1c7939808a97479a8e61ba2e151ef7c9889617e7274bd279d7455f83847eca0cdccb708df2c644e5b2baff3143b9a3c84cd6a46ed68921f7553ac79a8
|
7
|
+
data.tar.gz: 17be23b7e5c19fdfb5a941eeecc3ae6f85b37de746447d281b2d15396e8212b2a0a317968c4f324d1380d4a1f98a6706cfd8c7ae222ea3f9481a6832a0731e06
|
@@ -4,13 +4,13 @@ module YKPod
|
|
4
4
|
require 'cocoapods'
|
5
5
|
|
6
6
|
class YKCreate
|
7
|
-
require 'cocoapods-ykutility/
|
8
|
-
require 'cocoapods-ykutility/
|
7
|
+
require 'cocoapods-ykutility/command/create/yk_create_pod_config'
|
8
|
+
require 'cocoapods-ykutility/tools/yk_log_tool'
|
9
9
|
require 'find'
|
10
10
|
include YKPod::YKLogTool
|
11
11
|
|
12
12
|
require 'cocoapods-ykutility/gem_version'
|
13
|
-
require 'cocoapods-ykutility/
|
13
|
+
require 'cocoapods-ykutility/command/create/yk_exchange_tool'
|
14
14
|
include YKPod::YKExchangeTool
|
15
15
|
|
16
16
|
def initialize(conf)
|
@@ -26,6 +26,7 @@ module YKPod
|
|
26
26
|
|
27
27
|
@template_pod_path = File.join(CocoapodsYkPodUtility::YK_POD_TEMPLATE_PATH, @config.language)
|
28
28
|
@template_example_path = File.join(CocoapodsYkPodUtility::YK_POD_TEMPLATE_PATH, "example")
|
29
|
+
@register_pod_path = File.join(CocoapodsYkPodUtility::YK_POD_BUSINESS_REGISTER_PATH, @config.language)
|
29
30
|
|
30
31
|
time_str = Time.now.strftime("%Y/%m/%d")
|
31
32
|
year_str = Time.now.strftime("%Y")
|
@@ -46,7 +47,7 @@ module YKPod
|
|
46
47
|
code = create_path
|
47
48
|
exit!(code) unless code == 0
|
48
49
|
|
49
|
-
code = create_pod
|
50
|
+
code = create_pod()
|
50
51
|
exit!(code) unless code == 0
|
51
52
|
|
52
53
|
if @config.with_demo
|
@@ -73,6 +74,7 @@ module YKPod
|
|
73
74
|
pod_dir_cache = File.join(@project_dir_dest, "#{@config.prefix_name}_cache")
|
74
75
|
pod_dir_dest = File.join(@project_dir_dest)
|
75
76
|
FileUtils.copy_entry(@template_pod_path, pod_dir_cache)
|
77
|
+
prepare_business_pod_files(pod_dir_cache)
|
76
78
|
|
77
79
|
# 改文件夹
|
78
80
|
file_arr = updateFileDirs(pod_dir_cache, 'YKRPC_POD_NAME',@config.prefix_name)
|
@@ -85,11 +87,35 @@ module YKPod
|
|
85
87
|
return 0
|
86
88
|
end
|
87
89
|
|
90
|
+
def prepare_business_pod_files(pod_dir_cache)
|
91
|
+
return unless @config.with_register == true
|
92
|
+
FileUtils.copy_entry(@register_pod_path, pod_dir_cache)
|
93
|
+
# 添加私有依赖
|
94
|
+
spec_file_path = File.join(pod_dir_cache, "YKRPC_POD_NAME.podspec")
|
95
|
+
|
96
|
+
# 在倒数第二行插入新语句
|
97
|
+
# s.dependency "YKRouterComponent"
|
98
|
+
# s.dependency "YKModuleServiceComponent.swift" #swift 服务中间件, 如果是纯oc组件,请注释此中间件
|
99
|
+
de_router = "spec.dependency \"YKRouterComponent\"\n"
|
100
|
+
de_service = "spec.dependency \"YKModuleServiceComponent"
|
101
|
+
if @config.language == "swift"
|
102
|
+
de_service += ".swift\" #swift 服务中间件\n"
|
103
|
+
else
|
104
|
+
de_service += "\" #oc 服务中间件\n"
|
105
|
+
end
|
106
|
+
|
107
|
+
lines = File.readlines(spec_file_path)
|
108
|
+
lines.insert(-2, de_router)
|
109
|
+
lines.insert(-2, de_service)
|
110
|
+
File.open(spec_file_path, 'w') { |file| file.puts(lines.join) }
|
111
|
+
end
|
112
|
+
|
88
113
|
def create_example()
|
89
114
|
ykNotice "create example"
|
90
115
|
example_dir_cache = File.join(@project_dir_dest, "Example_cache")
|
91
116
|
|
92
117
|
FileUtils.copy_entry(@template_example_path, example_dir_cache)
|
118
|
+
prepare_business_pod_source(example_dir_cache)
|
93
119
|
|
94
120
|
# 改文件夹
|
95
121
|
file_arr = updateFileDirs(example_dir_cache, 'YKRPC_POD_NAME', @config.prefix_name)
|
@@ -103,6 +129,19 @@ module YKPod
|
|
103
129
|
return 0
|
104
130
|
end
|
105
131
|
|
132
|
+
|
133
|
+
def prepare_business_pod_source(example_dir_cache)
|
134
|
+
return unless @config.with_register == true
|
135
|
+
pod_file_cache = File.join(example_dir_cache, "podfile")
|
136
|
+
|
137
|
+
|
138
|
+
# 在第二行插入新语句
|
139
|
+
source_pri = "http://gitlab.y" + "ea" + "hk" + "a.com/App/iOS/YeahkaNativeComSpecsIndex.git"
|
140
|
+
lines = File.readlines(pod_file_cache)
|
141
|
+
lines.insert(2, "source \"#{source_pri}\"\n")
|
142
|
+
File.open(pod_file_cache, 'w') { |file| file.puts(lines.join) }
|
143
|
+
end
|
144
|
+
|
106
145
|
def pod_install
|
107
146
|
ykNotice "open project"
|
108
147
|
Dir.chdir(@example_dir_dest) do
|
@@ -3,12 +3,13 @@
|
|
3
3
|
module YKPod
|
4
4
|
|
5
5
|
class YKCreatePodConfig
|
6
|
-
attr_accessor :name, :language, :with_demo, :author, :author_email, :prefix, :path
|
6
|
+
attr_accessor :name, :language, :with_demo, :with_register, :author, :author_email, :prefix, :path
|
7
7
|
|
8
8
|
def initialize()
|
9
9
|
@name = ""
|
10
10
|
@language = ""
|
11
11
|
@with_demo = true
|
12
|
+
@with_register = false
|
12
13
|
@author = open("|git config --global user.name").gets.strip.gsub('.', '')
|
13
14
|
@author_email = open("|git config --global user.email").gets.strip
|
14
15
|
@prefix = "YK"
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module YKPod
|
4
4
|
module YKExchangeTool
|
5
|
-
require 'cocoapods-ykutility/
|
5
|
+
require 'cocoapods-ykutility/tools/yk_log_tool'
|
6
6
|
include YKPod::YKLogTool
|
7
7
|
def updateFileDirs(rootDir, keyWord, destWord)
|
8
8
|
Dir.glob("#{rootDir}/**/**/**/**").each do |name|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'cocoapods-ykutility/
|
2
|
+
require 'cocoapods-ykutility/command/create/yk_create_pod_action'
|
3
3
|
require 'cocoapods-ykutility/gem_version'
|
4
4
|
|
5
5
|
module Pod
|
6
6
|
class Command
|
7
7
|
class Ykutility < Command
|
8
8
|
|
9
|
-
require 'cocoapods-ykutility/
|
9
|
+
require 'cocoapods-ykutility/command/create/yk_create_pod_config'
|
10
10
|
class Create < Ykutility
|
11
11
|
|
12
12
|
self.summary = 'Creates a new Pod'
|
@@ -27,6 +27,7 @@ module Pod
|
|
27
27
|
['--email=EMAIL', 'Email'],
|
28
28
|
['--prefix=PREFIX', 'Prefix header'],
|
29
29
|
['--pod-path=PATH', 'Pod created at path'],
|
30
|
+
['--business', 'With service/router register template'],
|
30
31
|
].concat(super)
|
31
32
|
end
|
32
33
|
|
@@ -36,6 +37,7 @@ module Pod
|
|
36
37
|
@config.name = argv.shift_argument
|
37
38
|
@config.language = (["objc", "oc"].include? argv.option('language', "swift").downcase) ? "objc" : "swift"
|
38
39
|
@config.with_demo = !argv.flag?('no-demo', false)
|
40
|
+
@config.with_register = argv.flag?('business', false)
|
39
41
|
@config.author = argv.option('author', open("|git config --global user.name").gets).strip.gsub('.', '')
|
40
42
|
@config.author_email = argv.option('email', open("|git config --global user.email").gets).strip
|
41
43
|
@config.prefix = argv.option('prefix', "YK")
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module YKApi
|
4
|
+
class YkApiAnalysis
|
5
|
+
require 'cocoapods-ykutility/tools/yk_log_tool'
|
6
|
+
require 'cocoapods-ykutility/command/push/yk_api_parse'
|
7
|
+
|
8
|
+
require 'cocoapods'
|
9
|
+
|
10
|
+
include YKPod::YKLogTool
|
11
|
+
|
12
|
+
attr_accessor :spec_list, :pod_names, :version
|
13
|
+
def initialize(podspec_files, source_urls)
|
14
|
+
@spec_files = podspec_files
|
15
|
+
@source_urls = source_urls
|
16
|
+
|
17
|
+
@public_headers = []
|
18
|
+
@source_files = []
|
19
|
+
@swift_files = []
|
20
|
+
@pod_names = []
|
21
|
+
@version = ""
|
22
|
+
end
|
23
|
+
|
24
|
+
def execute
|
25
|
+
analysis_all_specs
|
26
|
+
analysis_api
|
27
|
+
end
|
28
|
+
|
29
|
+
def all_pod_names
|
30
|
+
"\"#{@pod_names.join(" ")}\""
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
def analysis_all_specs()
|
35
|
+
@spec_files.each do |one|
|
36
|
+
valid = Pod::Validator.new(one, @source_urls)
|
37
|
+
spec = valid.linter.spec
|
38
|
+
@version = spec.version.to_s
|
39
|
+
analysis_one_spec(spec)
|
40
|
+
end
|
41
|
+
|
42
|
+
ykMessage "all public header files:\n#{@public_headers.join("\n")}"
|
43
|
+
ykMessage "all source code files:\n#{@source_files.join("\n")}"
|
44
|
+
@swift_files = @source_files.find_all do |onePath|
|
45
|
+
onePath.extname == ".swift"
|
46
|
+
end
|
47
|
+
ykMessage "all swift files:\n#{@swift_files}"
|
48
|
+
end
|
49
|
+
|
50
|
+
def analysis_one_spec(spec)
|
51
|
+
path_list = Pod::Sandbox::PathList.new(spec.defined_in_file.dirname)
|
52
|
+
file_accessor = Pod::Sandbox::FileAccessor.new(path_list, spec.consumer(Pod::Platform.ios))
|
53
|
+
public_header_arr = file_accessor.public_headers
|
54
|
+
ykMessage("#{spec.name} --> plubic_headers:\n#{public_header_arr.join("\n")}")
|
55
|
+
@public_headers.concat(public_header_arr) unless public_header_arr.blank?
|
56
|
+
@pod_names.append(spec.name)
|
57
|
+
|
58
|
+
source_file_arr = file_accessor.source_files
|
59
|
+
ykMessage("#{spec.name} --> source_files:\n#{source_file_arr.join("\n")}")
|
60
|
+
@source_files.concat(source_file_arr) unless source_file_arr.blank?
|
61
|
+
|
62
|
+
sub_spec_arr = spec.subspecs
|
63
|
+
ykNotice "#{spec.name} has sub_specs: #{sub_spec_arr.join(",\t")}" unless sub_spec_arr.blank?
|
64
|
+
sub_spec_arr.each do |oneSub|
|
65
|
+
analysis_one_spec(oneSub)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def analysis_api
|
70
|
+
api_output_dir = File.join(Dir.pwd, "Api")
|
71
|
+
if File.exist?(api_output_dir)
|
72
|
+
FileUtils.rm_r(api_output_dir)
|
73
|
+
end
|
74
|
+
|
75
|
+
FileUtils.mkdir(api_output_dir)
|
76
|
+
analysis_success = YKApi::YkApiParser.new(@public_headers, @swift_files, api_output_dir).analysis
|
77
|
+
analysis_success
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module YKApi
|
4
|
+
class YkApiParser
|
5
|
+
|
6
|
+
require 'cocoapods-ykutility/tools/yk_log_tool'
|
7
|
+
include YKPod::YKLogTool
|
8
|
+
|
9
|
+
def initialize(objc_header_file_list, swift_file_list, output_dir)
|
10
|
+
@objc_header_files = objc_header_file_list
|
11
|
+
@swift_file_list = swift_file_list
|
12
|
+
@output_dir = output_dir
|
13
|
+
@json_cache = File.join(output_dir, "json_files_tem")
|
14
|
+
FileUtils.rm_r(@json_cache) if File.exist?(@json_cache)
|
15
|
+
FileUtils.mkdir(@json_cache)
|
16
|
+
end
|
17
|
+
|
18
|
+
def analysis
|
19
|
+
json_arr_objc = parse_objc
|
20
|
+
json_arr_swift = parse_swift
|
21
|
+
create_api(json_arr_objc, json_arr_swift)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def parse_objc
|
26
|
+
ykNotice("#{self.class} --> #{__method__}")
|
27
|
+
# sourcekitten doc --objc NSBundle+YKInternational.h -- -x objective-c -isysroot $(xcrun --show-sdk-path --sdk iphonesimulator) -fmodules > 123
|
28
|
+
cache_arr = []
|
29
|
+
@objc_header_files.each do |one|
|
30
|
+
cache_path = File.join(@json_cache, one.basename)
|
31
|
+
cmd = "sourcekitten doc --single-file --objc \"#{one}\" -- -x objective-c -isysroot $(xcrun --show-sdk-path --sdk iphonesimulator) -fmodules > \"#{cache_path}\""
|
32
|
+
ykMessage("cmd: #{cmd}")
|
33
|
+
code = system(cmd)
|
34
|
+
cache_arr.append("\"#{cache_path}\"")
|
35
|
+
end
|
36
|
+
|
37
|
+
cache_arr
|
38
|
+
end
|
39
|
+
|
40
|
+
def parse_swift
|
41
|
+
ykNotice("#{self.class} --> #{__method__}")
|
42
|
+
# sourcekitten doc --single-file $input_file -- -j4 $input_file >> $temp_outout
|
43
|
+
|
44
|
+
cache_arr = []
|
45
|
+
@swift_file_list.each do |one|
|
46
|
+
cache_path = File.join(@json_cache, one.basename)
|
47
|
+
cmd = "sourcekitten doc --single-file \"#{one}\" -- -j4 \"#{one}\" > \"#{cache_path}\""
|
48
|
+
ykNotice("cmd: #{cmd}")
|
49
|
+
code = system(cmd)
|
50
|
+
cache_arr.append("\"#{cache_path}\"")
|
51
|
+
end
|
52
|
+
|
53
|
+
cache_arr
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_api(json_objc_arr, json_swift_arr)
|
57
|
+
json_all = json_objc_arr + json_swift_arr
|
58
|
+
|
59
|
+
json_all.map
|
60
|
+
cmd = "jazzy --min-acl public --sourcekitten-sourcefile #{json_all.join(",")}"
|
61
|
+
cmd << " -o \"#{@output_dir}\""
|
62
|
+
ykMessage("cmd: \n#{cmd}")
|
63
|
+
cmd_result =system(cmd)
|
64
|
+
cmd_result
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'git'
|
4
|
+
module Git
|
5
|
+
class Base
|
6
|
+
def is_clean
|
7
|
+
cmd = "git status --short"
|
8
|
+
@cmd_out_put = []
|
9
|
+
IO.popen(cmd) do |f|
|
10
|
+
line = f.gets
|
11
|
+
@cmd_out_put << line unless line.blank?
|
12
|
+
end
|
13
|
+
|
14
|
+
@cmd_out_put.blank?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module YKUtitlityGitModule
|
20
|
+
class YKGitManager
|
21
|
+
require 'git'
|
22
|
+
require 'cocoapods-ykutility/tools/yk_log_tool'
|
23
|
+
include YKPod::YKLogTool
|
24
|
+
|
25
|
+
def initialize(dir)
|
26
|
+
@dir = dir
|
27
|
+
|
28
|
+
Dir.chdir(dir) do
|
29
|
+
@git = Git.open(Dir.pwd)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def prepare
|
34
|
+
is_clean = @git.is_clean
|
35
|
+
if is_clean == false
|
36
|
+
ykNotice("work tree dirty, work finish") unless is_clean
|
37
|
+
return false
|
38
|
+
end
|
39
|
+
return true
|
40
|
+
end
|
41
|
+
|
42
|
+
def commit_for_api(commit_message)
|
43
|
+
begin
|
44
|
+
@git.add(:all => true)
|
45
|
+
@git.commit(commit_message)
|
46
|
+
@git.push('origin', @git.current_branch)
|
47
|
+
rescue Git::FailedError => e
|
48
|
+
puts(e.to_s)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def update_tag(dest_tag)
|
53
|
+
delete_dest_tag(dest_tag.to_s) # 删除原有tag
|
54
|
+
create_dest_tag(dest_tag.to_s) # 新建tag
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def create_dest_tag(dest_tag)
|
60
|
+
return false unless prepare == true
|
61
|
+
|
62
|
+
puts "start create tag"
|
63
|
+
@git.add_tag(dest_tag, :m => "\"#{dest_tag}\" -- auto created with api document, by 'cocoapods-ykutility'")
|
64
|
+
@git.push('origin', dest_tag)
|
65
|
+
end
|
66
|
+
|
67
|
+
def delete_dest_tag(dest_tag)
|
68
|
+
# 此处需要防止本地有tag, 而远端不存在, 所以此处做如下操作
|
69
|
+
# 1. 检查本地tag
|
70
|
+
# 2. 删除本地tag
|
71
|
+
# 3. 拉取远端tag
|
72
|
+
# 4. 删除本地和远端tag
|
73
|
+
|
74
|
+
begin
|
75
|
+
exist_tag = @git.tag(dest_tag)
|
76
|
+
rescue Git::GitTagNameDoesNotExist => e
|
77
|
+
end
|
78
|
+
|
79
|
+
ykNotice("tag [#{dest_tag}] existed, we delete it on local and remote \"origin\"") unless exist_tag.blank?
|
80
|
+
begin
|
81
|
+
@git.delete_tag(dest_tag) unless exist_tag.blank?
|
82
|
+
@git.push('origin', dest_tag, :delete => true) unless exist_tag.blank?
|
83
|
+
rescue Git::FailedError => e
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
class Ykutility < Command
|
6
|
+
class Push < Ykutility
|
7
|
+
require 'cocoapods/command/repo/push'
|
8
|
+
require 'cocoapods-ykutility/tools/yk_log_tool'
|
9
|
+
require 'cocoapods-ykutility/command/push/yk_api_analysis'
|
10
|
+
require 'cocoapods-ykutility/command/push/yk_git_manager'
|
11
|
+
|
12
|
+
include YKPod::YKLogTool
|
13
|
+
|
14
|
+
include Pod::Config::Mixin
|
15
|
+
self.summary = 'Release a new pod version'
|
16
|
+
|
17
|
+
self.description = <<-DESC
|
18
|
+
组件发布新版本
|
19
|
+
DESC
|
20
|
+
|
21
|
+
attr_accessor :repo_push_cmd
|
22
|
+
attr_accessor :argv_cache
|
23
|
+
|
24
|
+
self.arguments = Pod::Command::Repo::Push.arguments
|
25
|
+
|
26
|
+
def self.options
|
27
|
+
Pod::Command::Repo::Push.options.concat(super)
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize(argv)
|
31
|
+
# 如果有一部分参数是本类特有的,需要在此处优先取出
|
32
|
+
argv_map = argv.remainder
|
33
|
+
argv_new = CLAide::ARGV.new(argv.remainder)
|
34
|
+
@repo_push_cmd = Pod::Command::Repo::Push.new(argv_new)
|
35
|
+
|
36
|
+
# 因为这部分参数是 本类 和 Pod::Command::Repo::Push 共有的, 所以本类用 argv 取参数, Pod::Command::Repo::Push使用 argv_map 取参数
|
37
|
+
@repo = argv.shift_argument
|
38
|
+
@podspec = argv.shift_argument
|
39
|
+
@source = source_for_repo
|
40
|
+
@source_urls = argv.option('sources', config.sources_manager.all.map(&:url).append(Pod::TrunkSource::TRUNK_REPO_URL).uniq.join(',')).split(',')
|
41
|
+
argv_extra = argv_new.remainder
|
42
|
+
argv_extra.append("--help") if argv_map.include?("--help")
|
43
|
+
super(CLAide::ARGV.new(argv_extra))
|
44
|
+
end
|
45
|
+
|
46
|
+
def validate! # 此处validate 是复制 Pod::Command::Repo::Push , 因为如果直接用 self.repo_push_cmd.validate! 会导致提示显示的是 Pod::Command::Repo::Push 的使用说明
|
47
|
+
super
|
48
|
+
|
49
|
+
help! 'A spec-repo name or url is required.' unless @repo
|
50
|
+
unless @source && @source.repo.directory?
|
51
|
+
raise Informative,
|
52
|
+
"Unable to find the `#{@repo}` repo. " \
|
53
|
+
'If it has not yet been cloned, add it via `pod repo add`.'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def run
|
58
|
+
gitmanager = YKUtitlityGitModule::YKGitManager.new(Dir.pwd)
|
59
|
+
return false unless gitmanager.prepare == true
|
60
|
+
|
61
|
+
ykNotice "pod ykutility push running !"
|
62
|
+
self.repo_push_cmd.run # 使用Pod::Command::Repo::Push,发布pod
|
63
|
+
|
64
|
+
ykNotice "pod ykutility analysis create document running !"
|
65
|
+
api_analysis = YKApi::YkApiAnalysis.new(podspec_files, @source_urls)
|
66
|
+
aanlysis_success = api_analysis.execute
|
67
|
+
raise Informative, "Failed to analysis Component api: #{api_analysis.all_pod_names}" unless aanlysis_success == true
|
68
|
+
# 解析podspec, 识别出 公共文件, tag
|
69
|
+
# 根据公共文件,生成接口文档
|
70
|
+
# 检查tag是否存在,删除已有tag, 删除远端已有tag
|
71
|
+
# 添加接口文档,并提交,生成对应版本的tag,并对送到远端
|
72
|
+
version = api_analysis.version
|
73
|
+
|
74
|
+
gitmanager.commit_for_api("create api document for version: #{version.to_s}")
|
75
|
+
gitmanager.update_tag(version.to_s)
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def podspec_files
|
82
|
+
if @podspec
|
83
|
+
path = Pathname(@podspec)
|
84
|
+
raise Informative, "Couldn't find #{@podspec}" unless path.exist?
|
85
|
+
[path]
|
86
|
+
else
|
87
|
+
files = Pathname.glob('*.podspec{,.json}')
|
88
|
+
raise Informative, "Couldn't find any podspec files in current directory" if files.empty?
|
89
|
+
files
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def source_for_repo
|
94
|
+
self.config.sources_manager.source_with_name_or_url(@repo) unless @repo.nil?
|
95
|
+
rescue
|
96
|
+
nil
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -2,7 +2,10 @@
|
|
2
2
|
|
3
3
|
module YKPod
|
4
4
|
module YKLogTool
|
5
|
+
require 'cocoapods'
|
6
|
+
|
5
7
|
def ykWarning(message)
|
8
|
+
verbose = Pod::Config.instance.verbose
|
6
9
|
puts "\n[⚠️] #{message}".yellow
|
7
10
|
return 0
|
8
11
|
end
|
@@ -12,6 +15,11 @@ module YKPod
|
|
12
15
|
return 0
|
13
16
|
end
|
14
17
|
|
18
|
+
def ykMessage(message)
|
19
|
+
puts "\n#{message}" if Pod::Config.instance.verbose
|
20
|
+
return 0
|
21
|
+
end
|
22
|
+
|
15
23
|
def ykError(message)
|
16
24
|
puts "\n[❌] #{message}".red
|
17
25
|
return 1
|
@@ -3,7 +3,7 @@
|
|
3
3
|
archiveVersion = 1;
|
4
4
|
classes = {
|
5
5
|
};
|
6
|
-
objectVersion =
|
6
|
+
objectVersion = 55;
|
7
7
|
objects = {
|
8
8
|
|
9
9
|
/* Begin PBXBuildFile section */
|
@@ -104,7 +104,7 @@
|
|
104
104
|
};
|
105
105
|
};
|
106
106
|
buildConfigurationList = FDDD855D299DED6500EAB62E /* Build configuration list for PBXProject "YKRPC_POD_NAME_Example" */;
|
107
|
-
compatibilityVersion = "Xcode
|
107
|
+
compatibilityVersion = "Xcode 13.0";
|
108
108
|
developmentRegion = en;
|
109
109
|
hasScannedForEncodings = 0;
|
110
110
|
knownRegions = (
|
Binary file
|
@@ -0,0 +1,16 @@
|
|
1
|
+
//
|
2
|
+
// YKRPC_POD_NAMERegisterRouter.h
|
3
|
+
// YKRPC_POD_NAME
|
4
|
+
//
|
5
|
+
// Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import <Foundation/Foundation.h>
|
9
|
+
|
10
|
+
NS_ASSUME_NONNULL_BEGIN
|
11
|
+
|
12
|
+
@interface YKRPC_POD_NAMERegisterRouter : NSObject
|
13
|
+
|
14
|
+
@end
|
15
|
+
|
16
|
+
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,27 @@
|
|
1
|
+
//
|
2
|
+
// YKRPC_POD_NAMERegisterRouter.m
|
3
|
+
// YKRPC_POD_NAME
|
4
|
+
//
|
5
|
+
// Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import "YKRPC_POD_NAMERegisterRouter.h"
|
9
|
+
#import <YKRouterComponent/YKRouterComponentHeader.h>
|
10
|
+
|
11
|
+
@interface YKRPC_POD_NAMERegisterRouter()<YKRouterComponentRegisterProtocol>
|
12
|
+
|
13
|
+
@end
|
14
|
+
|
15
|
+
@implementation YKRPC_POD_NAMERegisterRouter
|
16
|
+
|
17
|
+
+ (void)ykRouterRegisterExecute {
|
18
|
+
[[YKRouterComponent shareInstance] ykRegisterUrlPartterns:@"XXXRouterStr" error:nil action:^(YKRouterUrlRequest * _Nonnull urlRequest, YKRouterUrlCompletion _Nonnull completetion) {
|
19
|
+
// xxxVC *vc = [[xxxVC alloc] init];
|
20
|
+
// UIViewController *topVC = urlRequest.fromVC ? urlRequest.fromVC : [UIViewController topController];
|
21
|
+
// [topVC.navigationController pushViewController:vc animated:YES];
|
22
|
+
}];
|
23
|
+
}
|
24
|
+
|
25
|
+
|
26
|
+
@end
|
27
|
+
|
data/podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterService.h
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
//
|
2
|
+
// YKRPC_POD_NAMERegisterService.h
|
3
|
+
// YKRPC_POD_NAME
|
4
|
+
//
|
5
|
+
// Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import <Foundation/Foundation.h>
|
9
|
+
|
10
|
+
/**
|
11
|
+
Service Register for the module.
|
12
|
+
*/
|
13
|
+
@interface YKRPC_POD_NAMERegisterService : NSObject
|
14
|
+
|
15
|
+
@end
|
data/podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterService.m
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
//
|
2
|
+
// YKRPC_POD_NAMERegisterService.m
|
3
|
+
// YKRPC_POD_NAME
|
4
|
+
//
|
5
|
+
// Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import "YKRPC_POD_NAMERegisterService.h"
|
9
|
+
#import <YKModuleServiceComponent/YKModuleServiceComponentHeader.h>
|
10
|
+
|
11
|
+
@interface YKRPC_POD_NAMERegisterService()<YKModuleServiceRegisterProtocol, SUAdvertisementServiceProtocol>
|
12
|
+
@end
|
13
|
+
@implementation SUAdvertisementServiceRegister
|
14
|
+
|
15
|
+
+ (void)ykModuleServiceRegistAction {
|
16
|
+
YKModuleServiceRegisterExecute(SUAdvertisementServiceRegister.class, @protocol(SUAdvertisementServiceProtocol), nil);
|
17
|
+
}
|
18
|
+
|
19
|
+
@end
|
20
|
+
|
21
|
+
#pragma mark - xxxxServiceProtocol method
|
22
|
+
// @interface YKRPC_POD_NAMERegisterService(serProtocol)<xxxxServiceProtocol>
|
23
|
+
// +(void)xxxxAction {
|
24
|
+
// // service execute code
|
25
|
+
//
|
26
|
+
// }
|
27
|
+
// @end
|
File without changes
|
data/podTemplate/register/swift/YKRPC_POD_NAME/Private/register/YKRPC_POD_NAMERegisterRouter.swift
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
//
|
2
|
+
// YKRPC_POD_NAMERegisterRouter.swift
|
3
|
+
// YKRPC_POD_NAME
|
4
|
+
//
|
5
|
+
// Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE.
|
6
|
+
//
|
7
|
+
|
8
|
+
import YKRouterComponent
|
9
|
+
|
10
|
+
private class YKRPC_POD_NAMERegisterRouter: NSObject, YKRouterComponentRegisterProtocol {
|
11
|
+
public static func ykRouterRegisterExecute() {
|
12
|
+
// YKRouterRegisterUrlParttern("xxxxxxRouterString", nil) { (req: YKRouterUrlRequest, com: YKRouterUrlCompletion?) in
|
13
|
+
// let topVC = req.fromVC ?? UIViewController.getTopVC()
|
14
|
+
// let vc = REUserProfileVC()
|
15
|
+
// topVC?.navigationController?.pushViewController(vc, animated: true)
|
16
|
+
// }
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
data/podTemplate/register/swift/YKRPC_POD_NAME/Private/register/YKRPC_POD_NAMERegisterService.swift
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
//
|
2
|
+
// YKRPC_POD_NAMERegisterService.swift
|
3
|
+
// YKRPC_POD_NAME
|
4
|
+
//
|
5
|
+
// Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE.
|
6
|
+
//
|
7
|
+
import YKModuleServiceComponentSwift
|
8
|
+
|
9
|
+
private class YKRPC_POD_NAMERegisterService: NSObject, YKModuleServiceRegisterProtocol {
|
10
|
+
static func ykModuleServiceRegistAction() {
|
11
|
+
// YKModuleServiceComponent().ykRegistModule(REHomeServiceRegist.self, protocol: XXXXProtocol.self, err: nil)
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
// extension REHomeServiceRegist: XXXXProtocol {
|
16
|
+
// static mehtod for XXXXProtocol
|
17
|
+
// static func xxxxx() -> xxxxxObjc {
|
18
|
+
// return XXXXX()
|
19
|
+
// }
|
20
|
+
// }
|
metadata
CHANGED
@@ -1,15 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-ykutility
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- stephen.chen
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
12
|
-
dependencies:
|
11
|
+
date: 2023-07-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jazzy
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: git
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
13
69
|
description: 创建定制化标准组件.
|
14
70
|
email:
|
15
71
|
- stephenchen@yeahka.com
|
@@ -20,12 +76,16 @@ files:
|
|
20
76
|
- lib/cocoapods-ykutility.rb
|
21
77
|
- lib/cocoapods-ykutility/command.rb
|
22
78
|
- lib/cocoapods-ykutility/command/Ykutility.rb
|
23
|
-
- lib/cocoapods-ykutility/command/
|
24
|
-
- lib/cocoapods-ykutility/
|
25
|
-
- lib/cocoapods-ykutility/
|
26
|
-
- lib/cocoapods-ykutility/
|
27
|
-
- lib/cocoapods-ykutility/
|
79
|
+
- lib/cocoapods-ykutility/command/create.rb
|
80
|
+
- lib/cocoapods-ykutility/command/create/yk_create_pod_action.rb
|
81
|
+
- lib/cocoapods-ykutility/command/create/yk_create_pod_config.rb
|
82
|
+
- lib/cocoapods-ykutility/command/create/yk_exchange_tool.rb
|
83
|
+
- lib/cocoapods-ykutility/command/push.rb
|
84
|
+
- lib/cocoapods-ykutility/command/push/yk_api_analysis.rb
|
85
|
+
- lib/cocoapods-ykutility/command/push/yk_api_parse.rb
|
86
|
+
- lib/cocoapods-ykutility/command/push/yk_git_manager.rb
|
28
87
|
- lib/cocoapods-ykutility/gem_version.rb
|
88
|
+
- lib/cocoapods-ykutility/tools/yk_log_tool.rb
|
29
89
|
- lib/cocoapods_plugin.rb
|
30
90
|
- podTemplate/example/Podfile
|
31
91
|
- podTemplate/example/Podfile.lock
|
@@ -52,6 +112,13 @@ files:
|
|
52
112
|
- podTemplate/objc/YKRPC_POD_NAME/Private/.gitkeep
|
53
113
|
- podTemplate/objc/YKRPC_POD_NAME/Public/YKRPC_POD_NAME.h
|
54
114
|
- podTemplate/objc/YKRPC_POD_NAME/Public/YKRPC_POD_NAME.m
|
115
|
+
- podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterRouter.h
|
116
|
+
- podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterRouter.m
|
117
|
+
- podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterService.h
|
118
|
+
- podTemplate/register/objc/YKRPC_POD_NAME/Private/Register/YKRPC_POD_NAMERegisterService.m
|
119
|
+
- podTemplate/register/swift/YKRPC_POD_NAME/Private/.gitkeep
|
120
|
+
- podTemplate/register/swift/YKRPC_POD_NAME/Private/register/YKRPC_POD_NAMERegisterRouter.swift
|
121
|
+
- podTemplate/register/swift/YKRPC_POD_NAME/Private/register/YKRPC_POD_NAMERegisterService.swift
|
55
122
|
- podTemplate/swift/LICENSE
|
56
123
|
- podTemplate/swift/README.md
|
57
124
|
- podTemplate/swift/YKRPC_POD_NAME.podspec
|
@@ -62,7 +129,7 @@ homepage: https://github.com/stephen5652/cocoapods-yk-pod-utility.git
|
|
62
129
|
licenses:
|
63
130
|
- MIT
|
64
131
|
metadata: {}
|
65
|
-
post_install_message:
|
132
|
+
post_install_message:
|
66
133
|
rdoc_options: []
|
67
134
|
require_paths:
|
68
135
|
- lib
|
@@ -77,8 +144,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
144
|
- !ruby/object:Gem::Version
|
78
145
|
version: '0'
|
79
146
|
requirements: []
|
80
|
-
rubygems_version: 3.
|
81
|
-
signing_key:
|
147
|
+
rubygems_version: 3.1.6
|
148
|
+
signing_key:
|
82
149
|
specification_version: 4
|
83
150
|
summary: 一款cocoapods插件,用于创建定制化标准组件.
|
84
151
|
test_files: []
|