cocoapods-hbh 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce18e2b95339d2db022c65c616c7ca55fb29c372a3fa534ddd3fb7b4430e46d9
4
- data.tar.gz: 4ad932b3d91390c27f7d9895e016a3ebdacbbe7146a8d5c2972e728d62138889
3
+ metadata.gz: 416d296eacf21ea795f369ce67716788f512101da11b1975f95fcb31d0201d92
4
+ data.tar.gz: 5dde5bfb57c073b6db07c2b7094a97f7830ba466e3c82d1c4e0a9cc998917d2e
5
5
  SHA512:
6
- metadata.gz: 0edef73beae1ffcd658707c201e120eed4df01958c402db5ea92d61147648c824628ec3ba3a71f1adb71427af415d5e36c86921e246bc9115b2abbbbb56fb0b8
7
- data.tar.gz: c44f0b8a99668bf891432d7a1edff04eb5f8c784837e30caf1eabcad8cb82797a0f5dad14b7af318f5a6d525077ef7f99958e8d99dfd067b4933025a080f920c
6
+ metadata.gz: b8054f00ec0d7b35bfd1dd00263f89e9ae79987c3a33a3d3130653bc8cf9ef53e8357f63a8a73dd98de6af4c4e97f0753b2790bf29f4cd3404a2d64328add7be
7
+ data.tar.gz: 327c35772d4bdb96a701f9aa2fe2328ab0b2bf106abc28da4e48a84d038d794ad6d88e9624ca7646edf81539add3cc111a79b0948e13990b1e175c936f6135b6
@@ -1,5 +1,5 @@
1
1
  require 'cocoapods'
2
- require 'cocoapods-hbh/command/sub_module/add_submodule'
2
+ require 'cocoapods-hbh/command/module/add_module'
3
3
 
4
4
 
5
5
  module Pod
@@ -11,11 +11,18 @@ module Pod
11
11
  unless name
12
12
  raise StandardError, 'A dependency requires a name.'
13
13
  end
14
- add_sub_module = AddSubModule.new(@current_target_definition)
15
- add_sub_module.pod_moudle(name, *requirements)
16
- # current_target_definition.store_pod(name, *requirements)
14
+ add_sub_module = AddModule.new(@current_target_definition)
15
+ add_sub_module.pod_submoudle(name, *requirements)
17
16
  end
18
17
 
18
+ def pod_private(name = nil, *requirements)
19
+ unless name
20
+ raise StandardError, 'A dependency requires a name.'
21
+ end
22
+ add_sub_module = AddModule.new(@current_target_definition)
23
+ add_sub_module.pod_private(name, *requirements)
24
+ end
25
+
19
26
  end
20
27
 
21
28
  end
@@ -0,0 +1,123 @@
1
+ require 'cocoapods'
2
+ require 'fileutils'
3
+
4
+ module CocoapodsGitHooks
5
+ class GitHooksManager
6
+ class << self
7
+ # @return [Array<String>]
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
+
31
+ # @param [TargetDefinition]
32
+ # @return [Array<Dependency>]
33
+ def dependencies_in_target(abstract_target)
34
+ abstract_target.dependencies
35
+ end
36
+
37
+ def validate_git_directory?
38
+ unless File.directory?(".git")
39
+ Pod::UI.puts 'Can not find .git directory.'
40
+ return false
41
+ end
42
+
43
+ true
44
+ end
45
+
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
+ def sync
102
+ Pod::UI.message 'Start syncing Git Hook' do
103
+ return unless validate_git_directory?
104
+
105
+ FileUtils.mkdir '.git/hooks' unless File.directory?('.git/hooks')
106
+
107
+ abstract_target = abstract_target_of_githooks
108
+ return if abstract_target.nil?
109
+ dependencies = dependencies_in_target(abstract_target)
110
+ if dependencies.nil? || dependencies.empty?
111
+ Pod::UI.warn 'The dependencies of SyncGithooks is nil or empty.'
112
+ return
113
+ end
114
+ dependencies.each { |dependency|
115
+ Pod::UI.message "- #{dependency.name}"
116
+ }
117
+ sync_githooks_in_dependencies(dependencies)
118
+ end
119
+ Pod::UI.message 'Githooks are synced'
120
+ end
121
+ end
122
+ end
123
+ end
@@ -4,7 +4,7 @@ require 'cocoapods/user_interface'
4
4
 
