fastlane-plugin-git_clone 0.1.2 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5acd083c43d02c1fb2b3910ff0f66c49d6e32a10971a65359ded2284f41ea129
4
- data.tar.gz: 7eab0dd8701f86ade3b73262125c346acd726959ece4c0b083259a81b578d621
3
+ metadata.gz: 64eb120dee35d9d1e1e5e6fae180359223e450afa5d1e838903b9feea5102c2f
4
+ data.tar.gz: d8a21a8d511c01026c7fc3c42e06af2e9d976e31a29e3262fabfcb985cbd63dd
5
5
  SHA512:
6
- metadata.gz: 0a80e05fe61b5fbe42a6e3e36c791fb3ef975075509058b8733892216d55ca49afad99d76e45adf609ac2ee8c22919e79fb7084a84d7b15b142606b5ec50dbb5
7
- data.tar.gz: '095d7b2317e3a9fbcb094c9948da2458b636b18a68cbf75cb5e3935daf643f6d9e597ddcf8e34798df70a700033b6dfbd1a0454db485843acf3707ef53cbf8cd'
6
+ metadata.gz: acfe0b8f735ae5c78c4ca20d16831526632230d0b7abdb7561ad3334f33e74e8d999d5ca1bee7138260b625c4858c64c54f8e7dc8a33406065d139b3d7916a28
7
+ data.tar.gz: 7967cd0c99c8813699726b88329193f1af626fbd5647920e0898426e338477ee77c6d8b3f92610dd433d7293eb7c6996bf56d1ecc8078aab8af1c3b1b7fb89e7
data/README.md CHANGED
@@ -21,20 +21,65 @@ a wrapper for git clone command
21
21
  Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
22
22
 
23
23
  ```ruby
24
- ret = git_clone(git: "git@gitee.com:garywade/cartool.git")
25
- UI.message(ret)
26
-
27
- ret = git_clone(git: "git@gitee.com:garywade/cartool.git", path: "/Users/xiongzenghui/Desktop/cartool")
28
- UI.message(ret)
29
-
30
- ret = git_clone(git: "git@gitee.com:garywade/cartool.git", path: "/Users/xiongzenghui/Desktop/cartool", branch: "master")
31
- UI.message(ret)
32
-
33
- ret = git_clone(git: "git@gitee.com:garywade/cartool.git", path: "/Users/xiongzenghui/Desktop/cartool", branch: "master", depth: 1)
34
- UI.message(ret)
35
-
36
- ret = git_clone(git: "git@gitee.com:garywade/cartool.git", path: "/Users/xiongzenghui/Desktop/cartool", branch: "master", depth: 1, single_branch: true)
37
- UI.message(ret)
24
+ git = 'git@xx.com:xx/xxx.git'
25
+
26
+ # ok
27
+ ret = git_clone(git: git, path: '/Users/xiongzenghui/Desktop/test')
28
+ pp ret
29
+
30
+ # ok
31
+ ret = git_clone(
32
+ git: git,
33
+ path: '/Users/xiongzenghui/Desktop/test',
34
+ branch: 'test'
35
+ )
36
+ pp ret
37
+
38
+ # ok
39
+ ret = git_clone(
40
+ git: git,
41
+ path: '/Users/xiongzenghui/Desktop/test',
42
+ tag: '1.0.0'
43
+ )
44
+ pp ret
45
+
46
+ # ok
47
+ ret = git_clone(
48
+ git: git,
49
+ path: '/Users/xiongzenghui/Desktop/test',
50
+ branch: 'test',
51
+ depth: 1,
52
+ single_branch: true
53
+ )
54
+ pp ret
55
+
56
+ # ok
57
+ ret = git_clone(
58
+ git: git,
59
+ path: '/Users/xiongzenghui/Desktop/test',
60
+ commit: '2a0eaa52d76a09dca8d12d484f73b3b4debea033'
61
+ )
62
+ pp ret
63
+
64
+ # ok
65
+ ret = git_clone(
66
+ git: git,
67
+ path: '/Users/xiongzenghui/Desktop/test',
68
+ commit: '2a0eaa52d76a09dca8d12d484f73b3b4debea033',
69
+ # branch: 'test' # => error
70
+ # tag: '1.0.0' # => error
71
+ # depth: 1 # => error
72
+ # single_branch: true # => error
73
+ )
74
+ pp ret
75
+
76
+ # ok
77
+ ret = git_clone(
78
+ git: git,
79
+ path: '/Users/xiongzenghui/Desktop/test',
80
+ update: true
81
+ )
82
+ pp ret
38
83
  ```
