Class: Anima::CLI
- Inherits:
-
Thor
- Object
- Thor
- Anima::CLI
- Defined in:
- lib/anima/cli.rb
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
12 13 14 |
# File 'lib/anima/cli.rb', line 12 def self.exit_on_failure? true end |
Instance Method Details
#install ⇒ Object
17 18 19 20 |
# File 'lib/anima/cli.rb', line 17 def install require_relative "installer" Installer.new.run end |
#start ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/anima/cli.rb', line 27 def start env = [: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.("~/.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 |
#tui ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/anima/cli.rb', line 48 def tui require "ratatui_ruby" require "net/http" require "json" require_relative "../tui/app" host = [:host] || DEFAULT_HOST say "Connecting to brain at #{host}...", :cyan session_id = fetch_current_session_with_retry(host) say "Session ##{session_id} — starting TUI", :cyan cable_client = TUI::CableClient.new(host: host, session_id: session_id) cable_client.connect TUI::App.new(cable_client: cable_client).run end |