module Billy::Knowledge

Attributes

knowledge_file[W]

Public Instance Methods

default_knowledge() click to toggle source
# File lib/billygoat/knowledge.rb, line 28
def default_knowledge
  {
    skills: [
      {
        name: 'Learn',
        internal_location: system_skills_path("learn.rb")
      },
      {
        name: 'Show',
        internal_location: system_skills_path("show.rb")
      },
      {
        name: 'Update',
        internal_location: system_skills_path("update.rb")
      },
      {
        name: 'Help',
        internal_location: system_skills_path("help.rb")
      },
      {
        name: 'Git',
        internal_location: system_skills_path("git.rb")
      },
      {
        name: 'Document',
        internal_location: system_skills_path("document.rb")
      },
      {
        name: 'Say',
        internal_location: system_skills_path("say.rb")
      }
    ]
  }
end
knowledge() click to toggle source
# File lib/billygoat/knowledge.rb, line 14
def knowledge
  return @knowledge if @knowledge
  save_knowledge(default_knowledge) unless File.exists?(knowledge_path)
  @knowledge = YAML.load_file(knowledge_path)
end
knowledge_file() click to toggle source
# File lib/billygoat/knowledge.rb, line 5
def knowledge_file
  @knowledge_file ||= "knowledge.yml"
end
knowledge_path() click to toggle source
# File lib/billygoat/knowledge.rb, line 10
def knowledge_path
  "#{config_path}/#{knowledge_file}"
end
save_knowledge(knowledge = @knowledge) click to toggle source
# File lib/billygoat/knowledge.rb, line 70
def save_knowledge(knowledge = @knowledge)
  create_config_path
  save_yaml(knowledge_path, knowledge)
end
update_knowledge() click to toggle source
# File lib/billygoat/knowledge.rb, line 20
def update_knowledge
  knowledge[:skills] = skill_set
    .skills
    .reject{ |skill| autoloaded_skills.map{|s| s[:name]}.include? skill.name }
    .uniq{ |skill| skill.name }
    .map(&:to_h)
end
validate_knowledge() click to toggle source
# File lib/billygoat/knowledge.rb, line 63
def validate_knowledge
  return if knowledge &&
    knowledge.is_a?(Hash) &&
    knowledge.include?(:skills)
  fail "Naaa! Broken knowledge file."
end