class Brick::CLI::Run

Public Instance Methods

run() click to toggle source

By default, it's running in background

# File lib/brick/cli/run.rb, line 44
def run
  #::Brick::CLI::logger.info "hello, #{banner}, option[:no_cache]=#{::Brick::Config.configuration}"
  project_name = ::Brick::Config[:project]
  
  config_file = ::Brick::Config[:config_file]
  
  project_dir = File.dirname(config_file)
  
  detach_mode = ::Brick::Config[:detach_mode]
  
  start_link_mode = ::Brick::Config[:deps]
  
  project = ::Brick::Models::Project.new(project_name,{:config_file => config_file})
  
  entrypoint = ::Brick::Config[:entrypoint]
  
  if @cmd_args.size > 0
    service_name = @cmd_args[0]
  else
    puts "You must specify the servcie name to run"
    exit 1
  end
  
  cmd_array = @cmd_args - [@cmd_args[0]]
  
  
  service = project.get_service service_name
  
  if cmd_array.size >0
    service.service_config_hash["command"] = cmd_array
  end
  
  unless entrypoint.nil?
    service.service_config_hash["entrypoint"] = entrypoint.split(" ")
  end
  
  disable_tty=::Brick::Config[:T]
  
  if disable_tty
    service.service_config_hash["tty"] = false
  else
    service.service_config_hash["tty"] = true
  end
  
  
  
  puts "running service #{service_name}"
  
  if service.running?
    puts "exec #{cmd_array} on running service #{service_name}"
    
    service.exec cmd_array, {:detach => detach_mode}
    
  else
    puts "start service #{service_name}"
    project.run_services(service_name,start_link_mode)
    
    unless service.running?
      raise "#{service_name} is failed to start"
    end
    
    unless detach_mode
      service.attach
    end
  end
  
  ::Brick::Models::Service.wait_for_deamon
  
end