lg_pod_plugin 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 872508947b930ee5b91b49de9ccba4fe2bd74aedc1dfcb829ccb470d140c1165
4
- data.tar.gz: 1882ba4f26ae21d1d2f821911339adb0e8fc3d39fa6c12537cf7800c7d57d4eb
3
+ metadata.gz: c7a39307dd5e4f73faefa55775b51e880f9f0fda326cc618c62b957ddcba669e
4
+ data.tar.gz: 46777e3af13f74c44086743bb48352373539806a22aafc758eb104dde3f4864c
5
5
  SHA512:
6
- metadata.gz: d43f347f17d5fce098ff285abbf4b843f982c6d6e108dbe72a5c6e1da809859558092830a241b97955c0adecdaafc601eb9ec971a316e39cf906797a547be184
7
- data.tar.gz: d0de1ffeb0bf00948b7ab8953c2d04792b401ef681095b65029f4b7af966592c1a5e1dc2c8987c0f20097ae54b6d42316b4564e55e3b6d1811419363c15917ae
6
+ metadata.gz: a945450a624206b131df0b963fbd8616b4df179112b54f41625ed90a46b5480823d74b80c0dc75c227f56de3d74fe225cb44243396d11ff7d864399adcbd89a0
7
+ data.tar.gz: c72bbba5713477f4f094387b650298768e94ec3de1a831daead4d2eb588654cb58190d3cbd474e983bc7b02c2b3ce144c032f27722ea75802020a513488490a8
@@ -149,7 +149,7 @@ class Cache
149
149
  pods_pecs.each do |s_name, s_spec|
150
150
  destination = path_for_pod(request, {})
151
151
  if !File.exist?(destination) || is_update
152
- puts "Copying #{name} from `#{target}` to `#{destination}` "
152
+ LgPodPlugin.log_green "Copying #{name} from `#{target}` to `#{destination}` "
153
153
  copy_and_clean(target, destination, s_spec)
154
154
  end
155
155
  cache_pod_spec = path_for_spec(request, {})
@@ -3,7 +3,7 @@ require_relative 'cache.rb'
3
3
  require_relative 'database.rb'
4
4
  require_relative 'file_path.rb'
5
5
 
6
- module LgPodPlugin
6
+ module LgPodPlugin
7
7
 
8
8
  class Downloader
9
9
  attr_accessor :git_util
@@ -57,12 +57,11 @@ module LgPodPlugin
57
57
  git_url = options[:git]
58
58
  # commit = options[:commit]
59
59
  branch = options[:branch]
60
- puts "Using `#{name}` (#{branch})\n"
61
-
60
+ LgPodPlugin.log_green "Using `#{name}` (#{branch})"
62
61
  # 发现本地有缓存, 不需要更新缓存
63
62
  need_download, new_commit = self.cache.find_pod_cache(name, git_url, branch, is_update)
64
63
  unless need_download
65
- puts "find the cache of `#{name}`, you can use it now."
64
+ LgPodPlugin.log_green "find the cache of `#{name}`, you can use it now."
66
65
  return
67
66
  end
68
67
 
@@ -91,7 +90,7 @@ module LgPodPlugin
91
90
  if new_commit != current_commit && is_update
92
91
  #删除旧的pod 缓存
93
92
  self.cache.clean_old_cache(name, git_url, current_commit)
94
- puts "git pull #{name} origin/#{current_branch}\n"
93
+ LgPodPlugin.log_green "git pull #{name} origin/#{current_branch}"
95
94
  self.git_util.should_pull(git, current_branch, new_commit)
96
95
  current_commit = new_commit
97
96
  end
@@ -104,15 +103,15 @@ module LgPodPlugin
104
103
  else
105
104
  branch_exist = git.branches.local.find {|e| e.to_s == branch}
106
105
  if branch_exist
107
- puts "git switch #{name} #{git_url} -b #{branch}\n"
106
+ LgPodPlugin.log_green "git switch #{name} #{git_url} -b #{branch}"
108
107
  self.git_util.git_switch(branch)
109
108
  else
110
- puts "git checkout #{name} #{git_url} -b #{branch}\n"
109
+ LgPodPlugin.log_green "git checkout #{name} #{git_url} -b #{branch}"
111
110
  self.git_util.git_checkout(branch)
