ensime_bridge 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/ensime_bridge +6 -0
- data/lib/ensime.rb +7 -3
- data/lib/ensime_bridge.rb +18 -12
- metadata +1 -1
data/bin/ensime_bridge
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'ensime_bridge'
|
3
|
+
quiet = false
|
4
|
+
if ARGV[0] == "--quiet"
|
5
|
+
ARGV.shift
|
6
|
+
quiet = true
|
7
|
+
end
|
3
8
|
bridge = EnsimeBridge.new(ARGV.size < 2 ? ".ensime" : ARGV[1])
|
9
|
+
bridge.quiet = quiet
|
4
10
|
if ARGV.size > 1 and ARGV[0] == "stop"
|
5
11
|
bridge.remote_stop
|
6
12
|
else
|
data/lib/ensime.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
require 'fileutils'
|
3
3
|
require 'socket'
|
4
4
|
class Ensime
|
5
|
+
attr_accessor :quiet
|
5
6
|
def is_running?
|
6
7
|
port_path = @conf_path + "_cache/http"
|
7
8
|
return false if not File.exists? port_path
|
@@ -13,6 +14,7 @@ class Ensime
|
|
13
14
|
true
|
14
15
|
end
|
15
16
|
def initialize conf_path
|
17
|
+
@quiet = false
|
16
18
|
@conf_path = conf_path
|
17
19
|
@conf = Hash[File.read(conf_path).gsub("\n", "").gsub(
|
18
20
|
"(", " ").gsub(")", " ").gsub('"', "").split(" :").collect do |x|
|
@@ -59,7 +61,6 @@ EOF
|
|
59
61
|
Dir.chdir dir do
|
60
62
|
log = `sbt saveClasspath`
|
61
63
|
end
|
62
|
-
puts log
|
63
64
|
end
|
64
65
|
classpath = File.read classpath_file
|
65
66
|
classpath + ":#{@conf['java-home']}/lib/tools.jar"
|
@@ -69,8 +70,11 @@ EOF
|
|
69
70
|
puts "ensime is already running"
|
70
71
|
else
|
71
72
|
FileUtils.mkdir_p @conf['cache-dir']
|
72
|
-
|
73
|
-
|
73
|
+
out = quiet ? "/dev/null" : STDOUT
|
74
|
+
@pid = Process.spawn(
|
75
|
+
"#{@conf['java-home']}/bin/java #{@conf['java-flags']} \
|
76
|
+
-cp #{get_classpath} -Densime.config=#{@conf_path} org.ensime.server.Server",
|
77
|
+
:out => out)
|
74
78
|
end
|
75
79
|
self
|
76
80
|
end
|
data/lib/ensime_bridge.rb
CHANGED
@@ -5,7 +5,7 @@ require 'thread'
|
|
5
5
|
require 'base64'
|
6
6
|
require_relative 'ensime'
|
7
7
|
class EnsimeBridge
|
8
|
-
attr_accessor :socket
|
8
|
+
attr_accessor :socket, :quiet
|
9
9
|
attr_reader :cache
|
10
10
|
def get_socket file
|
11
11
|
TCPSocket.open("localhost", File.read(file).chomp)
|
@@ -21,7 +21,8 @@ class EnsimeBridge
|
|
21
21
|
true
|
22
22
|
end
|
23
23
|
def initialize path
|
24
|
-
@ensime = Ensime.new(path)
|
24
|
+
@ensime = Ensime.new(path)
|
25
|
+
@quiet = false
|
25
26
|
@cache = "#{path}_cache/"
|
26
27
|
@queue = Queue.new
|
27
28
|
@bridge_file = "#{@cache}bridge"
|
@@ -36,26 +37,29 @@ class EnsimeBridge
|
|
36
37
|
@ensime.stop
|
37
38
|
exit
|
38
39
|
end
|
40
|
+
def log what
|
41
|
+
Kernel.puts what.to_s if not quiet
|
42
|
+
end
|
39
43
|
def connect_to_ensime
|
40
44
|
url = "ws://127.0.0.1:#{File.read("#{@cache}http").chomp}/jerky"
|
41
45
|
@socket = WebSocket::EventMachine::Client.connect(:uri => url)
|
42
46
|
@socket.onopen do
|
43
|
-
|
47
|
+
log "Connected!"
|
44
48
|
end
|
45
49
|
@socket.onerror do |err|
|
46
|
-
|
50
|
+
log err
|
47
51
|
end
|
48
52
|
@socket.onmessage do |msg, type|
|
49
|
-
|
53
|
+
log "Received message: #{msg}, type #{type}"
|
50
54
|
@queue << msg
|
51
55
|
end
|
52
56
|
@socket.onclose do |code, reason|
|
53
|
-
|
57
|
+
log "Disconnected with status code: #{code} #{reason}"
|
54
58
|
end
|
55
59
|
end
|
56
60
|
def json packet
|
57
61
|
s = packet.to_json
|
58
|
-
|
62
|
+
log " to server => #{s}"
|
59
63
|
@socket.send s
|
60
64
|
end
|
61
65
|
def req message
|
@@ -76,12 +80,14 @@ class EnsimeBridge
|
|
76
80
|
end
|
77
81
|
end
|
78
82
|
def run
|
83
|
+
@ensime.quiet = quiet
|
84
|
+
@ensime.run
|
79
85
|
if is_running?
|
80
|
-
|
86
|
+
log "bridge is already running"
|
81
87
|
return
|
82
88
|
end
|
83
89
|
wait_for_ensime
|
84
|
-
|
90
|
+
log "ensime is ready"
|
85
91
|
Thread.new do
|
86
92
|
EventMachine.run do
|
87
93
|
connect_to_ensime
|
@@ -101,15 +107,15 @@ class EnsimeBridge
|
|
101
107
|
@client.puts "nil"
|
102
108
|
break
|
103
109
|
end
|
104
|
-
|
110
|
+
log result.gsub("\n", "")
|
105
111
|
else
|
106
112
|
break
|
107
113
|
end
|
108
114
|
end
|
109
115
|
@client.close
|
110
116
|
rescue => e
|
111
|
-
|
112
|
-
|
117
|
+
log e
|
118
|
+
log e.backtrace
|
113
119
|
end
|
114
120
|
end
|
115
121
|
end
|