Class: Gitdocs::Manager

Inherits:
Object
  • Object
show all
Defined in:
lib/gitdocs/manager.rb

Defined Under Namespace

Classes: RepoDescriptor

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_root, debug) {|@config| ... } ⇒ Manager

Returns a new instance of Manager.

Yields:



7
8
9
10
11
12
# File 'lib/gitdocs/manager.rb', line 7

def initialize(config_root, debug)
  @config = Configuration.new(config_root)
  @logger = Logger.new(File.expand_path('log', @config.config_root))
  @debug  = debug
  yield @config if block_given?
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



5
6
7
# File 'lib/gitdocs/manager.rb', line 5

def config
  @config
end

#debugObject (readonly)

Returns the value of attribute debug.



5
6
7
# File 'lib/gitdocs/manager.rb', line 5

def debug
  @debug
end

Instance Method Details

#restartObject



61
62
63
64
# File 'lib/gitdocs/manager.rb', line 61

def restart
  stop
  start
end

#search(term) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/gitdocs/manager.rb', line 16

def search(term)
  results = {}
  @runners.each_with_index do |runner, index|
    descriptor = RepoDescriptor.new(runner.root, index)
    repo_results = runner.search(term)
    results[descriptor] = repo_results unless repo_results.empty?
  end
  results
end

#startObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/gitdocs/manager.rb', line 26

def start
  self.log "Starting Gitdocs v#{VERSION}..."
  self.log "Using configuration root: '#{self.config.config_root}'"
  self.log "Shares: #{config.shares.map(&:inspect).join(", ")}"
  # Start the repo watchers
  runners = nil
  EM.run do
    self.log "Starting EM loop..."
    @runners = config.shares.map { |share| Runner.new(share) }
    @runners.each(&:run)
    # Start the web front-end
    if self.config.global.start_web_frontend
      Server.new(self, *@runners).start
      i = 0
      web_started = false
      begin
        TCPSocket.open('127.0.0.1', 8888).close
        web_started = true
      rescue Errno::ECONNREFUSED
        self.log "Retrying server loop..."
        sleep 0.2
        i += 1
        retry if i <= 20
      end
      self.log "Web server running: #{web_started}"
      system("open http://localhost:8888/") if self.config.global.load_browser_on_startup && web_started
    end
  end
rescue Exception => e # Report all errors in log
  self.log(e.class.inspect + " - " + e.inspect + " - " + e.message.inspect, :error)
  self.log(e.backtrace.join("\n"), :error)
ensure
  self.log("Gitdocs is terminating...goodbye\n\n")
end

#stopObject



66
67
68
# File 'lib/gitdocs/manager.rb', line 66

def stop
  EM.stop
end