release-gem 0.1.30 → 0.3.0

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: b8cc16c62b759b319b58033ee7678d1767aa098f9190c50f38aeaa429694da3d
4
- data.tar.gz: 76da97ad501ca7828a7c0b2bd84de02d50bd9d9933b2c1ea47830cb5f3a54b15
3
+ metadata.gz: 9fa0f7de3f5def10b5829328b5409fd5236adc500a851ce291c24c80b5c3266e
4
+ data.tar.gz: 16f704d586405286e753f7cf3046c6604126d9dfb168ec6aca97cf9c3684282f
5
5
  SHA512:
6
- metadata.gz: 8585884b1b10d700ed6f913a40776ba50b98f58905ba83611e9cef0dece134f2aba5c9c831e1515902f98a0b9f40b6104dbbcf35f5f472270702bc9c421177e1
7
- data.tar.gz: 2a4ed2747d026f60da0e6e45c0f969d5baac20492659030cb78b6839074f74df4ca8e631c2772a72bdc3593246c1ad70b2c5dea3a8679a10aa8371e784c6c040
6
+ metadata.gz: c23655648823e1de3d485a420afb73a5645a371618c47f0a0fabca3996fc849b60c33bc9613d178e9b9a4dc7e6d323baeaf6a1135bd48d3159e6d414dc1dbf85
7
+ data.tar.gz: c21d2a999a56b8778e1e8c061532f5aced2c0408fcf6317010070b63ada86135bfc4270c33bd50eebf9af0228da37c024ad97e98bb7cba125debe3e276f9ea02
data/Gemfile.lock CHANGED
@@ -1,13 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- release-gem (0.1.30)
5
- colorize
6
- git_cli
7
- teLogger
8
- toolrack
9
- tty-command
10
- tty-prompt
4
+ release-gem (0.3.0)
5
+ colorize (~> 1.1)
6
+ git_cli (~> 0.13)
7
+ pastel (~> 0.8)
8
+ teLogger (~> 0.2)
9
+ toolrack (~> 0.23)
10
+ tty-command (~> 0.10)
11
+ tty-prompt (~> 0.23)
11
12
 
12
13
  GEM
13
14
  remote: https://rubygems.org/
@@ -0,0 +1,16 @@
1
+
2
+
3
+ module Release
4
+ module Gem
5
+ module Cli
6
+ def self.cls
7
+ print "\e[2J\e[f"
8
+ end
9
+
10
+ def self.print_header(path = Dir.getwd)
11
+ puts Gem.pastel.bright_yellow("\n Standard GEM CLI release flow version #{Release::Gem::VERSION}")
12
+ puts Gem.pastel.bright_yellow(" Rubygems location : #{path}\n")
13
+ end
14
+ end
15
+ end
16
+ end
@@ -35,7 +35,7 @@ module Release
35
35
 
36
36
  if block
37
37
 
38
- block.call(:action_start, :relase_dependencies)
38
+ block.call(:action_start, :release_dependencies)
39
39
 
40
40
  gemdepInst.development_gem.each do |k,v|
41
41
  res = gemdepInst.infect_gem(v, k, &block)
@@ -45,7 +45,8 @@ module Release
45
45
  end
46
46
 
47
47
 
48
- keys = gemdepInst.development_gem.keys
48
+ #keys = gemdepInst.development_gem.keys
49
+ keys = gemdepInst.development_gem
49
50
  loop do
50
51
  begin
51
52
  conf = block.call(:define_gem_prod_config, { gems: keys })
@@ -59,7 +60,7 @@ module Release
59
60
  block.call(:invalid_gem_prod_config, "Expected return from :define_gem_prod_config is a hash of \"gem name\" => { type: [:runtime | :dev], version: \">= 1.2.0\" }. Note version can be empty")
60
61
  end
61
62
  rescue GemDepError => ex
62
- block.call(:invlid_gem_prod_config, ex.message)
63
+ block.call(:invalid_gem_prod_config, ex.message)
63
64
  end
64
65
  end
65
66
 
@@ -86,7 +87,7 @@ module Release
86
87
  end
87
88
 
88
89
  def dependency_restore
89
- puts "restoring dependency"
90
+ #puts "restoring dependency"
90
91
  gemdepInst.restore_dev_gem
91
92
  end
92
93
 
@@ -127,7 +128,14 @@ module Release
127
128
 
128
129
  cp "Gem version updated. Start building the gem"
129
130
  begin
