lib/code_kindly/utils/file.rb in codekindly-utils-0.0.5 vs lib/code_kindly/utils/file.rb in codekindly-utils-0.0.6
- old
+ new
@@ -1,59 +1,57 @@
+# frozen_string_literal: true
+
module CodeKindly
module Utils
class File
+ include Presence
+
class << self
- def all (path)
+ def all(path)
CodeKindly::Utils::Dir.all path
end
- def choose_from_options (directory_path, h = nil)
- require "highline"
- h ||= HighLine.new
- file_opts = file_options(directory_path)
- return nil if file_opts.blank?
- msg = "Select an existing file:"
- file_opts.each do |k,v|
- msg += "\n #{k}: #{v}"
- end
- msg += "\n 0: None of the above"
- option = h.ask(msg, Integer)
+ def choose_from_options(dir_path, h_l = nil)
+ require 'highline'
+ h_l ||= HighLine.new
+ file_opts = file_options(dir_path)
+ return nil if blank? file_opts
+ msg = file_opts.inject('') { |(k, v), m| m + "\n #{k}: #{v}" }
+ option = h_l.ask("Select a file:#{msg}\n 0: None", Integer)
file_path = file_opts.fetch(option, nil)
- if file_path.present?
- file_path = ::File.join(directory_path, file_path)
- end
- file_path
+ return if file_path.nil?
+ ::File.join(dir_path, file_path)
end
- def file_options (path)
- require "map"
+ def file_options(path)
+ require 'map'
options = Map.new
key = 0
find(path).each do |file|
- options[key+=1] = file
+ options[key += 1] = file
end
options
end
- def find (path)
- require "fileutils"
+ def find(path)
+ require 'fileutils'
all(path).select { |entry| ::File.file?("#{path}/#{entry}") }
end
- def trash! (file_string)
- require "open3"
- stdin, stdout, stderr = Open3.popen3("ls #{file_string}")
- if stdout.gets
- # move to trash (or delete) existing downloaded files
- # sudo gem install osx-trash (http://www.dribin.org/dave/blog/archives/2008/05/24/osx_trash/)
- stdin, stdout, stderr = Open3.popen3("which trash")
- trash = stdout.gets
- command = case
- when trash then "#{trash.strip} #{file_string}" # output of `which` has ending \n
- when ::File.directory?("~/.Trash") then "mv #{file_string} ~/.Trash"
- else "rm #{file_string}"
- end
- Kernel.system(command)
+ # move to trash (or delete) existing downloaded files
+ # sudo gem install osx-trash (http://www.dribin.org/dave/blog/archives/2008/05/24/osx_trash/)
+ def trash!(file_string)
+ Kernel.system(command_to_trash_files(file_string))
+ end
+
+ private
+
+ def command_to_trash_files(file_string)
+ return if Command.run("ls #{file_string}").result.nil?
+ trash = OS.which('trash')
+ if trash then "#{trash.chomp} #{file_string}"
+ elsif ::File.directory?('~/.Trash') then "mv #{file_string} ~/.Trash"
+ else "rm #{file_string}"
end
end
end
end
end