Class: Anima::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/anima/cli.rb,
lib/anima/cli/mcp.rb,
lib/anima/cli/mcp/secrets.rb

Defined Under Namespace

Classes: Mcp

Constant Summary collapse

VALID_ENVIRONMENTS =
%w[development test production].freeze
DEFAULT_PORT =
42134
DEFAULT_HOST =
"localhost:#{DEFAULT_PORT}"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/anima/cli.rb', line 13

def self.exit_on_failure?
  true
end

Instance Method Details

#installObject



18
19
20
21
# File 'lib/anima/cli.rb', line 18

def install
  require_relative "installer"
  Installer.new.run
end

#startObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/anima/cli.rb', line 28

def start
  env = options[:environment] || ENV.fetch("RAILS_ENV", "development")
  unless VALID_ENVIRONMENTS.include?(env)
    say "Invalid environment: #{env}. Must be one of: #{VALID_ENVIRONMENTS.join(", ")}", :red
    exit 1
  end

  ENV["RAILS_ENV"] = env

  unless File.directory?(File.expand_path("~/.anima"))
    say "Anima is not installed. Run 'anima install' first.", :red
    exit 1
  end

  gem_root = Anima.gem_root
  system(gem_root.join("bin/rails").to_s, "db:prepare", chdir: gem_root.to_s) || abort("db:prepare failed")
  exec("foreman", "start", "-f", gem_root.join("Procfile").to_s, "-p", DEFAULT_PORT.to_s, chdir: gem_root.to_s)
end

#tuiObject



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/anima/cli.rb', line 49

def tui
  require "ratatui_ruby"
  require_relative "../tui/app"

  host = options[:host] || DEFAULT_HOST

  say "Connecting to brain at #{host}...", :cyan

  cable_client = TUI::CableClient.new(host: host)
  cable_client.connect

  TUI::App.new(cable_client: cable_client).run
end

#versionObject



65
66
67
68
# File 'lib/anima/cli.rb', line 65

def version
  require_relative "version"
  say "anima #{Anima::VERSION}"
end