ensime_bridge 0.0.2 → 0.0.3
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.
- 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
|