class Canals::Cli::Session
Public Instance Methods
on_all_canals_in_session(command, &block)
click to toggle source
# File lib/canals/cli/session.rb, line 60 def on_all_canals_in_session(command, &block) return if session_empty? Canals.session.each_obj do |canal| say "#{command.to_s.capitalize} canal #{canal.name.inspect}:", :green block.call(canal) end say say "#{command} done.", :green end
restart()
click to toggle source
# File lib/canals/cli/session.rb, line 39 def restart on_all_canals_in_session(:restart) do |canal| trestart(canal) end end
restore()
click to toggle source
# File lib/canals/cli/session.rb, line 27 def restore on_all_canals_in_session(:restore) do |canal| if Canals.isalive? canal say "Canal #{canal.name.inspect} is running." else Canals.session.del(canal.name) tstart(canal) end end end
session_alive(session)
click to toggle source
# File lib/canals/cli/session.rb, line 78 def session_alive(session) @alive ||= {} pid = session[:pid] @alive[pid] ||= Canals.session.alive? pid end
session_col_title(col)
click to toggle source
# File lib/canals/cli/session.rb, line 84 def session_col_title(col) case col when "pid" "PID" else col.sub("_", " ").titleize end end
session_col_val(session, key)
click to toggle source
# File lib/canals/cli/session.rb, line 93 def session_col_val(session, key) c = session_color(session) val = case key when "local_port" if session[key.to_sym] session[key.to_sym] else entry = Canals.repository.get(session[:name]) entry.local_port if entry end when "up" checkmark(session_alive(session)) else session[key.to_sym] end set_color(val, *c) end
session_color(session)
click to toggle source
# File lib/canals/cli/session.rb, line 70 def session_color(session) if session_alive(session) :white else [:dark_gray, :dim] end end
session_empty?()
click to toggle source
# File lib/canals/cli/session.rb, line 111 def session_empty? if Canals.session.empty? say "Canal session is currently empty." true else false end end
show()
click to toggle source
# File lib/canals/cli/session.rb, line 14 def show return if session_empty? require 'terminal-table' require 'canals/core_ext/string' columns = ["up", "pid", "name", "local_port", "socket"] rows = Canals.session.sort{ |a,b| a[:name] <=> b[:name] } .map { |s| columns.map{ |c| session_col_val(s, c) } } table = Terminal::Table.new :headings => columns.map{|c| session_col_title(c) }, :rows => rows table.align_column(3, :right) say table end
stop()
click to toggle source
# File lib/canals/cli/session.rb, line 46 def stop on_all_canals_in_session(:stop) do |canal| tstop(canal) end end
suspend()
click to toggle source
# File lib/canals/cli/session.rb, line 53 def suspend on_all_canals_in_session(:suspend) do |canal| tstop(canal, remove_from_session: false) end end