Class: Baid::Commands::Install

Inherits:
Object
  • Object
show all
Defined in:
lib/baid/commands/install.rb

Instance Method Summary collapse

Constructor Details

#initialize(project_dir: ".") ⇒ Install



6
7
8
# File 'lib/baid/commands/install.rb', line 6

def initialize(project_dir: ".")
  @project_dir = project_dir
end

Instance Method Details

#execute(skill_name) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/baid/commands/install.rb', line 10

def execute(skill_name)
  client = ApiClient.new
  response = client.get("/skills/resolve", name: skill_name)

  if response.code != 200
    puts "Skill '#{skill_name}' not found."
    return
  end

  data = JSON.parse(response.body)
  skill = data["skill"]

  config = Config.load_project_config
  agents = (config["agents"] || []).map do |name|
    AgentDetector::AGENTS.find { |a| a[:name] == name }
  end.compact

  SkillWriter.write(skill, agents, @project_dir)

  # Update installed_skills in config
  config["installed_skills"] ||= []
  config["installed_skills"] << skill["name"] unless config["installed_skills"].include?(skill["name"])
  Config.save_project_config(config)

  puts "Installed #{skill['name']}@#{skill['version']}"
end