ensime_bridge 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/ensime.rb +6 -2
  2. data/lib/ensime_bridge.rb +34 -23
  3. metadata +1 -1
data/lib/ensime.rb CHANGED
@@ -16,12 +16,12 @@ class Ensime
16
16
  def initialize conf_path
17
17
  @quiet = false
18
18
  @conf_path = conf_path
19
+ @version = "0.9.10-SNAPSHOT"
19
20
  @conf = Hash[File.read(conf_path).gsub("\n", "").gsub(
20
21
  "(", " ").gsub(")", " ").gsub('"', "").split(" :").collect do |x|
21
22
  m = x.match("\([^ ]*\) *\(.*\)$")
22
23
  [m[1], m[2]]
23
- end]
24
- @version = "0.9.10-SNAPSHOT"
24
+ end] if File.exists? conf_path
25
25
  end
26
26
  def get_classpath
27
27
  log = nil
@@ -66,6 +66,10 @@ EOF
66
66
  classpath + ":#{@conf['java-home']}/lib/tools.jar"
67
67
  end
68
68
  def run
69
+ if @conf.nil?
70
+ puts "no #{@conf_path} file found" if not quiet
71
+ return
72
+ end
69
73
  if is_running?
70
74
  puts "ensime is already running"
71
75
  else
data/lib/ensime_bridge.rb CHANGED
@@ -3,6 +3,7 @@ require 'websocket-eventmachine-client'
3
3
  require 'json'
4
4
  require 'thread'
5
5
  require 'base64'
6
+ require 'logger'
6
7
  require_relative 'ensime'
7
8
  class EnsimeBridge
8
9
  attr_accessor :socket, :quiet
@@ -27,39 +28,39 @@ class EnsimeBridge
27
28
  @queue = Queue.new
28
29
  @bridge_file = "#{@cache}bridge"
29
30
  @http_file = "#{@cache}http"
31
+ @logger = Logger.new(@cache + "bridge.log", 2, 100000)
30
32
  end
31
33
  def remote_stop
32
- s = get_socket(@bridge_file)
33
- s.puts "self.stop"
34
- s.close
34
+ if is_running?
35
+ s = get_socket(@bridge_file)
36
+ s.puts "self.stop"
37
+ s.close
38
+ end
35
39
  end
36
40
  def stop
37
41
  @ensime.stop
38
42
  exit
39
43
  end
40
- def log what
41
- Kernel.puts what.to_s if not quiet
42
- end
43
44
  def connect_to_ensime
44
45
  url = "ws://127.0.0.1:#{File.read("#{@cache}http").chomp}/jerky"
45
46
  @socket = WebSocket::EventMachine::Client.connect(:uri => url)
46
47
  @socket.onopen do
47
- log "Connected!"
48
+ @logger.info "Connected to ensime!"
48
49
  end
49
50
  @socket.onerror do |err|
50
- log err
51
+ @logger.error err
51
52
  end
52
53
  @socket.onmessage do |msg, type|
53
- log "Received message: #{msg}, type #{type}"
54
+ @logger.info "Received message: #{msg}, type #{type}"
54
55
  @queue << msg
55
56
  end
56
57
  @socket.onclose do |code, reason|
57
- log "Disconnected with status code: #{code} #{reason}"
58
+ @logger.info "Disconnected with status code: #{code} #{reason}"
58
59
  end
59
60
  end
60
61
  def json packet
61
62
  s = packet.to_json
62
- log " to server => #{s}"
63
+ @logger.info " to server => #{s}"
63
64
  @socket.send s
64
65
  end
65
66
  def req message
@@ -79,15 +80,25 @@ class EnsimeBridge
79
80
  sleep 0.2
80
81
  end
81
82
  end
83
+ def send_result result
84
+ if not result.nil? and not result.empty?
85
+ @client.puts result.gsub("\n", "")
86
+ else
87
+ @client.puts "nil"
88
+ return false
89
+ end
90
+ @logger.info result.gsub("\n", "")
91
+ return true
92
+ end
82
93
  def run
83
94
  @ensime.quiet = quiet
84
95
  @ensime.run
85
96
  if is_running?
86
- log "bridge is already running"
97
+ @logger.info "bridge is already running"
87
98
  return
88
99
  end
89
100
  wait_for_ensime
90
- log "ensime is ready"
101
+ @logger.info "ensime is ready"
91
102
  Thread.new do
92
103
  EventMachine.run do
93
104
  connect_to_ensime
@@ -99,23 +110,23 @@ class EnsimeBridge
99
110
  begin
100
111
  command = @client.readline.chomp
101
112
  while true
102
- result = instance_eval command
113
+ result = nil
114
+ @logger.info "command: #{command}"
115
+ if command.start_with? "{"
116
+ @socket.send command
117
+ else
118
+ result = instance_eval command
119
+ end
103
120
  if command == "unqueue"
104
- if not result.nil? and not result.empty?
105
- @client.puts result.gsub("\n", "")
106
- else
107
- @client.puts "nil"
108
- break
109
- end
110
- log result.gsub("\n", "")
121
+ break if not send_result result
111
122
  else
112
123
  break
113
124
  end
114
125
  end
115
126
  @client.close
116
127
  rescue => e
117
- log e
118
- log e.backtrace
128
+ @logger.error e
129
+ @logger.error e.backtrace
119
130
  end
120
131
  end
121
132
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ensime_bridge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: