krpc 0.3.1 → 0.3.2
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.
- checksums.yaml +4 -4
- data/README.md +5 -3
- data/krpc.gemspec +11 -12
- data/lib/krpc.rb +2 -2
- data/lib/krpc/attributes.rb +17 -17
- data/lib/krpc/client.rb +29 -30
- data/lib/krpc/connection.rb +18 -18
- data/lib/krpc/core_extensions.rb +3 -3
- data/lib/krpc/decoder.rb +5 -5
- data/lib/krpc/doc.rb +30 -29
- data/lib/krpc/encoder.rb +9 -5
- data/lib/krpc/error.rb +1 -1
- data/lib/krpc/gen.rb +24 -24
- data/lib/krpc/protobuf_utils.rb +12 -12
- data/lib/krpc/service.rb +53 -18
- data/lib/krpc/streaming.rb +19 -19
- data/lib/krpc/types.rb +25 -25
- data/lib/krpc/version.rb +1 -1
- metadata +25 -30
- data/CHANGELOG.md +0 -42
- data/Rakefile +0 -9
data/lib/krpc/service.rb
CHANGED
@@ -1,31 +1,33 @@
|
|
1
1
|
require 'krpc/gen'
|
2
2
|
require 'krpc/attributes'
|
3
|
+
require 'krpc/encoder'
|
4
|
+
require 'krpc/types'
|
3
5
|
require 'krpc/doc'
|
4
6
|
require 'krpc/streaming'
|
5
7
|
|
6
8
|
module KRPC
|
7
9
|
module Services
|
8
10
|
class << self
|
9
|
-
|
11
|
+
|
10
12
|
# Generate classes and methods for the service - see documentation for Client#generate_services_api!
|
11
13
|
def create_service(service_msg)
|
12
14
|
service_name = service_msg.name
|
13
|
-
|
15
|
+
|
14
16
|
# Create service class
|
15
17
|
service_class = Class.new(ServiceBase)
|
16
18
|
const_set(service_name, service_class)
|
17
|
-
|
19
|
+
|
18
20
|
# Create service' classes
|
19
21
|
service_msg.classes.map(&:name).each do |sc_name|
|
20
22
|
TypeStore["Class(#{service_name}.#{sc_name})"]
|
21
23
|
end
|
22
|
-
|
24
|
+
|
23
25
|
# Create service' enums
|
24
26
|
service_msg.enumerations.each do |enum|
|
25
27
|
enum_type = TypeStore["Enum(#{service_name}.#{enum.name})"]
|
26
28
|
enum_type.set_values(enum.values)
|
27
29
|
end
|
28
|
-
|
30
|
+
|
29
31
|
# Create service' procedures
|
30
32
|
service_msg.procedures.each do |proc|
|
31
33
|
if Attributes.is_a_class_method_or_property_accessor(proc.attributes)
|
@@ -54,41 +56,74 @@ module KRPC
|
|
54
56
|
Gen.add_rpc_method(service_class, proc.name, service_name, proc, :static)
|
55
57
|
end
|
56
58
|
end
|
57
|
-
|
59
|
+
|
58
60
|
# Return service class
|
59
61
|
service_class
|
60
62
|
end
|
61
|
-
|
63
|
+
|
62
64
|
end
|
63
|
-
|
65
|
+
|
64
66
|
##
|
65
67
|
# Base class for service objects, created at runtime using information received from the server.
|
66
68
|
class ServiceBase
|
67
69
|
include Doc::SuffixMethods
|
68
70
|
include Streaming::StreamConstructors
|
69
|
-
|
71
|
+
|
70
72
|
attr_reader :client
|
71
|
-
|
73
|
+
|
72
74
|
def initialize(client)
|
73
75
|
@client = client
|
74
76
|
end
|
75
77
|
end
|
76
|
-
|
78
|
+
|
77
79
|
##
|
78
|
-
#
|
79
|
-
class
|
80
|
+
# Hardcoded version of `krpc` service - The core kRPC service, e.g. for querying for the available services.
|
81
|
+
class Core < ServiceBase
|
80
82
|
include Gen::RPCMethodGenerator
|
81
83
|
|
82
84
|
def initialize(client)
|
83
85
|
super(client)
|
84
86
|
unless respond_to? :get_status
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
87
|
+
# Generate enumerations
|
88
|
+
TypeStore['Enum(Core.GameScene)'].set_values(
|
89
|
+
Encoder.hash_to_enumeration_values(
|
90
|
+
space_center: 0, flight: 1, tracking_station: 2, editor_vab: 3, editor_sph: 4
|
91
|
+
)
|
92
|
+
)
|
93
|
+
|
94
|
+
# Generate procedures
|
95
|
+
opts = {doc_service_name: 'Core'}
|
96
|
+
|
97
|
+
include_rpc_method 'get_status', 'KRPC', 'GetStatus',
|
98
|
+
return_type: 'KRPC.Status',
|
99
|
+
xmldoc: "<doc><summary>Gets a status message from the server containing information including the server’s version string and performance statistics.</summary></doc>",
|
100
|
+
switches: [:static], options: opts
|
101
|
+
include_rpc_method 'get_services', 'KRPC', 'GetServices',
|
102
|
+
return_type: 'KRPC.Services',
|
103
|
+
xmldoc: "<doc><summary>Gets available services and procedures.</summary></doc>",
|
104
|
+
switches: [:static, :no_stream], options: opts
|
105
|
+
include_rpc_method 'add_stream', 'KRPC', 'AddStream',
|
106
|
+
params: [PB::Parameter.new(name: 'request', type: 'KRPC.Request')],
|
107
|
+
return_type: 'uint32',
|
108
|
+
xmldoc: "<doc><summary>Add a streaming request. Returns it's identifier.</summary></doc>",
|
109
|
+
switches: [:static, :no_stream], options: opts
|
110
|
+
include_rpc_method 'remove_stream', 'KRPC', 'RemoveStream',
|
111
|
+
params: [PB::Parameter.new(name: 'id', type: 'uint32')],
|
112
|
+
xmldoc: "<doc><summary>Remove a streaming request</summary></doc>",
|
113
|
+
switches: [:static, :no_stream], options: opts
|
114
|
+
include_rpc_method 'clients', 'KRPC', 'get_Clients',
|
115
|
+
return_type: 'KRPC.List',
|
116
|
+
attributes: ['Property.Get(Clients)', 'ReturnType.List(Tuple(bytes,string,string))'],
|
117
|
+
xmldoc: "<doc><summary>A list of RPC clients that are currently connected to the server.\nEach entry in the list is a clients identifier, name and address.</summary></doc>",
|
118
|
+
switches: [:static], options: opts
|
119
|
+
include_rpc_method 'current_game_scene', 'KRPC', 'get_CurrentGameScene',
|
120
|
+
return_type: 'int32',
|
121
|
+
attributes: ['Property.Get(CurrentGameScene)', 'ReturnType.Enum(Core.GameScene)'],
|
122
|
+
xmldoc: "<doc><summary>Get the current game scene.</summary></doc>",
|
123
|
+
switches: [:static], options: opts
|
89
124
|
end
|
90
125
|
end
|
91
126
|
end
|
92
|
-
|
127
|
+
|
93
128
|
end
|
94
129
|
end
|
data/lib/krpc/streaming.rb
CHANGED
@@ -6,19 +6,19 @@ module KRPC
|
|
6
6
|
|
7
7
|
class StreamsManager
|
8
8
|
attr_reader :client
|
9
|
-
|
9
|
+
|
10
10
|
def initialize(client)
|
11
11
|
@client = client
|
12
12
|
@streams = {}
|
13
13
|
@streams_mutex = Mutex.new
|
14
14
|
@streaming_thread = Thread.new {}
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
# Send a streaming request, create related Stream object and return it. If identical Stream
|
18
18
|
# already exists, doesn't create new Stream and return the existing one.
|
19
19
|
def create_stream(request, return_type, method, *args, **kwargs)
|
20
20
|
raise RuntimeError("Cannot stream a property setter") if method.name.to_s.end_with? '='
|
21
|
-
id = client.
|
21
|
+
id = client.core.add_stream(request)
|
22
22
|
@streams_mutex.synchronize do
|
23
23
|
if @streams.include? id
|
24
24
|
@streams[id]
|
@@ -28,14 +28,14 @@ module KRPC
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
# Remove a streaming request and deactivate the Stream object. Returns `true` if
|
33
33
|
# streaming request is removed or `false` if passed Stream object is already inactive.
|
34
34
|
def remove_stream(stream)
|
35
35
|
return false unless stream.active?
|
36
36
|
@streams_mutex.synchronize do
|
37
37
|
return false unless @streams.include? stream.id
|
38
|
-
client.
|
38
|
+
client.core.remove_stream stream.id
|
39
39
|
@streams.delete stream.id
|
40
40
|
end
|
41
41
|
stream.value = RuntimeError.new("Stream has been removed")
|
@@ -47,7 +47,7 @@ module KRPC
|
|
47
47
|
def remove_all_streams
|
48
48
|
@streams.each {|_,stream| remove_stream(stream)}
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
# Start streaming thread. It receives stream data, and updates Stream object's `value` attribute.
|
52
52
|
def start_streaming_thread
|
53
53
|
stop_streaming_thread
|
@@ -72,17 +72,17 @@ module KRPC
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
# Stop streaming thread.
|
77
77
|
def stop_streaming_thread
|
78
78
|
@streaming_thread.terminate
|
79
79
|
end
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
class Stream
|
83
83
|
attr_reader :id, :method, :args, :kwargs, :return_type, :manager
|
84
84
|
attr_writer :value
|
85
|
-
|
85
|
+
|
86
86
|
def initialize(manager, id, return_type, value, method, *args, **kwargs)
|
87
87
|
@manager = manager
|
88
88
|
@id = id
|
@@ -90,7 +90,7 @@ module KRPC
|
|
90
90
|
@method, @args, @kwargs = method, args, kwargs
|
91
91
|
@active = true
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
# Get the current stream value. Has alias method `value`.
|
95
95
|
def get
|
96
96
|
raise @value if @value.is_a?(Exception)
|
@@ -103,18 +103,18 @@ module KRPC
|
|
103
103
|
manager.remove_stream self
|
104
104
|
end
|
105
105
|
alias_method :close, :remove
|
106
|
-
|
106
|
+
|
107
107
|
# Check if stream is active (i.e. not removed).
|
108
108
|
def active?; @active end
|
109
109
|
|
110
110
|
# Mark stream as inactive.
|
111
111
|
# WARNING: This method does not remove the stream. To remove the stream call Stream#remove instead.
|
112
112
|
def mark_as_inactive; @active = false end
|
113
|
-
|
113
|
+
|
114
114
|
def to_s
|
115
115
|
inspect.gsub(/\n|\t/," ").squeeze(" ").uncolorize
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
def inspect
|
119
119
|
def coderay(x)
|
120
120
|
require 'coderay'
|
@@ -134,11 +134,11 @@ module KRPC
|
|
134
134
|
">".green
|
135
135
|
end
|
136
136
|
end
|
137
|
-
|
137
|
+
|
138
138
|
module StreamConstructors
|
139
139
|
STREAM_METHOD_SUFFIX = "_stream"
|
140
140
|
STREAM_METHOD_REGEX = /^(.+)(?:#{STREAM_METHOD_SUFFIX})$/
|
141
|
-
|
141
|
+
|
142
142
|
module ClassMethods
|
143
143
|
def stream_constructors
|
144
144
|
@stream_constructors ||= {}
|
@@ -149,7 +149,7 @@ module KRPC
|
|
149
149
|
base.extend ClassMethods
|
150
150
|
base.extend self
|
151
151
|
end
|
152
|
-
|
152
|
+
|
153
153
|
def method_missing(method, *args, **kwargs, &block)
|
154
154
|
if STREAM_METHOD_REGEX =~ method.to_s
|
155
155
|
if respond_to? $1.to_sym
|
@@ -159,7 +159,7 @@ module KRPC
|
|
159
159
|
end
|
160
160
|
super
|
161
161
|
end
|
162
|
-
|
162
|
+
|
163
163
|
def respond_to_missing?(method, *)
|
164
164
|
if STREAM_METHOD_REGEX =~ method.to_s
|
165
165
|
if respond_to? $1.to_sym
|
@@ -169,8 +169,8 @@ module KRPC
|
|
169
169
|
end
|
170
170
|
super
|
171
171
|
end
|
172
|
-
|
172
|
+
|
173
173
|
end
|
174
|
-
|
174
|
+
|
175
175
|
end
|
176
176
|
end
|
data/lib/krpc/types.rb
CHANGED
@@ -21,14 +21,14 @@ module KRPC
|
|
21
21
|
"bytes" => Array
|
22
22
|
}
|
23
23
|
PROTOBUF_TO_MESSAGE_TYPE = ProtobufUtils.create_PB_to_PB_message_class_hash("KRPC")
|
24
|
-
|
24
|
+
|
25
25
|
class TypeStore
|
26
26
|
@cache = {}
|
27
27
|
class << self
|
28
|
-
|
28
|
+
|
29
29
|
def [](type_string)
|
30
30
|
return @cache[type_string] if @cache.include? type_string
|
31
|
-
|
31
|
+
|
32
32
|
type =
|
33
33
|
if PROTOBUF_VALUE_TYPES.include? type_string then ValueType.new(type_string)
|
34
34
|
elsif type_string.start_with? "Class(" || type_string == "Class" then ClassType.new(type_string)
|
@@ -47,9 +47,9 @@ module KRPC
|
|
47
47
|
end
|
48
48
|
|
49
49
|
@cache[type_string] = type
|
50
|
-
type
|
50
|
+
type
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def get_parameter_type(pos, type, attrs)
|
54
54
|
type_attrs = Attributes.get_parameter_type_attrs(pos, attrs)
|
55
55
|
type_attrs.each do |ta|
|
@@ -71,14 +71,14 @@ module KRPC
|
|
71
71
|
end
|
72
72
|
self[type]
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
def coerce_to(value, type)
|
76
76
|
return value if type.is_a?(EnumType) && value.class == Symbol # Enum handling
|
77
77
|
return value if value.is_a?(type.ruby_type)
|
78
78
|
# A NilClass can be coerced to a ClassType
|
79
79
|
return nil if type.is_a?(ClassType) && value.nil?
|
80
80
|
# Handle service' class instance
|
81
|
-
if type.is_a?(ClassType) && value.is_a?(Gen::ClassBase) &&
|
81
|
+
if type.is_a?(ClassType) && value.is_a?(Gen::ClassBase) &&
|
82
82
|
type.ruby_type == value.class
|
83
83
|
return value
|
84
84
|
end
|
@@ -108,20 +108,20 @@ module KRPC
|
|
108
108
|
end
|
109
109
|
raise(ValueError, "Failed to coerce value #{value.to_s} of type #{value.class} to type #{type}")
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
end
|
113
113
|
end
|
114
|
-
|
115
|
-
|
114
|
+
|
115
|
+
|
116
116
|
class TypeBase
|
117
117
|
attr_reader :protobuf_type, :ruby_type
|
118
118
|
def initialize(protobuf_type, ruby_type)
|
119
119
|
@protobuf_type = protobuf_type
|
120
120
|
@ruby_type = ruby_type
|
121
121
|
end
|
122
|
-
|
122
|
+
|
123
123
|
protected
|
124
|
-
|
124
|
+
|
125
125
|
def parse_type_string(type)
|
126
126
|
raise ValueError.new if type.nil?
|
127
127
|
result = ""
|
@@ -138,14 +138,14 @@ module KRPC
|
|
138
138
|
[result, type[(result.length+1)..-1]]
|
139
139
|
end
|
140
140
|
end
|
141
|
-
|
141
|
+
|
142
142
|
class ValueType < TypeBase
|
143
143
|
def initialize(type_string)
|
144
144
|
raise(ValueError, "\"#{type_string}\" is not a valid type string for a value type") unless PROTOBUF_TO_RUBY_VALUE_TYPE.has_key? type_string
|
145
145
|
super(type_string, PROTOBUF_TO_RUBY_VALUE_TYPE[type_string])
|
146
146
|
end
|
147
147
|
end
|
148
|
-
|
148
|
+
|
149
149
|
class MessageType < TypeBase
|
150
150
|
def initialize(type_string)
|
151
151
|
if PROTOBUF_TO_MESSAGE_TYPE.has_key? type_string
|
@@ -155,7 +155,7 @@ module KRPC
|
|
155
155
|
end
|
156
156
|
end
|
157
157
|
end
|
158
|
-
|
158
|
+
|
159
159
|
class ClassType < TypeBase
|
160
160
|
attr_reader :service_name, :class_name
|
161
161
|
def initialize(type_string)
|
@@ -165,7 +165,7 @@ module KRPC
|
|
165
165
|
super(type_string, Gen.generate_class(service_name, class_name))
|
166
166
|
end
|
167
167
|
end
|
168
|
-
|
168
|
+
|
169
169
|
class EnumType < TypeBase
|
170
170
|
attr_reader :service_name, :enum_name
|
171
171
|
def initialize(type_string)
|
@@ -175,12 +175,12 @@ module KRPC
|
|
175
175
|
# Sets ruby_type to nil, set_values must be called to set the ruby_type
|
176
176
|
super(type_string, nil)
|
177
177
|
end
|
178
|
-
|
178
|
+
|
179
179
|
def set_values(values)
|
180
180
|
@ruby_type = Gen.generate_enum(service_name, enum_name, values)
|
181
181
|
end
|
182
182
|
end
|
183
|
-
|
183
|
+
|
184
184
|
class ListType < TypeBase
|
185
185
|
attr_reader :value_type
|
186
186
|
def initialize(type_string)
|
@@ -190,7 +190,7 @@ module KRPC
|
|
190
190
|
super(type_string, Array)
|
191
191
|
end
|
192
192
|
end
|
193
|
-
|
193
|
+
|
194
194
|
class DictionaryType < TypeBase
|
195
195
|
attr_reader :key_type, :value_type
|
196
196
|
def initialize(type_string)
|
@@ -206,7 +206,7 @@ module KRPC
|
|
206
206
|
super(type_string, Hash)
|
207
207
|
end
|
208
208
|
end
|
209
|
-
|
209
|
+
|
210
210
|
class SetType < TypeBase
|
211
211
|
attr_reader :value_type
|
212
212
|
def initialize(type_string)
|
@@ -216,25 +216,25 @@ module KRPC
|
|
216
216
|
super(type_string, Set)
|
217
217
|
end
|
218
218
|
end
|
219
|
-
|
219
|
+
|
220
220
|
class TupleType < TypeBase
|
221
221
|
attr_reader :value_types
|
222
222
|
def initialize(type_string)
|
223
223
|
m = /^Tuple\((.+)\)$/.match type_string
|
224
224
|
raise(ValueError, "\"#{type_string}\" is not a valid type string for a tuple type") unless m
|
225
|
-
|
225
|
+
|
226
226
|
@value_types = []
|
227
227
|
type = m[1]
|
228
228
|
until type.nil?
|
229
229
|
value_type, type = parse_type_string(type)
|
230
230
|
@value_types << TypeStore[value_type]
|
231
231
|
end
|
232
|
-
|
232
|
+
|
233
233
|
super(type_string, Array)
|
234
234
|
end
|
235
235
|
end
|
236
|
-
|
236
|
+
|
237
237
|
end
|
238
|
-
|
238
|
+
|
239
239
|
TypeStore = Types::TypeStore
|
240
240
|
end
|
data/lib/krpc/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: krpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomasz Więch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -16,112 +16,112 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.
|
19
|
+
version: '3.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.
|
26
|
+
version: '3.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: colorize
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: nokogiri
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.8'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.8'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :
|
61
|
+
version: '1.15'
|
62
|
+
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '1.15'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0.10'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0.10'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '3.6'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '3.6'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '12.0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '12.0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: hanna-nouveau
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '1.0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '1.0'
|
125
125
|
description: kRPC-rb is a Ruby client library for kRPC, a Kerbal Space Program mod
|
126
126
|
that allows you to control KSP from external scripts running outside of the game.
|
127
127
|
email:
|
@@ -131,11 +131,9 @@ extensions: []
|
|
131
131
|
extra_rdoc_files:
|
132
132
|
- README.md
|
133
133
|
files:
|
134
|
-
- CHANGELOG.md
|
135
134
|
- Gemfile
|
136
135
|
- LICENSE.txt
|
137
136
|
- README.md
|
138
|
-
- Rakefile
|
139
137
|
- krpc.gemspec
|
140
138
|
- lib/krpc.rb
|
141
139
|
- lib/krpc/attributes.rb
|
@@ -163,8 +161,6 @@ post_install_message:
|
|
163
161
|
rdoc_options:
|
164
162
|
- "--markup"
|
165
163
|
- markdown
|
166
|
-
- "--format"
|
167
|
-
- hanna
|
168
164
|
- "--title"
|
169
165
|
- kRPC-rb API Docs
|
170
166
|
- "--main"
|
@@ -183,9 +179,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
179
|
version: '0'
|
184
180
|
requirements: []
|
185
181
|
rubyforge_project:
|
186
|
-
rubygems_version: 2.
|
182
|
+
rubygems_version: 2.6.8
|
187
183
|
signing_key:
|
188
184
|
specification_version: 4
|
189
185
|
summary: Client library for kRPC
|
190
186
|
test_files: []
|
191
|
-
has_rdoc:
|