39
84
 
40
85
  ## Run tests for this plugin
@@ -5,35 +5,89 @@ module Fastlane
5
5
  module Actions
6
6
  class GitCloneAction < Action
7
7
  def self.run(params)
8
- git = params[:git]
9
- clone_path = params[:path]
10
- git_repo_name = File.basename(git, '.git')
8
+ require 'fileutils'
11
9
 
12
- rm_cmd = if clone_path
13
- "rm -rf #{clone_path}"
10
+ git = params[:git]
11
+ path = params[:path]
12
+ update = params[:update] || false
13
+
14
+ rm_rf_repo(path) unless update
15
+
16
+ if File.exist?(path)
17
+ # update
18
+ update(params)
14
19
  else
15
- "rm -rf #{git_repo_name}"
20
+ # clone
21
+ clone(params)
16
22
  end
17
- system(rm_cmd)
18
-
19
- clone_cmd = "git clone #{git} "
20
- clone_cmd << "-b #{params[:branch]} " if params[:branch]
21
- clone_cmd << "--depth=#{params[:depth]} " if params[:depth]
22
- clone_cmd << "--single-branch " if params[:single_branch]
23
- clone_cmd << clone_path if clone_path
24
- ret = system(clone_cmd)
25
- if ret
26
- UI.success "Successfully finished git clone"
23
+ end
24
+
25
+ def self.rm_rf_repo(path)
26
+ UI.message "❗️[git_clone] rm -rf #{path}"
27
+ FileUtils.rm_rf(path)
28
+ end
29
+
30
+ def self.clone(params)
31
+ UI.message "❗️[git_clone] clone ..."
32
+
33
+ git = params[:git]
34
+ path = params[:path]
35
+ branch = params[:branch]
36
+ commit = params[:commit]
37
+ tag = params[:tag]
38
+ depth = params[:depth] || 1
39
+ single_branch = params[:single_branch] || false
40
+
41
+ cmd = if commit
42
+ [
43
+ "git clone #{git} #{path}",
44
+ "cd #{path}",
45
+ "git checkout #{commit}"
46
+ ].join(';')
27
47
  else
28
- UI.error "Failed finished git clone"
48
+ [
49
+ "git clone #{git} #{path}",
50
+ ("-b #{branch} " if branch),
51
+ ("-b #{tag} " if tag),
52
+ ("--depth=#{depth} " if depth),
53
+ ("--single-branch " if single_branch)
54
+ ].compact.join(' ')
29
55
  end
30
56
 
31
- ret
57
+ if sh(cmd) { |s| s.success? }
58
+ UI.success "✅ clone #{git} to #{path}"
59
+ true
60
+ else
61
+ UI.error "❌ clone #{git}"
62
+ false
63
+ end
32
64
  end
33
65
 
34
- #####################################################
35
- # @!group Documentation
36
- #####################################################
66
+ def self.update(params)
67
+ UI.message "❗️[git_clone] update ..."
68
+
69
+ git = params[:git]
70
+ path = params[:path]
71
+ branch = params[:branch]
72
+ origin = params[:origin] || true
73
+ upstream = params[:upstream] || false
74
+
75
+ cmd = [
76
+ "cd #{path}",
77
+ "git reset --hard HEAD",
78
+ "git checkout #{branch}",
79
+ ("git pull origin #{branch}" if origin),
80
+ ("git pull upstream #{branch}" if upstream)
81
+ ].compact.join(';')
82
+
83
+ if sh(cmd) { |s| s.success? }
84
+ UI.success "✅ update #{git} to #{path}"
85
+ true
86
+ else
87
+ UI.error "❌ update #{git}"
88
+ false
89
+ end
90
+ end
37
91
 
38
92
  def self.description
39
93
  "this is a wrapper for git clone command"
