Module: Gem::Skill::Runner

Defined in:
lib/gem/skill/runner.rb

Overview

Core install logic shared by gem_command and bundle_command. Callers are responsible for spinner.auto_spin and title setup before calling.

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Class Method Details

.install_skill(gem_name, version, spinner, force:, model:, verify: false) ⇒ Object

Generate + cache + link one skill, optionally verifying it against source. Returns a Runner::Result.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/gem/skill/runner.rb', line 20

def self.install_skill(gem_name, version, spinner, force:, model:, verify: false)
  if Cache.cached?(gem_name, version) && !force
    Linker.link(gem_name, version)
    content = Cache.read(gem_name, version)
    return finalize(gem_name, version, content, spinner, model: model, verify: verify, status: "already cached")
  end

  content = Generator.new(gem_name, version, model: model).generate(force: force)
  Linker.link(gem_name, version)
  finalize(gem_name, version, content, spinner, model: model, verify: verify, status: "done")
rescue => e
  spinner.error("failed")
  Result.failure(e.message)
end