Sha256: 293df65bce6071391df540b131ece35b5ff6b815f55789127979579fcd5fcf46

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

module CodeKindly
  module Utils
    class File
      class << self
        def all (path)
          CodeKindly::Utils::Dir.all path
        end

        def choose_from_options (task, h = nil)
          require "highline"
          h ||= HighLine.new
          dir_path = ::File.join(Rails.root, "db", "data", task.name.split(":").last)
          file_opts = file_options(dir_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)
          file_path = file_opts.fetch(option, nil)
          if file_path.present?
            file_path = ::File.join(dir_path, file_path)
          end
          file_path
        end

        def file_options (path)
          require 'map'
          options = Map.new
          key = 0
          find(path).each do |file|
            options[key+=1] = file
          end
          options
        end

        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)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
codekindly-utils-0.0.1 lib/code_kindly/utils/file.rb