ensime_bridge 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: