cocoapods-hbh 0.0.2 → 0.0.3
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-hbh/command/common/hbh_init.rb +52 -0
- data/lib/cocoapods-hbh/command/custom/sync_githooks.rb +11 -96
- data/lib/cocoapods-hbh/command/hbh.rb +4 -3
- data/lib/cocoapods-hbh/command.rb +2 -4
- data/lib/cocoapods-hbh/config/config.rb +49 -36
- data/lib/cocoapods-hbh/config/config_asker.rb +57 -0
- data/lib/cocoapods-hbh/gem_version.rb +1 -1
- data/lib/cocoapods_plugin.rb +0 -1
- metadata +18 -4
- data/lib/cocoapods-hbh/command/custom/pod_push.rb +0 -1
- data/lib/cocoapods-hbh/source_provider_hook.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31f2592765405050041e12717abc2b09cfd47f330e051f4de48b50ebe20dc502
|
4
|
+
data.tar.gz: 9cdb8ece30e50c8997e758a46acd773bc7bd6685ba4fbd5faa83bc54e63ecb28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5047868bf505be88016941cd3b4966fa7c1e4be02af0e7db568a66ec02a7d873b4322c1988eb2d0a085b2c1da52ba329a1b143fc77a82c11f024c0625482f504
|
7
|
+
data.tar.gz: 30d0a3e632d08d03bf9ea88bcb8259ee2d52e20cf4e74873d741d98a26be6dceafe0d4ad41c093aa3f64f1f71c7c44fc9571caf847aa93685c9555c1874b94ce
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'cocoapods-hbh/config/config_asker'
|
2
|
+
require 'cocoapods/generate'
|
3
|
+
|
4
|
+
module Pod
|
5
|
+
class Command
|
6
|
+
class Hbh < Command
|
7
|
+
class Init < Hbh
|
8
|
+
def initialize(argv)
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
def validate!
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
def run()
|
17
|
+
if File.exist?("./HBHConfig.yml")
|
18
|
+
Pod::UI.puts "当前目录已有配置文件".yellow
|
19
|
+
return
|
20
|
+
end
|
21
|
+
|
22
|
+
Pod::UI.message '开始生成配置文件' do
|
23
|
+
config_with_asker
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def config_with_asker
|
28
|
+
asker = HBHConfig::Config::Asker.new
|
29
|
+
asker.wellcome_message
|
30
|
+
|
31
|
+
# config = {}
|
32
|
+
# template_hash = HBHConfig.config.template_hash
|
33
|
+
# template_hash.each do |k, v|
|
34
|
+
# default = begin
|
35
|
+
# HBHConfig.config.send(k)
|
36
|
+
# rescue StandardError
|
37
|
+
# nil
|
38
|
+
# end
|
39
|
+
# config[k] = asker.ask_with_answer(v[:description], default, v[:selection])
|
40
|
+
# end
|
41
|
+
|
42
|
+
HBHConfig.config.sync_config(HBHConfig.config.write_config)
|
43
|
+
asker.done_message
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def generate_obj ()
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -4,30 +4,7 @@ require 'fileutils'
|
|
4
4
|
module CocoapodsGitHooks
|
5
5
|
class GitHooksManager
|
6
6
|
class << self
|
7
|
-
|
8
|
-
def hook_types
|
9
|
-
%w(applypatch-msg commit-msg fsmonitor-watchman post-update pre-applypatch pre-commit pre-merge-commit pre-push pre-rebase prepare-commit-msg push-to-checkout)
|
10
|
-
end
|
11
|
-
|
12
|
-
# @return [TargetDefinition]
|
13
|
-
def abstract_target_of_githooks
|
14
|
-
abstract_target = nil
|
15
|
-
podfile = Pod::Config.instance.podfile
|
16
|
-
podfile.target_definition_list.each do |target|
|
17
|
-
if target.name == 'Githooks'
|
18
|
-
abstract_target = target
|
19
|
-
break
|
20
|
-
end
|
21
|
-
end unless podfile.target_definition_list.nil?
|
22
|
-
|
23
|
-
if abstract_target.nil?
|
24
|
-
Pod::UI.puts 'The abstract_target of SyncGithooks is not defined.'
|
25
|
-
return nil
|
26
|
-
end
|
27
|
-
|
28
|
-
abstract_target
|
29
|
-
end
|
30
|
-
|
7
|
+
|
31
8
|
# @param [TargetDefinition]
|
32
9
|
# @return [Array<Dependency>]
|
33
10
|
def dependencies_in_target(abstract_target)
|
@@ -39,85 +16,23 @@ module CocoapodsGitHooks
|
|
39
16
|
Pod::UI.puts 'Can not find .git directory.'
|
40
17
|
return false
|
41
18
|
end
|
42
|
-
|
43
19
|
true
|
44
20
|
end
|
45
21
|
|
46
|
-
# @param [Array<Dependency>] dependencies
|
47
|
-
def sync_githooks_in_dependencies(dependencies)
|
48
|
-
pods_directory = "#{Dir.pwd}/Pods"
|
49
|
-
hook_dependencies = Hash.new([])
|
50
|
-
dependencies.each do |dependency|
|
51
|
-
dependency_directory = if dependency.local?
|
52
|
-
File.expand_path(dependency.external_source[:path])
|
53
|
-
else
|
54
|
-
"#{pods_directory}/#{dependency.name}"
|
55
|
-
end
|
56
|
-
hook_types.each { |hook_type|
|
57
|
-
file_path = "#{dependency_directory}/githooks/#{hook_type}"
|
58
|
-
if File.exist?(file_path)
|
59
|
-
hook_dependencies[hook_type] += [dependency]
|
60
|
-
end
|
61
|
-
}
|
62
|
-
end
|
63
|
-
git_hook_directory = '.git/hooks'
|
64
|
-
hook_dependencies.each_pair { |key, dependencies|
|
65
|
-
file_path = "#{git_hook_directory}/#{key}"
|
66
|
-
|
67
|
-
File.delete(file_path) if File.exist?(file_path)
|
68
|
-
|
69
|
-
File.new(file_path, 'w')
|
70
|
-
File.open(file_path, File::RDWR) do |file|
|
71
|
-
file.write("#!/bin/sh\n")
|
72
|
-
file.write("#!/usr/bin/env ruby\n")
|
73
|
-
file.write("#!/usr/bin/env python\n")
|
74
|
-
|
75
|
-
dependencies.each do |dependency|
|
76
|
-
dependency_directory = if dependency.local?
|
77
|
-
File.expand_path(dependency.external_source[:path])
|
78
|
-
else
|
79
|
-
"#{pods_directory}/#{dependency.name}"
|
80
|
-
end
|
81
|
-
|
82
|
-
hook_file_path = "#{dependency_directory}/githooks/#{key}"
|
83
|
-
|
84
|
-
file.write("# #{dependency.name} githook\n")
|
85
|
-
file.write("if [ -f \"#{hook_file_path}\" ]; then\n")
|
86
|
-
file.write(" function #{dependency.name}(){\n")
|
87
|
-
file.write(" local script_directory=#{dependency_directory}/scripts\n")
|
88
|
-
File.readlines(hook_file_path).each { |line|
|
89
|
-
file.write(" #{line}")
|
90
|
-
}
|
91
|
-
file.write("\n }\n")
|
92
|
-
file.write(" #{dependency.name}\n")
|
93
|
-
file.write("fi\n")
|
94
|
-
end
|
95
|
-
|
96
|
-
FileUtils.chmod('+x', file_path)
|
97
|
-
end
|
98
|
-
}
|
99
|
-
end
|
100
|
-
|
101
22
|
def sync
|
102
|
-
Pod::UI.message 'Start syncing Git Hook' do
|
103
23
|
return unless validate_git_directory?
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
return
|
24
|
+
scr_path = "./Script/pre-commit"
|
25
|
+
return unless File::exist?(scr_path)
|
26
|
+
pre_path = ".git/hooks/pre-commit"
|
27
|
+
|
28
|
+
FileUtils.mkdir '.git/hooks' unless File.directory?('.git/hooks')
|
29
|
+
if File::exist?(pre_path)
|
30
|
+
FileUtils.cp(scr_path, ".git/hooks/")
|
31
|
+
FileUtils.chmod('+x', pre_path)
|
113
32
|
end
|
114
|
-
dependencies.each { |dependency|
|
115
|
-
Pod::UI.message "- #{dependency.name}"
|
116
|
-
}
|
117
|
-
sync_githooks_in_dependencies(dependencies)
|
118
33
|
end
|
119
|
-
|
120
|
-
|
34
|
+
|
35
|
+
|
121
36
|
end
|
122
37
|
end
|
123
38
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'cocoapods-hbh/command/common/install'
|
2
2
|
require 'cocoapods-hbh/command/common/podfile'
|
3
3
|
require 'cocoapods-hbh/command/common/push'
|
4
|
+
require 'cocoapods-hbh/command/common/hbh_init'
|
4
5
|
|
5
6
|
module Pod
|
6
7
|
class Command
|
@@ -28,16 +29,16 @@ module Pod
|
|
28
29
|
婚博会组件依赖管理插件
|
29
30
|
DESC
|
30
31
|
|
31
|
-
self.arguments = 'hbhCocoapods插件'
|
32
|
+
# self.arguments = 'hbhCocoapods插件'
|
32
33
|
|
33
34
|
def initialize(argv)
|
34
|
-
@
|
35
|
+
@help = argv.flag?('help').blank? ? 'help' : argv.flag?('help')
|
35
36
|
super
|
36
37
|
end
|
37
38
|
|
38
39
|
def validate!
|
39
40
|
super
|
40
|
-
help! '
|
41
|
+
help! '暂时还没有帮助信息' unless @help
|
41
42
|
end
|
42
43
|
|
43
44
|
def run
|
@@ -1,9 +1,7 @@
|
|
1
|
+
require 'cocoapods'
|
1
2
|
require 'cocoapods-hbh/command/hbh'
|
2
3
|
|
3
|
-
require 'cocoapods'
|
4
4
|
|
5
|
-
|
6
|
-
Pod::HooksManager.register('cocoapods-hbhhooks', :pre_install) do |_context, _|
|
5
|
+
Pod::HooksManager.register('cocoapods-hbhhooks', :pre_install) do |_context, _|
|
7
6
|
|
8
|
-
end
|
9
7
|
end
|
@@ -1,52 +1,61 @@
|
|
1
1
|
require 'yaml'
|
2
|
-
|
2
|
+
require 'cocoapods-hbh/gem_version'
|
3
|
+
# require 'cocoapods/generate'
|
3
4
|
|
4
5
|
module HBHConfig
|
5
6
|
class Config
|
6
7
|
|
7
|
-
def
|
8
|
-
|
8
|
+
def write_config ()
|
9
|
+
{
|
10
|
+
"hbh_specs_env" =>
|
11
|
+
{
|
12
|
+
"specs_name" => "私有仓库名称",
|
13
|
+
"specs_url" => "私有仓库地址"
|
14
|
+
},
|
15
|
+
"submodule_env" =>
|
16
|
+
{
|
17
|
+
"sub_path" => "子模块存储路径",
|
18
|
+
"sub_url" => "子模块远程厂库地址"
|
19
|
+
}
|
20
|
+
}
|
9
21
|
end
|
10
22
|
|
11
23
|
def template_hash
|
12
|
-
|
13
|
-
|
14
|
-
|
24
|
+
{
|
25
|
+
'hbh_specs_env' => { description: '私有仓库环境',
|
26
|
+
default: {
|
27
|
+
'specs_name' => { description: '私有仓库名称' },
|
28
|
+
'specs_url' => { description: '私有仓库地址' },
|
29
|
+
}
|
30
|
+
},
|
31
|
+
|
32
|
+
'submodule_env' => { description: '子仓库环境',
|
33
|
+
default: {
|
34
|
+
'sub_path' => { description: '子模块存储路径' },
|
35
|
+
'sub_url' => { description: '子模块厂库地址' },
|
36
|
+
}
|
37
|
+
},
|
38
|
+
}
|
15
39
|
end
|
16
40
|
|
17
|
-
def
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
configuration_env ||= Pod::Config.instance.podfile.configuration_env
|
22
|
-
end
|
23
|
-
configuration_env ||= "dev"
|
24
|
-
@configuration_env = configuration_env
|
25
|
-
end
|
26
|
-
@configuration_env
|
41
|
+
def sync_config(config)
|
42
|
+
File.open(config_file_with_configuration(), 'w+') do |f|
|
43
|
+
f.write(config.to_yaml)
|
44
|
+
end
|
27
45
|
end
|
28
46
|
|
47
|
+
|
29
48
|
def config_file
|
30
|
-
|
49
|
+
config_file_with_configuration()
|
31
50
|
end
|
32
|
-
|
33
|
-
def
|
34
|
-
|
51
|
+
|
52
|
+
def config_name
|
53
|
+
"HBHConfig.yml"
|
35
54
|
end
|
36
55
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
file = config_release_iphoneos_file
|
41
|
-
puts "\n====== #{configuration_env} 环境 ========"
|
42
|
-
elsif configuration_env == "debug_iphoneos"
|
43
|
-
file = config_debug_iphoneos_file
|
44
|
-
puts "\n====== #{configuration_env} 环境 ========"
|
45
|
-
elsif configuration_env == "dev"
|
46
|
-
puts "\n====== #{configuration_env} 环境 ========"
|
47
|
-
else
|
48
|
-
raise "\n===== #{configuration_env} 参数有误,请检查%w[dev debug_iphoneos release_iphoneos]===="
|
49
|
-
end
|
56
|
+
|
57
|
+
def config_file_with_configuration()
|
58
|
+
file = config_name
|
50
59
|
file_path = "#{Pod::Config.instance.installation_root}/#{file}"
|
51
60
|
if file_path.blank?
|
52
61
|
file_path = "#{Pod::Config.instance.home_dir}/#{file}"
|
@@ -56,12 +65,16 @@ module HBHConfig
|
|
56
65
|
end
|
57
66
|
|
58
67
|
def load_config
|
59
|
-
if File.exist?(
|
60
|
-
YAML.load_file(
|
68
|
+
if File.exist?(config_name)
|
69
|
+
YAML.load_file(config_name)
|
61
70
|
else
|
62
71
|
default_config
|
63
72
|
end
|
64
73
|
end
|
74
|
+
|
75
|
+
def default_config
|
76
|
+
@default_config ||= Hash[template_hash.map { |k, v| [k, v[:default]] }]
|
77
|
+
end
|
65
78
|
|
66
79
|
def initialize
|
67
80
|
|
@@ -71,7 +84,7 @@ module HBHConfig
|
|
71
84
|
if config.respond_to?(method)
|
72
85
|
config.send(method, *args)
|
73
86
|
elsif template_hash.keys.include?(method.to_s)
|
74
|
-
raise Pod::Informative, "#{method} 字段必须在配置文件 #{
|
87
|
+
raise Pod::Informative, "#{method} 字段必须在配置文件 #{config_name} 中设置, 请执行 init 命令配置或手动修改配置文件".red
|
75
88
|
else
|
76
89
|
super
|
77
90
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'cocoapods-hbh/config/config'
|
3
|
+
|
4
|
+
module HBHConfig
|
5
|
+
class Config
|
6
|
+
class Asker
|
7
|
+
def show_prompt
|
8
|
+
print ' > '.green
|
9
|
+
end
|
10
|
+
|
11
|
+
def ask_with_answer(question, pre_answer, selection)
|
12
|
+
print "\n#{question}\n"
|
13
|
+
|
14
|
+
print_selection_info = lambda {
|
15
|
+
print "可选值:[ #{selection.join(' / ')} ]\n" if selection
|
16
|
+
}
|
17
|
+
print_selection_info.call
|
18
|
+
print "旧值:#{pre_answer}\n" unless pre_answer.nil?
|
19
|
+
|
20
|
+
answer = ''
|
21
|
+
loop do
|
22
|
+
show_prompt
|
23
|
+
answer = STDIN.gets.chomp.strip
|
24
|
+
|
25
|
+
if answer == '' && !pre_answer.nil?
|
26
|
+
answer = pre_answer
|
27
|
+
print answer.yellow
|
28
|
+
print "\n"
|
29
|
+
end
|
30
|
+
|
31
|
+
next if answer.empty?
|
32
|
+
break if !selection || selection.include?(answer)
|
33
|
+
|
34
|
+
print_selection_info.call
|
35
|
+
end
|
36
|
+
|
37
|
+
answer
|
38
|
+
end
|
39
|
+
|
40
|
+
def wellcome_message
|
41
|
+
print <<~EOF
|
42
|
+
|
43
|
+
开始设置二进制化初始信息.
|
44
|
+
所有的信息都会保存在 #{HBHConfig.config.config_file} 文件中.
|
45
|
+
|
46
|
+
你可以在对应目录下手动添加编辑该文件. 文件包含的配置信息样式如下:
|
47
|
+
|
48
|
+
#{HBHConfig.config.default_config.to_yaml}
|
49
|
+
EOF
|
50
|
+
end
|
51
|
+
|
52
|
+
def done_message
|
53
|
+
print "\n设置完成.\n".green
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/cocoapods_plugin.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-hbh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zanju
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: cocoapods-generate
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,17 +89,17 @@ extra_rdoc_files: []
|
|
75
89
|
files:
|
76
90
|
- lib/cocoapods-hbh.rb
|
77
91
|
- lib/cocoapods-hbh/command.rb
|
92
|
+
- lib/cocoapods-hbh/command/common/hbh_init.rb
|
78
93
|
- lib/cocoapods-hbh/command/common/install.rb
|
79
94
|
- lib/cocoapods-hbh/command/common/podfile.rb
|
80
95
|
- lib/cocoapods-hbh/command/common/push.rb
|
81
|
-
- lib/cocoapods-hbh/command/custom/pod_push.rb
|
82
96
|
- lib/cocoapods-hbh/command/custom/sync_githooks.rb
|
83
97
|
- lib/cocoapods-hbh/command/hbh.rb
|
84
98
|
- lib/cocoapods-hbh/command/module/add_module.rb
|
85
99
|
- lib/cocoapods-hbh/config/config.rb
|
100
|
+
- lib/cocoapods-hbh/config/config_asker.rb
|
86
101
|
- lib/cocoapods-hbh/gem_version.rb
|
87
102
|
- lib/cocoapods-hbh/helpers/git_depend.rb
|
88
|
-
- lib/cocoapods-hbh/source_provider_hook.rb
|
89
103
|
- lib/cocoapods_plugin.rb
|
90
104
|
homepage: https://github.com/EXAMPLE/cocoapods-hbh
|
91
105
|
licenses:
|
@@ -1 +0,0 @@
|
|
1
|
-
pod repo push HBHSpecs HBHNetwork.podspec --sources='http://gitlab.jiehun.tech/App/iOS/Modularization/HBHSpecs.git,https://github.com/CocoaPods/Specs' --allow-warnings
|
@@ -1,11 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'cocoapods-hbh/command/custom/sync_githooks'
|
3
|
-
|
4
|
-
module CocoapodsGitHooks
|
5
|
-
Pod::HooksManager.register('cocoapods-hbh', :post_install) do |context|
|
6
|
-
CocoapodsGitHooks::GitHooksManager.sync
|
7
|
-
end
|
8
|
-
Pod::HooksManager.register('cocoapods-hbh', :post_update) do |context|
|
9
|
-
CocoapodsGitHooks::GitHooksManager.sync
|
10
|
-
end
|
11
|
-
end
|