release-gem 0.1.29 → 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: 84f42d97fbc8fff6f263e782576d772d581b3b2ce2d3bed06e73a6b8c3ab328d
4
- data.tar.gz: 25ac79dd9038c5ac19975bd22fe651add1f8304464cab77370493374cb93601c
3
+ metadata.gz: 9fa0f7de3f5def10b5829328b5409fd5236adc500a851ce291c24c80b5c3266e
4
+ data.tar.gz: 16f704d586405286e753f7cf3046c6604126d9dfb168ec6aca97cf9c3684282f
5
5
  SHA512:
6
- metadata.gz: 8c6b3f34b02a1f89275215a3f518966f67eaf03083fd0f83c67d8118551f2cc8af2a9520f258adb8d736d96c954f1d05bb23ad6dd81289641f6a3650fa08fabf
7
- data.tar.gz: 7c0895ab232d4f6f316f242c80de190ced0f00ae9400f5c44150963e39ae99021c8724341cbeea89e81ca1632aaaa998b715d13d0ed490a95df2abc491da4a84
6
+ metadata.gz: c23655648823e1de3d485a420afb73a5645a371618c47f0a0fabca3996fc849b60c33bc9613d178e9b9a4dc7e6d323baeaf6a1135bd48d3159e6d414dc1dbf85
7
+ data.tar.gz: c21d2a999a56b8778e1e8c061532f5aced2c0408fcf6317010070b63ada86135bfc4270c33bd50eebf9af0228da37c024ad97e98bb7cba125debe3e276f9ea02
data/Gemfile.lock CHANGED
@@ -1,23 +1,24 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- release-gem (0.1.29)
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/
14
15
  specs:
15
16
  colorize (1.1.0)
16
17
  diff-lcs (1.5.0)
17
- git_cli (0.13.2)
18
+ git_cli (0.13.6)
18
19
  ptools (~> 1.4.0)
19
- teLogger
20
- toolrack
20
+ teLogger (> 0.2)
21
+ toolrack (> 0.23)
21
22
  pastel (0.8.0)
22
23
  tty-color (~> 0.5)
23
24
  ptools (1.4.3)
@@ -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
@@ -42,6 +44,10 @@ module Release
42
44
  when :gemspec_updated
43
45
  v = args.first
44
46
  @pmt.say pmsg("\n Gemspec file of GEM '#{v[:name]}' updated with release-gem gem")
47
+
48
+ when :gemspec_already_has_gem
49
+ v = args.first
50
+ @pmt.say pmsg("\n Gemspec file of GEM '#{v[:name]}' already has release-gem gem included. Skipped")
45
51
 
46
52
  when :adding_to_rackfile
47
53
  v = args.first
@@ -57,7 +63,7 @@ module Release
57
63
 
58
64
  when :select_terminal
59
65
  v = args.first
60
- @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|
61
67
  v[:options].each do |t|
62
68
  m.choice t, t
63
69
  end
@@ -81,13 +87,13 @@ module Release
81
87
  when :define_gem_prod_config
82
88
 
83
89
  config = {}
84
- selections = args.first[:gems]
90
+ selections = args.first[:gems].clone
85
91
 
86
92
  loop do
87
93
 
88
- sel = @pmt.select(pmsg("\n The following development gems requires configuration. Please select one to configure ")) do |m|
89
- selections.each do |g|
90
- 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
91
97
  end
92
98
  end
93
99
 
@@ -100,7 +106,15 @@ module Release
100
106
 
101
107
  config[sel][:type] = type
102
108
 
103
- 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)
104
118
  config[sel][:version] = ver if not_empty?(ver)
105
119
 
106
120
  @pmt.puts pmsg(" ** Done configure for gem #{sel}")
@@ -117,6 +131,9 @@ module Release
117
131
  when :no_development_gems_found
118
132
  @pmt.puts pmsg("\n No development gem(s) in used found")
119
133
 
134
+ when :invalid_gem_prod_config
135
+ @pmt.puts pastel.red(pmsg("\n #{args.first}"))
136
+
120
137
  end
121
138
  end
122
139
 
@@ -144,7 +161,7 @@ module Release
144
161
  if preset
145
162
 
146
163
  opts = args.first
147
- 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|
148
165
  opts[:proposed_next].reverse.each do |v|
149
166
  m.choice v,v
150
167
  end
@@ -210,6 +227,11 @@ module Release
210
227
  def push(*pargs, &block)
211
228
  @inst.push(*pargs) do |ops, *args|
212
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
+
213
235
  when :multiple_rubygems_account
214
236
  creds = args.first
215
237
  res = @pmt.select(pmsg("\n Multiple rubygems account detected. Please select one : ")) do |m|
@@ -227,10 +249,13 @@ module Release
227
249
  st = pargs.first
228
250
  res = pargs[1]
229
251
  if st
230
- @pmt.puts pmsg("\n Gem push successful.", :green)
252
+ @pmt.puts pmsg("\n Gem push successful. #{res}", :green)
231
253
  else
232
254
  @pmt.puts pmsg("\n Gem push failed. Error was :\n #{res}", :red)
233
255
  end
256
+
257
+ when :gem_push_skipped
258
+
234
259
  end
235
260
  end
236
261
 
@@ -287,6 +312,10 @@ module Release
287
312
  end
288
313
  end
289
314
 
315
+ def pastel
316
+ Gem.pastel
317
+ end
318
+
290
319
  end
291
320
  end
292
321
  end
@@ -111,18 +111,24 @@ module Release
111
111
  end
112
112
 
113
113
  cont = File.read(gs)
114
- lastEnd = cont.rindex("end")
115
114
 
116
- FileUtils.mv(gs, "#{gs}.bak")
117
- @backupFiles[gs] = "#{gs}.bak"
115
+ if (cont =~ /spec.add_development_dependency 'release-gem'/) == nil
116
+ lastEnd = cont.rindex("end")
118
117
 
119
- File.open(gs, "w") do |f|
120
- f.write cont[0...lastEnd]
121
- f.puts " spec.add_development_dependency 'release-gem'"
122
- f.puts "end"
123
- end
124
- block.call(:gemspec_updated, name: @name, gemspec: gs ) if block
118
+ FileUtils.mv(gs, "#{gs}.bak")
119
+ @backupFiles[gs] = "#{gs}.bak"
120
+
121
+ File.open(gs, "w") do |f|
122
+ f.write cont[0...lastEnd]
123
+ f.puts " spec.add_development_dependency 'release-gem'"
124
+ f.puts "end"
125
+ end
126
+ block.call(:gemspec_updated, name: @name, gemspec: gs ) if block
125
127
 
128
+ else
129
+ block.call(:gemspec_already_has_gem, name: @name, gemspec: gs) if block
130
+ end
131
+
126
132
  end # add_to_gemspec
127
133
 
128
134
  def activate_rakefile(&block)