release-gem 0.1.30 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -26,50 +26,81 @@ module Release
26
26
  instance_eval(&block) if block
27
27
  end
28
28
 
29
+ def has_staged_file?
30
+ stgDir, stgFiles = @ws.staged_files
31
+ not_empty?(stgDir) or not_empty?(stgFiles)
32
+ end
33
+
34
+ def has_new_files?
35
+ newDir, newFiles = @ws.new_files
36
+ not_empty?(newDir) or not_empty?(newFiles)
37
+ end
38
+
39
+ def has_modified_files?
40
+ modDir, modFiles = @ws.modified_files
41
+ not_empty?(modDir) or not_empty?(modFiles)
42
+ end
43
+
44
+ def has_deleted_files?
45
+ delDir, delFiles = @ws.deleted_files
46
+ not_empty?(delDir) or not_empty?(delFiles)
47
+ end
48
+
49
+ def overview(&block)
50
+ raise VcsActionError, "block is required" if not block
51
+
52
+ stgDir, stgFiles = @ws.staged_files
53
+ modDir, modFiles = @ws.modified_files
54
+ newDir, newFiles = @ws.new_files
55
+ delDir, delFiles = @ws.deleted_files
56
+
57
+ modFiles.delete_if { |f| stgFiles.include?(f) }
58
+ modDir.delete_if { |f| stgDir.include?(f) }
59
+
60
+ newFiles.delete_if { |f| stgFiles.include?(f) }
61
+ newDir.delete_if { |f| stgDir.include?(f) }
62
+
63
+ delFiles.delete_if { |f| stgFiles.include?(f) }
64
+ delDir.delete_if { |f| stgDir.include?(f) }
65
+
66
+ block.call(:workspace_overview, { modified: { files: modFiles, dirs: modDir }, new: { files: newFiles, dirs: newDir }, deleted: { files: delFiles, dirs: delDir }, staged: { files: stgFiles, dirs: stgDir } } )
67
+
68
+ end
69
+
29
70
  def add(&block)
30
71
 
31
72
  if block
32
-
33
- loop do
34
73
 
35
- stgDir, stgFiles = @ws.staged_files
36
- modDir, modFiles = @ws.modified_files
37
- newDir, newFiles = @ws.new_files
38
- delDir, delFiles = @ws.deleted_files
39
-
40
- modFiles.delete_if { |f| stgFiles.include?(f) }
41
- modDir.delete_if { |f| stgDir.include?(f) }
42
-
43
- newFiles.delete_if { |f| stgFiles.include?(f) }
44
- newDir.delete_if { |f| stgDir.include?(f) }
45
-
46
- delFiles.delete_if { |f| stgFiles.include?(f) }
47
- delDir.delete_if { |f| stgDir.include?(f) }
48
-
49
- res = block.call(:select_files_to_add, { modified: { files: modFiles, dirs: modDir }, new: { files: newFiles, dirs: newDir }, deleted: { files: delFiles, dirs: delDir }, staged: { files: stgFiles, dirs: stgDir }, vcs: self } )
50
-
51
- doneTriggered = false
52
- sel = res.clone
53
- if sel.include?(:done)
54
- sel.delete_if { |e| e == :done }
55
- doneTriggered = true
56
- end
74
+ stgDir, stgFiles = @ws.staged_files
75
+ modDir, modFiles = @ws.modified_files
76
+ newDir, newFiles = @ws.new_files
77
+ delDir, delFiles = @ws.deleted_files
57
78
 
58
- if not_empty?(sel)
59
- st, rres = @ws.add_to_staging(*sel)
60
- if st
61
- block.call(:files_added_successfully, { count: sel.length, output: rres })
62
- else
63
- block.call(:files_failed_to_be_added, { output: rres } )
64
- end
65
- else
66
- block.call(:no_files_given)
67
- end
79
+ modFiles.delete_if { |f| stgFiles.include?(f) }
80
+ modDir.delete_if { |f| stgDir.include?(f) }
81
+
82
+ newFiles.delete_if { |f| stgFiles.include?(f) }
83
+ newDir.delete_if { |f| stgDir.include?(f) }
84
+
85
+ delFiles.delete_if { |f| stgFiles.include?(f) }
86
+ delDir.delete_if { |f| stgDir.include?(f) }
87
+
88
+ res = block.call(:select_files_to_add, { modified: { files: modFiles, dirs: modDir }, new: { files: newFiles, dirs: newDir }, deleted: { files: delFiles, dirs: delDir }, staged: { files: stgFiles, dirs: stgDir }, vcs: self } )
68
89
 
69
- break if doneTriggered
90
+ sel = res.clone
70
91
 
92
+ if not_empty?(sel)
93
+ st, rres = @ws.add_to_staging(*sel)
94
+ if st
95
+ block.call(:files_added_successfully, { count: sel.length, output: rres })
96
+ else
97
+ block.call(:files_failed_to_be_added, { output: rres } )
98
+ end
99
+ else
100
+ block.call(:no_files_given)
71
101
  end
72
102
 
103
+
73
104
  end
74
105
 
75
106
  end
@@ -78,40 +109,31 @@ module Release
78
109
 
79
110
  if block
80
111
 
81
- loop do
82
112
 
83
- stgDir, stgFiles = @ws.staged_files
84
- modDir, modFiles = @ws.modified_files
85
-
86
- modFiles.delete_if { |f| stgFiles.include?(f) }
87
- modDir.delete_if { |f| stgDir.include?(f) }
88
-
89
- res = block.call(:select_files_to_diff, { modified: { files: modFiles, dirs: modDir }, staged: { files: stgFiles, dirs: stgDir }, vcs: self } )
90
-
91
- doneTriggered = false
92
- sel = res.clone
93
- if sel.include?(:done)
94
- sel.delete_if { |e| e == :done }
95
- doneTriggered = true
96
- end
113
+ stgDir, stgFiles = @ws.staged_files
114
+ modDir, modFiles = @ws.modified_files
97
115
 
98
- if not_empty?(sel)
99
- sel.each do |s|
100
- st, rres = @ws.diff_file(s)
101
- if st
102
- block.call(:diff_file_result, { file: s, output: rres })
103
- else
104
- block.call(:diff_file_error, { file: s, output: rres } )
105
- end
106
- end
107
- else
108
- block.call(:no_files_given)
109
- end
116
+ modFiles.delete_if { |f| stgFiles.include?(f) }
117
+ modDir.delete_if { |f| stgDir.include?(f) }
110
118
 
111
- break if doneTriggered
119
+ res = block.call(:select_files_to_diff, { modified: { files: modFiles, dirs: modDir }, staged: { files: stgFiles, dirs: stgDir }, vcs: self } )
112
120
 
121
+ sel = res.clone
122
+
123
+ if not_empty?(sel)
124
+ sel.each do |s|
125
+ st, rres = @ws.diff_file(s)
126
+ if st
127
+ block.call(:diff_file_result, { file: s, output: rres })
128
+ else
129
+ block.call(:diff_file_error, { file: s, output: rres } )
130
+ end
131
+ end
132
+ else
133
+ block.call(:no_files_given)
113
134
  end
114
135
 
136
+
115
137
  end
116
138
 
117
139
  end
@@ -120,32 +142,21 @@ module Release
120
142
 
121
143
  if block
122
144
 
123
- loop do
145
+ newDir, newFiles = @ws.new_files
124
146
 
125
- newDir, newFiles = @ws.new_files
147
+ res = block.call(:select_files_to_ignore, { files: newFiles, dirs: newDir } )
126
148
 
127
- res = block.call(:select_files_to_ignore, { files: newFiles, dirs: newDir } )
149
+ sel = res.clone
128
150
 
129
- doneTriggered = false
130
- sel = res.clone
131
- if sel.include?(:done)
132
- sel.delete_if { |e| e == :done }
133
- doneTriggered = true
134
- end
135
-
136
- if not_empty?(sel)
137
- st, rres = @ws.ignore(*sel)
138
- if st
139
- block.call(:files_ignored_successfully, { count: sel.length, output: rres })
140
- else
141
- block.call(:files_failed_to_be_ignored, { output: rres } )
142
- end
151
+ if not_empty?(sel)
152
+ st, rres = @ws.ignore(*sel)
153
+ if st
154
+ block.call(:files_ignored_successfully, { count: sel.length, output: rres })
143
155
  else
144
- block.call(:no_files_given)
156
+ block.call(:files_failed_to_be_ignored, { output: rres } )
145
157
  end
146
-
147
- break if doneTriggered
148
-
158
+ else
159
+ block.call(:no_files_given)
149
160
  end
150
161
 
151
162
  else
@@ -160,34 +171,24 @@ module Release
160
171
 
161
172
  if block
162
173
 
163
- loop do
164
-
165
- stgDir, stgFiles = @ws.staged_files
174
+ stgDir, stgFiles = @ws.staged_files
166
175
 
167
- res = block.call(:select_files_to_remove, { files: stgFiles, dirs: stgDir } )
176
+ res = block.call(:select_files_to_remove, { files: stgFiles, dirs: stgDir } )
168
177
 
169
- doneTriggered = false
170
- sel = res.clone
171
- if sel.include?(:done)
172
- sel.delete_if { |e| e == :done }
173
- doneTriggered = true
174
- end
178
+ sel = res.clone
175
179
 
176
- if not_empty?(sel)
177
- st, rres = @ws.remove_from_staging(*sel)
178
- if st
179
- block.call(:files_removed_successfully, { count: sel.length, output: rres })
180
- else
181
- block.call(:files_removed_to_be_ignored, { output: rres } )
182
- end
180
+ if not_empty?(sel)
181
+ st, rres = @ws.remove_from_staging(*sel)
182
+ if st
183
+ block.call(:files_removed_successfully, { count: sel.length, output: rres })
183
184
  else
184
- block.call(:no_files_given)
185
+ block.call(:files_removed_to_be_ignored, { output: rres } )
185
186
  end
186
-
187
- break if doneTriggered
188
-
187
+ else
188
+ block.call(:no_files_given)
189
189
  end
190
190
 
191
+
191
192
  else
192
193
 
193
194
  @ws.removed_from_staging(*files) if not_empty?(files)
@@ -197,66 +198,93 @@ module Release
197
198
  end
198
199
 
199
200
  def delete_file(*files, &block)
200
-
201
+
201
202
  if block
202
-
203
- loop do
204
203
 
205
- stgDir, stgFiles = @ws.staged_files
206
- modDir, modFiles = @ws.modified_files
207
- newDir, newFiles = @ws.new_files
208
-
209
- modFiles.delete_if { |f| stgFiles.include?(f) }
210
- modDir.delete_if { |f| stgDir.include?(f) }
211
-
212
- newFiles.delete_if { |f| stgFiles.include?(f) }
213
- newDir.delete_if { |f| stgDir.include?(f) }
214
-
215
- res = block.call(:select_files_to_delete, { modified: { files: modFiles, dirs: modDir }, new: { files: newFiles, dirs: newDir }, staged: { files: stgFiles, dirs: stgDir } } )
216
-
217
- doneTriggered = false
218
- sel = res.clone
219
- if sel.include?(:done)
220
- sel.delete_if { |e| e == :done }
221
- doneTriggered = true
222
- end
204
+ stgDir, stgFiles = @ws.staged_files
205
+ modDir, modFiles = @ws.modified_files
206
+ newDir, newFiles = @ws.new_files
207
+
208
+ modFiles.delete_if { |f| stgFiles.include?(f) }
209
+ modDir.delete_if { |f| stgDir.include?(f) }
210
+
211
+ newFiles.delete_if { |f| stgFiles.include?(f) }
212
+ newDir.delete_if { |f| stgDir.include?(f) }
213
+
214
+ res = block.call(:select_files_to_delete, { modified: { files: modFiles, dirs: modDir }, new: { files: newFiles, dirs: newDir }, staged: { files: stgFiles, dirs: stgDir } } )
215
+
216
+ sel = res.clone
223
217
 
224
- if not_empty?(sel)
225
- staged = []
226
- nonTrack = []
227
- sel.each do |s|
228
- if s.is_a?(GitCli::Delta::NewFile)
229
- confirm = block.call(:confirm_nontrack_delete, s.path)
230
- if confirm
231
- FileUtils.rm(s.path)
232
- block.call(:nontrack_file_deleted, s.path)
233
- end
234
- elsif s.is_a?(GitCli::Delta::ModifiedFile)
235
- # not staged
236
- confirm = block.call(:confirm_vcs_delete, s.path)
237
- puts "vcs confirm : #{confirm}"
238
- if confirm
239
- @ws.remove_from_vcs(s.path)
240
- block.call(:vcs_file_deleted, s.path)
241
- end
242
- elsif s.is_a?(GitCli::Delta::StagedFile)
243
- confirm = block.call(:confirm_staged_delete, s.path)
244
- if confirm
245
- @ws.remove_from_staging(s.path)
246
- block.call(:staged_file_deleted, s.path)
247
- end
218
+ if not_empty?(sel)
219
+ staged = []
220
+ nonTrack = []
221
+ sel.each do |s|
222
+ if s.is_a?(GitCli::Delta::NewFile)
223
+ confirm = block.call(:confirm_nontrack_delete, s.path)
224
+ if confirm
225
+ FileUtils.rm(s.path)
226
+ block.call(:nontrack_file_deleted, s.path)
227
+ end
228
+ elsif s.is_a?(GitCli::Delta::ModifiedFile)
229
+ # not staged
230
+ confirm = block.call(:confirm_vcs_delete, s.path)
231
+ puts "vcs confirm : #{confirm}"
232
+ if confirm
233
+ @ws.remove_from_vcs(s.path)
234
+ block.call(:vcs_file_deleted, s.path)
235
+ end
236
+ elsif s.is_a?(GitCli::Delta::StagedFile)
237
+ confirm = block.call(:confirm_staged_delete, s.path)
238
+ if confirm
239
+ @ws.remove_from_staging(s.path)
240
+ block.call(:staged_file_deleted, s.path)
248
241
  end
249
242
  end
250
-
251
- else
252
- block.call(:no_files_given)
253
243
  end
254
244
 
255
- break if doneTriggered
245
+ else
246
+ block.call(:no_files_given)
247
+ end
248
+
256
249
 
250
+ end
251
+ end
252
+
253
+ def commit_all(msg = nil, &block)
254
+
255
+ if block
256
+
257
+ stgDir, stgFiles = @ws.staged_files
258
+ modDir, modFiles = @ws.modified_files
259
+ delDir, delFiles = @ws.deleted_files
260
+
261
+ modFiles.delete_if { |f| stgFiles.include?(f) }
262
+ modDir.delete_if { |f| stgDir.include?(f) }
263
+
264
+ delFiles.delete_if { |f| stgFiles.include?(f) }
265
+ delDir.delete_if { |f| stgDir.include?(f) }
266
+
267
+ msg = block.call(:commit_message, { modified: { files: modFiles, dirs: modDir }, deleted: { files: delFiles, dirs: delDir }, staged: { files: stgFiles, dirs: stgDir } }) if is_empty?(msg)
268
+ raise VcsActionError, "Commit message is empty" if is_empty?(msg)
269
+
270
+ cp "Commit with user message : #{msg}"
271
+ st, res = @ws.commit_all(msg)
272
+ if st
273
+ block.call(:commit_successful, res) if block
274
+ else
275
+ block.call(:commit_failed, res) if block
257
276
  end
277
+ [st, res]
278
+
279
+ else
280
+
281
+ msg = "Auto commit all ('-am' flag) by release-gem" if is_empty?(msg)
282
+ cp msg
283
+ # changed files only without new files
284
+ @ws.commit_all(msg)
258
285
 
259
286
  end
287
+
260
288
  end
261
289
 
262
290
  def commit(msg = nil, &block)
@@ -265,32 +293,33 @@ module Release
265
293
  if block
266
294
 
267
295
  counter = 0