5
5
  module Pod
6
6
  class Podfile
7
- class AddSubModule
7
+ class AddModule
8
8
  UI = Pod::UserInterface unless defined? UI
9
9
  # @return [TargetDefinition] The current target definition to which the DSL
10
10
  # commands apply.
@@ -23,33 +23,41 @@ module Pod
23
23
  return default
24
24
  end
25
25
  end
26
+
27
+ def pod_private (moduleName, *requirements)
28
+ info = requirements.last
29
+ git = get_info(info, :git, nil)
30
+ sub_config = HBHConfig.config.submodule_env
31
+ remoteUrl = sub_config['sub_url']
32
+ if git.blank?
33
+ if moduleName.include?('/')
34
+ name = moduleName.split('/').first
35
+ requirements.last[:git] = "#{remoteUrl}/#{name}.git"
36
+ else
37
+ requirements.last[:git] = "#{remoteUrl}/#{moduleName}.git"
38
+ end
39
+ end
40
+ Pod::UI.puts "#{moduleName}使用私有库".yellow
41
+ current_target_definition.store_pod moduleName, *requirements
42
+ end
26
43
 
27
44
 
28
45
  # 添加模块 模块名称为podspec的名称,路径默认为Module/下的模块,tag或者branch 优先使用tag,默认develop分支
29
46
  # (moduleName, submodule: true, moduleTag: nil, moduleBranch: 'develop', appspecs: nil)
30
- def pod_moudle (moduleName, *requirements)
47
+ def pod_submoudle (moduleName, *requirements)
31
48
  info = requirements.last
32
- # git = get_info(info, :git, nil)
33
-
34
-
35
- # if git.blank?
36
- # hbh_git = get_info(info, :hbh_git, nil)
37
- # if moduleName.include?('/')
38
- # name = moduleName.split('/').first
39
- # requirements.last[:git] = "#{remoteUrl}/#{name}.git"
40
- # else
41
- # requirements.last[:git] = "#{remoteUrl}/#{moduleName}.git"
42
- # end
43
- # requirements.last.delete(:hbh_git)
44
- # end
45
-
46
49
  is_submodule = get_info(info, :submodule, true)
47
50
  if is_submodule
48
51
  if info.nil? then raise "请输入正确的参数" end
49
52
  return requirements unless info.is_a?(Hash)
50
53
 
51
54
  moduleTag = get_info(info, :tag, nil)
52
- moduleBranch = get_info(info, :branch, "develop")
55
+ moduleBranch = get_info(info, :branch, nil)
56
+ if moduleTag.nil? && moduleBranch.nil?
57
+ Pod::UI.puts "请配置依赖tag或者branch".red
58
+ raise "注意: 请配置依赖tag或者branch"
59
+ end
60
+
53
61
  appspecs = get_info(info, :appspecs, nil)
54
62
  sub_config = HBHConfig.config.submodule_env
55
63
  remoteUrl = sub_config['sub_url']
@@ -1,3 +1,3 @@
1
1
  module CocoapodsHbh
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,11 @@
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
@@ -1 +1,2 @@
1
1
  require 'cocoapods-hbh/command'
2
+ require 'cocoapods-hbh/source_provider_hook'
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.1
4
+ version: 0.0.2
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-10 00:00:00.000000000 Z
11
+ date: 2021-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
@@ -79,11 +79,13 @@ files:
79
79
  - lib/cocoapods-hbh/command/common/podfile.rb
80
80
  - lib/cocoapods-hbh/command/common/push.rb
81
81
  - lib/cocoapods-hbh/command/custom/pod_push.rb
82
+ - lib/cocoapods-hbh/command/custom/sync_githooks.rb
82
83
  - lib/cocoapods-hbh/command/hbh.rb
83
- - lib/cocoapods-hbh/command/sub_module/add_submodule.rb
84
+ - lib/cocoapods-hbh/command/module/add_module.rb
84
85
  - lib/cocoapods-hbh/config/config.rb
85
86
  - lib/cocoapods-hbh/gem_version.rb
86
87
  - lib/cocoapods-hbh/helpers/git_depend.rb
88
+ - lib/cocoapods-hbh/source_provider_hook.rb
87
89
  - lib/cocoapods_plugin.rb
88
90
  homepage: https://github.com/EXAMPLE/cocoapods-hbh
89
91
  licenses: