module Potassium::CLI
Public Class Methods
find_closest_recipe(recipe_list, possible_recipe)
click to toggle source
# File lib/potassium/cli/commands/install.rb, line 58 def self.find_closest_recipe(recipe_list, possible_recipe) return nil unless possible_recipe highest_distance = 100 closest_match = nil recipe_list.each do |recipe| distance = Levenshtein.distance(recipe, possible_recipe) if distance < highest_distance highest_distance = distance closest_match = recipe end end closest_match end
guess_recipe_name(args)
click to toggle source
# File lib/potassium/cli/commands/install.rb, line 34 def self.guess_recipe_name(args) if recipe_exists?(args) args.first else find_closest_recipe(recipe_name_list, args.first) end end
recipe_exists?(args)
click to toggle source
# File lib/potassium/cli/commands/install.rb, line 30 def self.recipe_exists?(args) recipe_name_list.include?(args.first) end
recipe_name_list()
click to toggle source
# File lib/potassium/cli/commands/install.rb, line 42 def self.recipe_name_list list = [] source_root = File.expand_path('../../../recipes', __FILE__) Dir.entries(source_root).each do |file_name| if file_name.end_with?('.rb') recipe_name = file_name.gsub('.rb', '') require "potassium/recipes/#{recipe_name}" recipe_class = Recipes.const_get(recipe_name.camelize) list << recipe_name if recipe_class.method_defined?(:install) end end list end