class Prj::App
Attributes
config_path[RW]
Public Class Methods
new(output, args = [])
click to toggle source
# File lib/prj/app.rb, line 11 def initialize(output, args = []) @letters = String(args.first).each_char.to_a @output = output end
Public Instance Methods
config()
click to toggle source
# File lib/prj/app.rb, line 30 def config @config ||= begin config = File.exists?(self.class.config_path) ? YAML.load(File.read(self.class.config_path)) : {} default_config.merge(config) end end
run()
click to toggle source
# File lib/prj/app.rb, line 16 def run if @letters.empty? @output.puts File.expand_path(config.fetch("projects_root")) return 0 end finder = Finder.new(config.fetch("projects_root"), symbolize_keys(config)) filter = Filter.new(@letters, config.fetch("case_sensitive")) directories = finder.find_project_directories filtered_directories = filter.filter(directories) target_directory = File.expand_path(File.join(config.fetch("projects_root"), filtered_directories.first.to_s)) @output.puts target_directory 0 end
Private Instance Methods
default_config()
click to toggle source
# File lib/prj/app.rb, line 39 def default_config default_config = { "projects_root" => File.expand_path("~/Projects"), "vcs_directories" => [".git"], "case_sensitive" => true } end
symbolize_keys(hash)
click to toggle source
# File lib/prj/app.rb, line 47 def symbolize_keys(hash) Hash[hash.map { |k, v| [k.to_sym, v] }] end