112
111
  end
113
112
  current_commit = git.log(1).to_s
114
113
  if current_commit != new_commit
115
- puts "git pull #{name} #{git_url} -b #{branch}\n"
114
+ LgPodPlugin.log_green "git pull #{name} #{git_url} -b #{branch}"
116
115
  self.git_util.should_pull(git, current_branch, new_commit)
117
116
  current_commit = new_commit
118
117
  end
@@ -27,9 +27,8 @@ module LgPodPlugin
27
27
  def git_clone(path)
28
28
  if self.branch
29
29
  temp_git_path = path.join("l-temp-pod")
30
- puts "git clone --template= --single-branch --depth 1 --branch #{self.branch} #{self.git}\n"
30
+ LgPodPlugin.log_blue "git clone --template= --single-branch --depth 1 --branch #{self.branch} #{self.git}"
31
31
  system("git clone --template= --single-branch --depth 1 --branch #{self.branch} #{self.git} #{temp_git_path}")
32
- puts "\n"
33
32
  temp_git_path
34
33
  else
35
34
  nil
@@ -76,8 +75,8 @@ module LgPodPlugin
76
75
  end
77
76
 
78
77
  # 本地pod库git操作
79
- def git_local_pod_check
80
- FileUtils.chdir(self.path)
78
+ def git_local_pod_check(path)
79
+ FileUtils.chdir(path)
81
80
  git = Git.open(Pathname("./"))
82
81
  current_branch = git.current_branch
83
82
  last_stash_message = "#{current_branch}_pod_install_cache"
@@ -107,16 +106,19 @@ module LgPodPlugin
107
106
  # 获取最新的一条 commit 信息
108
107
  def self.git_ls_remote_refs(git, branch)
109
108
  last_commit = nil