@@ -47,7 +101,6 @@ module Fastlane
47
101
  [
48
102
  FastlaneCore::ConfigItem.new(
49
103
  key: :git,
50
- env_name: "FL_GIT_CLONE_GIT",
51
104
  description: "where from clone",
52
105
  verify_block: proc do |value|
53
106
  UI.user_error!("No git given, pass using `git: 'git'`") unless (value and not value.empty?)
@@ -55,13 +108,37 @@ module Fastlane
55
108
  ),
56
109
  FastlaneCore::ConfigItem.new(
57
110
  key: :path,
58
- env_name: "FL_GIT_CLONE_PATH",
59
111
  description: "where clone to dir",
60
- optional: true
112
+ verify_block: proc do |value|
113
+ UI.user_error!("No path given, pass using `path: 'path'`") unless (value and not value.empty?)
114
+ end
115
+ ),
116
+ FastlaneCore::ConfigItem.new(
117
+ key: :update,
118
+ description: "update when git repo exist ?",
119
+ optional: true,
120
+ default_value: false,
121
+ is_string: false,
122
+ conflicting_options: [:branch, :tag, :commit, :depth, :single_branch]
123
+ ),
124
+ FastlaneCore::ConfigItem.new(
125
+ key: :origin,
126
+ description: "git pull origin <branch>",
127
+ optional: true,
128
+ default_value: false,
129
+ is_string: false,
130
+ conflicting_options: [:upstream]
131
+ ),
132
+ FastlaneCore::ConfigItem.new(
133
+ key: :upstream,
134
+ description: "git upstream origin <branch>",
135
+ optional: true,
136
+ default_value: false,
137
+ is_string: false,
138
+ conflicting_options: [:origin]
61
139
  ),
62
140
  FastlaneCore::ConfigItem.new(
63
141
  key: :depth,
64
- env_name: "FL_GIT_CLONE_DEPTH",
65
142
  description: "--depth=1",
66
143
  is_string: false,
67
144
  type: Integer,
@@ -69,13 +146,24 @@ module Fastlane
69
146
  ),
70
147
  FastlaneCore::ConfigItem.new(
71
148
  key: :branch,
72
- env_name: "FL_GIT_CLONE_BRANCH",
73
149
  description: "-b master",
74
- optional: true
150
+ optional: true,
151
+ conflicting_options: [:tag, :commit]
152
+ ),
153
+ FastlaneCore::ConfigItem.new(
154
+ key: :tag,
155
+ description: "git tag",
156
+ optional: true,
157
+ conflicting_options: [:branch, :commit]
158
+ ),
159
+ FastlaneCore::ConfigItem.new(
160
+ key: :commit,
161
+ description: "git checkout commit",
162
+ optional: true,
163
+ conflicting_options: [:branch, :tag, :depth, :single_branch]
75
164
  ),
76
165
  FastlaneCore::ConfigItem.new(
77
166
  key: :single_branch,
78
- env_name: "FL_GIT_CLONE_SINGLE_BRANCH",
79
167
  description: "--single-branch",
80
168
  optional: true,
81
169
  default_value: false,
@@ -102,21 +190,21 @@ module Fastlane
102
190
  git: "git@xxx.com:user/app.git"
103
191
  )',
104
192
  'git_clone(
105
- git: "git@xxx.com:user/app.git",
106
- path: "/Users/xiongzenghui/Desktop/cartool",
193
+ git: "git@xxx.com:user/app.git",
194
+ path: "/Users/xiongzenghui/Desktop/cartool",
107
195
  branch: "master"
108
196
  )',
109
197
  'git_clone(
110
- git: "git@xxx.com:user/app.git",
111
- path: "/Users/xiongzenghui/Desktop/cartool",
112
- branch: "master",
198
+ git: "git@xxx.com:user/app.git",
199
+ path: "/Users/xiongzenghui/Desktop/cartool",
200
+ branch: "master",
113
201
  depth: 1
114
202
  )',
115
203
  'git_clone(
116
- git: "git@xxx.com:user/app.git",
117
- path: "/Users/xiongzenghui/Desktop/cartool",
118
- branch: "master",
119
- depth: 1,
204
+ git: "git@xxx.com:user/app.git",
205
+ path: "/Users/xiongzenghui/Desktop/cartool",
206
+ branch: "master",
207
+ depth: 1,
120
208
  single_branch: true
121
209
  )'
122
210
  ]
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module GitClone
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-git_clone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - xiongzenghui
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-15 00:00:00.000000000 Z
11
+ date: 2019-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  requirements: []
170
- rubygems_version: 3.0.4
170
+ rubygems_version: 3.0.6
171
171
  signing_key:
172
172
  specification_version: 4
173
173
  summary: a wrapper for git clone command