268
- loop do
269
-
270
- stgDir, stgFiles = @ws.staged_files
271
- modDir, modFiles = @ws.modified_files
272
- newDir, newFiles = @ws.new_files
273
- delDir, delFiles = @ws.deleted_files
274
296
 
275
- modFiles.delete_if { |f| stgFiles.include?(f) }
276
- modDir.delete_if { |f| stgDir.include?(f) }
277
-
278
- newFiles.delete_if { |f| stgFiles.include?(f) }
279
- newDir.delete_if { |f| stgDir.include?(f) }
297
+ stgDir, stgFiles = @ws.staged_files
298
+ modDir, modFiles = @ws.modified_files
299
+ newDir, newFiles = @ws.new_files
300
+ delDir, delFiles = @ws.deleted_files
280
301
 
281
- delFiles.delete_if { |f| stgFiles.include?(f) }
282
- delDir.delete_if { |f| stgDir.include?(f) }
302
+ modFiles.delete_if { |f| stgFiles.include?(f) }
303
+ modDir.delete_if { |f| stgDir.include?(f) }
283
304
 
284
- # block should call vcs for add, remove, ignore and other operations
285
- res = block.call(:select_files_to_commit, { modified: { files: modFiles, dirs: modDir }, new: { files: newFiles, dirs: newDir }, deleted: { files: delFiles, dirs: delDir }, staged: { files: stgFiles, dirs: stgDir }, vcs: self, counter: counter } )
305
+ newFiles.delete_if { |f| stgFiles.include?(f) }
306
+ newDir.delete_if { |f| stgDir.include?(f) }
286
307
 
287
- break if res == :skip or res == :done
308
+ delFiles.delete_if { |f| stgFiles.include?(f) }
309
+ delDir.delete_if { |f| stgDir.include?(f) }
288
310
 
289
- counter += 1
311
+ # block should call vcs for add, remove, ignore and other operations
312
+ res = block.call(:select_files_to_commit, { modified: { files: modFiles, dirs: modDir }, new: { files: newFiles, dirs: newDir }, deleted: { files: delFiles, dirs: delDir }, staged: { files: stgFiles, dirs: stgDir }, vcs: self, counter: counter } )
290
313
 
291
- end
314
+ if not_empty?(res)
315
+ st, cres = add_to_staging(*res)
316
+ if st
317
+ @prmt.puts Gem.pastel.green(pmsg("\n Files added successfully"))
318
+ else
319
+ @prmt.puts Gem.pastel.red(pmsg("\n Files failed to be added. Message was : #{cres}"))
320
+ proceed = @prmt.yes?(" There are files failed to be added. Proceed with commit without those files?")
292
321
 
293
- if res == :done
322
+ end
294
323
 
295
324
  stgDir, stgFiles = @ws.staged_files
296
325
  block.call(:staged_elements_of_commit, { files: stgFiles, dirs: stgDir })
@@ -307,18 +336,19 @@ module Release
307
336
  end
308
337
  [st, res]
309
338
 
339
+ else
340
+ @prmt.puts Gem.pastel.yellow("\n No files selected to be committed. Skipping commit.")
341
+
310
342
  end
311
343
 
312
344
  else
313
345
 
314
- msg = "Auto commit all ('-am' flag) by gem-release gem" if is_empty?(msg)
346
+ msg = "Auto commit all ('-am' flag) by release-gem" if is_empty?(msg)
315
347
  cp msg
316
348
  # changed files only without new files
317
349
  @ws.commit_all(msg)
318
350
  end
319
351
 
320
- res
321
-
322
352
  end
323
353
 
324
354
  def tag(*args, &block)
@@ -376,9 +406,9 @@ module Release
376
406
  end
377
407
  end
378
408
 
379
- raise VcsActionError, "Push repository remote cannot be empty" if is_empty?(remote)
409
+ #raise VcsActionError, "Push repository remote cannot be empty" if is_empty?(remote)
380
410
 
381
- if remote != :skip
411
+ if not_empty?(remote) and remote != :skip
382
412
 
383
413
  branch = @ws.current_branch if is_empty?(branch)
384
414