Module: Gity::Operation::Delete
Instance Method Summary collapse
Methods included from Common
#_cls, #_flash, #_fmt, #_logger, #_operation_done, #_pastel, #_prmt, #print_header
Instance Method Details
#delete(ws, files, &block) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/gity/operation/delete.rb', line 8 def delete(ws, files, &block) _cls print_header _prmt.puts print_workspace_items(ws, files, skip_other_files: true) _prmt.puts efiles = files.modified[:files] + files.staged[:files] begin sels = _prmt.multi_select(_fmt("Please select all applicable files to be deleted : "), filter: true, per_page: 10) do |m| efiles.sort.each do |f| m.choice _fmt(f),f end files.new[:files].each do |f| m.choice _fmt(f),f end m.choice "Done", :done end sels.delete_if { |e| e == :done } sels.each do |s| if s.is_a?(GitCli::Delta::NewFile) skip = _prmt.no? _fmt "Proceed to delete regular file '#{s}'? " if not skip block.call(:before_delete_new_file, s) if block FileUtils.rm(s.path) block.call(:after_delete_new_file, s) if block end elsif s.is_a?(GitCli::Delta::ModifiedFile) # not staged skip = _prmt.no? _fmt "Proceed to delete modified file '#{s}'? " if not skip block.call(:before_delete_modified_file, s) if block ws.remove_from_vcs(s.path) block.call(:after_delete_modified_file, s) if block end elsif s.is_a?(GitCli::Delta::StagedFile) skip = _prmt.no? "Proceed to delete staged file '#{s}'? " if not skip block.call(:before_delete_staged_file, s) if block ws.remove_from_staging(s.path) block.call(:after_delete_staged_file, s) if block end end end rescue TTY::Reader::InputInterrupt end end |