Class: Vines::Services::Command::Init

Inherits:
Object
  • Object
show all
Defined in:
lib/vines/services/command/init.rb

Instance Method Summary collapse

Instance Method Details

#run(opts) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/vines/services/command/init.rb', line 7

def run(opts)
  raise 'vines-services init <domain>' unless opts[:args].size == 1
  @domain = opts[:args].first.downcase
  base = File.expand_path(@domain)
  raise "Directory already initialized: #{@domain}" if File.exists?(base)
  raise "Agent gem required: gem install vines-agent" unless agent_gem_installed?

  EM.run do
    Fiber.new do
      @db = find_db
      create_views
      user = save_user(ask_for_jid, ask_for_password)
      create_services(user)
      @token = Kit.auth_token

      Dir.mkdir(base)
      %w[server services agent].each do |sub|
        dir = File.expand_path(sub, base)
        Dir.mkdir(dir)
        Dir.chdir(dir) { send("init_#{sub}") }
      end
      puts "Initialized server, agent, and services directories: #{@domain}"
      puts "Login as #{user.jid} at http://localhost:5280/"
      EM.stop
    end.resume
  end
end