130
- Rake::Task["build"].execute
131
+
132
+ cmd = "cd #{@root} && rake build"
133
+ Gem.logger.debug "Command to build gem : #{cmd}"
134
+ res = `#{cmd} 2>&1`
135
+ block.call(:gem_building, $?, res) if block
136
+
137
+ #Dir.chdir(@root)
138
+ #Rake::Task["build"].execute
131
139
 
132
140
  if $?
133
141
  cp "Gem build successfully at #{Gem.format_dt(Time.now)}"
@@ -167,39 +175,45 @@ module Release
167
175
 
168
176
  raise GemActionError, "No version given to push. Push aborted" if is_empty?(version)
169
177
 
170
- cred = find_rubygems_api_key
178
+ proceed = block.call(:confirm_proceed, name, version)
179
+ if proceed
171
180
 
172
- selAcct = cred.keys.first
173
- if cred.keys.length > 1
174
- Gem.logger.debug "Multiple rubygems account detected."
175
- # multiple account configured...
176
- if block
177
- selAcct = block.call(:multiple_rubygems_account, cred)
178
- raise GemActionError, "No rubygems account is selected." if is_empty?(selAcct)
181
+ cred = find_rubygems_api_key
182
+
183
+ selAcct = cred.keys.first
184
+ if cred.keys.length > 1
185
+ Gem.logger.debug "Multiple rubygems account detected."
186
+ # multiple account configured...
187
+ if block
188
+ selAcct = block.call(:multiple_rubygems_account, cred)
189
+ raise GemActionError, "No rubygems account is selected." if is_empty?(selAcct)
190
+ end
179
191
  end
180
- end
181
192
 
182
193
 
183
- # find the package
184
- foundGem = Dir.glob(File.join(@root,"**/#{name}-#{version}*.gem"))
185
- if foundGem.length == 0
186
- raise GemActionError, "No built gem with version '#{version}' found."
187
- elsif foundGem.length > 1
188
- if block
189
- targetGem = block.call(:multiple_built_gems, foundGem)
194
+ # find the package
195
+ foundGem = Dir.glob(File.join(@root,"**/#{name}-#{version}*.gem"))
196
+ if foundGem.length == 0
197
+ raise GemActionError, "No built gem with version '#{version}' found."
198
+ elsif foundGem.length > 1
199
+ if block
200
+ targetGem = block.call(:multiple_built_gems, foundGem)
201
+ else
202
+ raise GemActionError, "#{foundGem.length} versions of gem found. Please provide a block for selection"
203
+ end
190
204
  else
191
- raise GemActionError, "#{foundGem.length} versions of gem found. Please provide a block for selection"
205
+ targetGem = foundGem.first
192
206
  end
193
- else
194
- targetGem = foundGem.first
195
- end
196
207
 
197
- cmd = "cd #{@root} && gem push #{targetGem} -k #{selAcct}"
198
- Gem.logger.debug "Command to publish gem : #{cmd}"
199
- res = `#{cmd} 2>&1`
200
- block.call(:gem_push_output, $?, res) if block
201
- [$?, res]
208
+ cmd = "cd #{@root} && gem push #{targetGem} -k #{selAcct}"
209
+ Gem.logger.debug "Command to publish gem : #{cmd}"
210
+ res = `#{cmd} 2>&1`
211
+ block.call(:gem_push_output, $?, res) if block
212
+ [$?, res]
202
213
 
214
+ else
215
+ block.call(:gem_push_skipped, name, version)
216
+ end
203
217
  end
204
218
 
205
219
  def install(*args, &block)
@@ -1,6 +1,7 @@
1
1
 
2
2
  require 'tty/prompt'
3
3
  require_relative 'gem_action'
4
+ require_relative 'cli'
4
5
 
5
6
  module Release
6
7
  module Gem
@@ -20,16 +21,17 @@ module Release
20
21
  instance_eval(&block) if block
21
22
  end
22
23
 
24
+ # proxy method for Action::GemAction#release_dependencies
23
25
  def release_dependencies
24
26
  @inst.release_dependencies do |ops, *args|
25
- case ops
27
+ case ops
26
28
  when :action_start
27
29
  @pmt.say pmsg("\n Release dependencies starting...\n")
28
30
 
29
31
  ## from release_infector
30
32
  when :multiple_gemspec
31
33
  v = args.first
32
- @pmt.select(pmsg("\n There are multiple gemspecs found. Please select one to proceed : ")) do |m|
34
+ @pmt.select(pmsg("\n There are multiple gemspecs found. Please select one to proceed : "), filter: true) do |m|
33
35
  v.each do |vv|
34
36
  m.choice vv, vv
35
37
  end
@@ -61,7 +63,7 @@ module Release
61
63
 
62
64
  when :select_terminal
63
65
  v = args.first
64
- @pmt.select(pmsg("\n Please select a terminal for development GEM '#{v[:name]}' release : ")) do |m|
66
+ @pmt.select(pmsg("\n Please select a terminal for development GEM '#{v[:name]}' release : "), filter: true) do |m|
65
67
  v[:options].each do |t|
66
68
  m.choice t, t
67
69
  end
@@ -85,13 +87,13 @@ module Release
85
87
  when :define_gem_prod_config
86
88
 
87
89
  config = {}
88
- selections = args.first[:gems]
90
+ selections = args.first[:gems].clone
89
91
 
90
92
  loop do
91
93
 
92
- sel = @pmt.select(pmsg("\n The following development gems requires configuration. Please select one to configure ")) do |m|
93
- selections.each do |g|
94
- m.choice g, g
94
+ sel = @pmt.select(pmsg("\n The following development gems requires configuration. Please select one to configure "), filter: true) do |m|
95
+ selections.each do |key, val|
96
+ m.choice key, key
95
97
  end
96
98
  end
97
99
 
@@ -104,7 +106,15 @@ module Release
104
106
 
105
107
  config[sel][:type] = type
106
108
 
107
- ver = @pmt.ask(pmsg("\n Is there specific version pattern (including the ~>/>/>=/= of gemspec) for the gem in production? (Not mandatory) : "))
109
+ gemAct = Action::GemAction.new(selections[sel])
110
+ currentVersion = gemAct.find_gem_version do |ops, *val|
111
+ case ops
112
+ when :multiple_version_files_found
113
+ # abort. Expected only 1 version files exist
114
+ end
115
+ end
116
+
117
+ ver = @pmt.ask(pmsg("\n Is there specific version pattern (including the ~>/>/>=/= of gemspec) for the gem in production? (Not mandatory) : "), value: currentVersion)
108
118
  config[sel][:version] = ver if not_empty?(ver)
109
119
 
110
120
  @pmt.puts pmsg(" ** Done configure for gem #{sel}")
@@ -121,6 +131,9 @@ module Release
121
131
  when :no_development_gems_found
122
132
  @pmt.puts pmsg("\n No development gem(s) in used found")
123
133
 
134
+ when :invalid_gem_prod_config
135
+ @pmt.puts pastel.red(pmsg("\n #{args.first}"))
136
+
124
137
  end
125
138
  end
126
139
 
@@ -148,7 +161,7 @@ module Release
148
161
  if preset
149
162
 
150
163
  opts = args.first
151
- res = @pmt.select(pmsg("\n Please select new gem version : \n")) do |m|
164
+ res = @pmt.select(pmsg("\n Please select new gem version : \n"), filter: true) do |m|
152
165
  opts[:proposed_next].reverse.each do |v|
153
166
  m.choice v,v
154
167
  end
@@ -214,6 +227,11 @@ module Release
214
227
  def push(*pargs, &block)
215
228
  @inst.push(*pargs) do |ops, *args|
216
229
  case ops
230
+ when :confirm_proceed
231
+ name = args.first
232
+ ver = args[1]
233
+ @pmt.yes?(" Push gem '#{name}' version #{ver} to Rubygems? ")
234
+
217
235
  when :multiple_rubygems_account
218
236
  creds = args.first
219
237
  res = @pmt.select(pmsg("\n Multiple rubygems account detected. Please select one : ")) do |m|
@@ -231,10 +249,13 @@ module Release
231
249
  st = pargs.first
232
250
  res = pargs[1]
233
251
  if st
234
- @pmt.puts pmsg("\n Gem push successful.", :green)
252
+ @pmt.puts pmsg("\n Gem push successful. #{res}", :green)
235
253
  else
236
254
  @pmt.puts pmsg("\n Gem push failed. Error was :\n #{res}", :red)
237
255
  end
256
+
257
+ when :gem_push_skipped
258
+
238
259
  end
239
260
  end
240
261
 
@@ -291,6 +312,10 @@ module Release
291
312
  end
292
313
  end
293
314
 
315
+ def pastel
316
+ Gem.pastel
317
+ end
318
+
294
319
  end
295
320
  end
296
321
  end