110
- puts "git ls-remote #{git} #{branch}"
109
+ LgPodPlugin.log_green "git ls-remote #{git} #{branch}"
111
110
  sha = %x(git ls-remote #{git} #{branch}).split(" ").first
112
111
  if sha
113
112
  last_commit = sha
113
+ return last_commit
114
114
  else
115
115
  ls = Git.ls_remote(git, :refs => true )
116
116
  find_branch = ls["branches"][branch]
117
117
  if find_branch
118
118
  last_commit = find_branch[:sha]
119
+ return last_commit
119
120
  end
121
+ return nil
120
122
  end
121
123
  end
122
124
 
@@ -9,59 +9,105 @@ require_relative 'git_util'
9
9
  require_relative 'pod_spec.rb'
10
10
 
11
11
  module LgPodPlugin
12
+
12
13
  class Installer
14
+ attr_accessor :name
15
+ attr_accessor :version
16
+ attr_accessor :options
13
17
  attr_accessor :profile
14
18
  attr_accessor :target
19
+ attr_accessor :real_name
15
20
  attr_accessor :downloader
16
21
  attr_accessor :git_util
17
- def initialize(defined_in_file = nil, profile, &block)
18
- @defined_in_file = defined_in_file
22
+
23
+ def initialize(profile, name, *requirements)
24
+ if name.include?("/")
25
+ self.name = name.split("/").first
26
+ else
27
+ self.name = name
28
+ end
29
+ self.real_name = name
19
30
  self.profile = profile
20
31
  self.git_util = GitUtil.new
21
32
  self.downloader = Downloader.new
22
33
  self.target = profile.send(:current_target_definition)
23
- if block
24
- instance_eval(&block)
34
+
35
+ unless requirements && !requirements.empty?
36
+ self.pod(self.real_name, requirements)
37
+ return
38
+ end
39
+
40
+ first = requirements[0].first
41
+ if "#{first.class}" == "String"
42
+ self.version = first
43
+ elsif "#{first.class}" == "Hash"
44
+ self.options = first
25
45
  end
46
+
47
+ hash_map = requirements[0].last
48
+ if "#{hash_map.class}" == "Hash"
49
+ self.options = hash_map
50
+ end
51
+
52
+ self.pod(name, requirements)
53
+
26
54
  end
27
55
 
56
+ private
57
+
28
58
  # @param [Object] name
29
59
  # @param [Hash] options
30
60
  # @return [Object] nil
31
- def pod(name, options = {})
61
+ def pod(name, *requirements)
32
62
  unless name
33
63
  raise StandardError, 'A dependency requires a name.'
34
64
  end
35
- if options[0].is_a?(String)
36
- version = options[0].to_s
37
- self.target.store_pod(name, version)
65
+
66
+ if !requirements
67
+ self.target.store_pod(self.real_name)
68
+ return
69
+ end
70
+
71
+ if self.version && !self.options
72
+ self.target.store_pod(self.real_name, self.version)
73
+ return
74
+ end
75
+
76
+ if self.version && self.options
77
+ self.target.store_pod(self.real_name, self.version, self.options)
78
+ return
79
+ end
80
+
81
+ hash_map = self.options
82
+ unless hash_map.is_a?(Hash)
83
+ self.target.store_pod(self.real_name)
38
84
  return
39
85
  end
40
86
 
41
- path = options[:path]
42
- tag = options[:tag]
43
- commit = options[:commit]
44
- url = options[:git]
45
- branch = options[:branch]
46
- depth = options[:depth] ||= true
47
87
  real_path = nil
48
- if path
88
+ tag = hash_map[:tag]
89
+ url = hash_map[:git]
90
+ path = hash_map[:path]
91
+ commit = hash_map[:commit]
92
+ branch = hash_map[:branch]
93
+ depth = hash_map[:depth] ||= true
94
+ if path
49
95
  profile_path = self.profile.send(:defined_in_file).dirname
50
96
  real_path = Pathname.new(path).expand_path(profile_path)
51
97
  end
52
98
  # 找到本地组件库 执行 git pull
53
99
  if real_path && File.directory?(real_path)
54
- self.install_local_pod(name, options)
100
+ hash_map[:path] = real_path
101
+ self.install_local_pod(self.name, hash_map)
55
102
  return
56
103
  end
57
104
 
58
105
  # 根据tag, commit下载文件
59
- hash_map = options
60
106
  hash_map.delete(:path)
61
107
  if tag || commit
62
108
  hash_map.delete(:branch)
63
109
  hash_map.delete(:depth)
64
- self.target.store_pod(name, hash_map)
110
+ self.target.store_pod(self.real_name, hash_map)
65
111
  return
66
112
  end
67
113
 
@@ -70,17 +116,19 @@ module LgPodPlugin
70
116
  hash_map.delete(:tag)
71
117
  hash_map.delete(:commit)
72
118
  hash_map.delete(:depth)
73
- self.downloader.download_init(name, options)
119
+ self.downloader.download_init(self.name, options)
74
120
  self.downloader.pre_download_pod(self.git_util)
75
- self.target.store_pod(name, hash_map)
121
+ self.target.store_pod(self.real_name, hash_map)
76
122
  end
77
123
 
78
124
  end
79
125
 
126
+ private
127
+
80
128
  def install_form_specs(spec_path = nil)
81
129
  spec_path ||= './Specs'
82
130
  path = File.expand_path(spec_path, Dir.pwd)
83
- file_objects = Dir.glob(File.expand_path("*.rb",path)).map do |file_path|
131
+ file_objects = Dir.glob(File.expand_path("*.rb", path)).map do |file_path|
84
132
  #读取 xxx.rb文件
85
133
  Spec.form_file(file_path)
86
134
  end
@@ -95,27 +143,30 @@ module LgPodPlugin
95
143
  end
96
144
 
97
145
  private
146
+
98
147
  def install_local_pod(name, options = {})
99
148
  hash_map = options
100
- path = options[:path]
149
+ local_path = options[:path]
101
150
  branch = options[:branch]
102
- unless Dir.exist?(path)
103
- puts "no such file or directory at path => `#{path}`"
151
+ unless Dir.glob(File.expand_path(".git", local_path)).count > 0
152
+ LgPodPlugin.log_red("pod `#{name}` at path => #{local_path} 找不到.git目录")
104
153
  return
105
154
  end
106
- local_path = Pathname(path)
107
- unless local_path.glob("*.git").empty?
108
- puts "path => `#{local_path}` 找不到.git目录"
155
+ unless Dir.glob(File.expand_path("#{name}.podspec", local_path)).count > 0
156
+ LgPodPlugin.log_red("pod `#{name}` at path => #{local_path} 找不到#{name}.podspec文件")
157
+ return
109
158
  end
159
+
110
160
  self.git_util.git_init(name, :branch => branch, :path => local_path)
111
- self.git_util.git_local_pod_check
161
+ self.git_util.git_local_pod_check(local_path)
162
+ hash_map[:path] = local_path.to_path
112
163
  hash_map.delete(:tag)
113
164
  hash_map.delete(:git)
114
165
  hash_map.delete(:depth)
115
166
  hash_map.delete(:commit)
116
167
  hash_map.delete(:branch)
117
168
  # 安装本地私有组件库
118
- self.target.store_pod(name, hash_map)
169
+ self.target.store_pod(self.real_name, hash_map)
119
170
  end
120
171
 
121
172
  end
@@ -1,3 +1,3 @@
1
1
  module LgPodPlugin
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
data/lib/lg_pod_plugin.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'git'
2
2
  require 'sqlite3'
3
3
  require "lg_pod_plugin/version"
4
+ require 'cocoapods/user_interface'
4
5
  require_relative 'lg_pod_plugin/database'
5
6
  require_relative 'lg_pod_plugin/download'
6
7
  require_relative 'lg_pod_plugin/git_util'
@@ -10,17 +11,59 @@ require 'cocoapods-core/podfile/target_definition'
10
11
 
11
12
  module LgPodPlugin
12
13
 
14
+ class String
15
+ # colorization
16
+ def colorize(color_code)
17
+ "\e[#{color_code}m#{self}\e[0m"
18
+ end
19
+
20
+ def red
21
+ colorize(31)
22
+ end
23
+
24
+ def green
25
+ colorize(32)
26
+ end
27
+
28
+ def yellow
29
+ colorize(33)
30
+ end
31
+
32
+ def blue
33
+ colorize(34)
34
+ end
35
+
36
+ def pink
37
+ colorize(35)
38
+ end
39
+
40
+ def light_blue
41
+ colorize(36)
42
+ end
43
+ end
44
+
13
45
  class Error < StandardError; end
14
- # 在已经存在target下边安装pod
15
- def self.install(defined_in_file = nil, profile, &block)
16
- Installer.new(defined_in_file, profile, &block)
46
+
47
+ def self.log_red(msg)
48
+ Pod::CoreUI.puts msg.red
49
+ end
50
+
51
+ def self.log_blue(msg)
52
+ Pod::CoreUI.puts msg.blue
53
+ end
54
+
55
+ def self.log_green(msg)
56
+ Pod::CoreUI.puts msg.green
57
+ end
58
+
59
+ def self.log(msg)
60
+ Pod::CoreUI.puts msg
17
61
  end
18
62
 
19
- # 通过spec文件安装
20
- def self.install_form_spec(profile, spec_path = nil)
21
- return Installer.new(profile).install_form_specs(spec_path)
63
+ # 对 Profile 方法进行拓展
64
+ def pod(name, *requirements)
65
+ Installer.new(self, name, requirements)
22
66
  end
23
67
 
24
- # autoload :Command, '../lib/command/command'
25
68
  end
26
69
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lg_pod_plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - dongzb01
@@ -111,14 +111,12 @@ dependencies:
111
111
  description: 拦截pod_install 方法, 并设置 pod 方法参数列表
112
112
  email:
113
113
  - 1060545231@qq.com
114
- executables:
115
- - lg
114
+ executables: []
116
115
  extensions: []
117
116
  extra_rdoc_files: []
118
117
  files:
119
118
  - LICENSE
120
119
  - README.md
121
- - bin/lg
122
120
  - lib/command/cache.rb
123
121
  - lib/command/command.rb
124
122
  - lib/lg_pod_plugin.rb
data/bin/lg DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ruby
2
- puts "这是我的第一个ruby项目"
3
- puts ENV["NAME"]
4
- puts ARGV
5
-
6
- # require 'command/command'
7
- #
8
- # LgPodPlugin::Command.run(ARGV)