openra 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +13 -1
- data/lib/openra/cli.rb +2 -2
- data/lib/openra/cli/command_registry.rb +1 -1
- data/lib/openra/cli/commands/detect_production_macros.rb +2 -2
- data/lib/openra/cli/commands/replay_data.rb +8 -11
- data/lib/openra/cli/commands/version.rb +1 -1
- data/lib/openra/replays/order.rb +14 -11
- data/lib/openra/struct.rb +2 -2
- data/lib/openra/struct/client.rb +5 -3
- data/lib/openra/struct/functions.rb +2 -2
- data/lib/openra/struct/game_options.rb +7 -3
- data/lib/openra/struct/global_settings.rb +23 -6
- data/lib/openra/struct/metadata.rb +2 -2
- data/lib/openra/struct/player.rb +1 -1
- data/lib/openra/struct/pre_processor.rb +15 -13
- data/lib/openra/types.rb +5 -1
- data/lib/openra/version.rb +1 -1
- data/openra.gemspec +6 -5
- metadata +39 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 345905d788dbaf8a6ffad6e70be070553de601d3e0b5a56b3c2e3840ba6ff490
|
4
|
+
data.tar.gz: c1ac04f3de64aba8bb52206308c8b9cf92730e4ef00c236729449f131a3b8a64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea61c392895a2cec57e9e64e085219752f6dbca7c1eafada4b2a6d78f7f5706f6838c0d3a1d4d91796e726f1b5cd82d61bf69a09c2daa1d4f08399aea4f8234b
|
7
|
+
data.tar.gz: bbb8382e3c7d991c9e68e5c3e31e84b81cddd1480d671a700bf1f3295b9c56772802969dc93de510e3ac5ac575b41ff0bba4899e1625f6108892f3be8611dc63
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
## Unreleased
|
2
2
|
|
3
|
+
[Compare v1.6.0...HEAD](https://github.com/AMHOL/openra-ruby/compare/v1.6.0...HEAD)
|
4
|
+
|
5
|
+
## v1.6.0
|
6
|
+
|
7
|
+
### Fixed
|
8
|
+
|
9
|
+
* Updated to work with release-20200202 (current release) ([AMHOL](https://github.com/AMHOL))
|
10
|
+
|
11
|
+
[Compare v1.5.0...HEAD](https://github.com/AMHOL/openra-ruby/compare/v1.5.0...v1.6.0)
|
12
|
+
|
13
|
+
## v1.5.0
|
14
|
+
|
3
15
|
### Added
|
4
16
|
|
5
17
|
* [detect-production-macros] A new command to detect production macros ([AMHOL](https://github.com/AMHOL))
|
@@ -8,7 +20,7 @@
|
|
8
20
|
|
9
21
|
* [core] Fix error when sync info does not exactly precede the start game order ([AMHOL](https://github.com/AMHOL))
|
10
22
|
|
11
|
-
[Compare v1.4.0...
|
23
|
+
[Compare v1.4.0...v1.5.0](https://github.com/AMHOL/openra-ruby/compare/v1.4.0...v1.5.0)
|
12
24
|
|
13
25
|
## v1.4.0
|
14
26
|
|
data/lib/openra/cli.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'securerandom'
|
2
2
|
require 'yaml'
|
3
3
|
require 'json'
|
4
|
-
require '
|
4
|
+
require 'dry/cli'
|
5
5
|
require 'openra/version'
|
6
6
|
require 'openra/replays'
|
7
7
|
require 'openra/cli/commands/formatters'
|
@@ -13,7 +13,7 @@ require 'openra/cli/command_registry'
|
|
13
13
|
module Openra
|
14
14
|
class CLI
|
15
15
|
def call(*args)
|
16
|
-
|
16
|
+
Dry::CLI.new(CommandRegistry).call(*args)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Openra
|
2
2
|
class CLI
|
3
3
|
module Commands
|
4
|
-
class DetectProductionMacros <
|
4
|
+
class DetectProductionMacros < Dry::CLI::Command
|
5
5
|
ARRAY_HASH = ->(hash, key) { hash[key] = [] }
|
6
6
|
|
7
7
|
desc 'Detect whether players are using production macros'
|
@@ -17,7 +17,7 @@ module Openra
|
|
17
17
|
case order.command
|
18
18
|
when 'StartProduction'
|
19
19
|
commands[order.client_index.to_s] << {
|
20
|
-
target: order.
|
20
|
+
target: order.target,
|
21
21
|
msec: order.frame * replay.frametime_multiplier
|
22
22
|
}
|
23
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Openra
|
2
2
|
class CLI
|
3
3
|
module Commands
|
4
|
-
class ReplayData <
|
4
|
+
class ReplayData < Dry::CLI::Command
|
5
5
|
desc 'Output replay data to stdout'
|
6
6
|
|
7
7
|
argument :replay, required: true, desc: 'Path of the replay file to read data from'
|
@@ -13,9 +13,9 @@ module Openra
|
|
13
13
|
data = {
|
14
14
|
mod: replay.metadata.mod,
|
15
15
|
version: replay.metadata.version,
|
16
|
-
server_name:
|
16
|
+
server_name: replay.global_settings.server_name,
|
17
17
|
map: {
|
18
|
-
name:
|
18
|
+
name: replay.metadata.map_name,
|
19
19
|
hash: replay.metadata.map_hash
|
20
20
|
},
|
21
21
|
game: {
|
@@ -50,7 +50,7 @@ module Openra
|
|
50
50
|
|
51
51
|
{
|
52
52
|
index: client.index,
|
53
|
-
name:
|
53
|
+
name: client.name,
|
54
54
|
preferred_color: client.preferred_color,
|
55
55
|
color: client.preferred_color,
|
56
56
|
spawn: {
|
@@ -91,12 +91,9 @@ module Openra
|
|
91
91
|
end
|
92
92
|
|
93
93
|
client_hash[:build] << {
|
94
|
-
structure: utf8(order.
|
94
|
+
structure: utf8(order.target),
|
95
95
|
game_time: time(order.frame * replay.frametime_multiplier),
|
96
|
-
placement:
|
97
|
-
x: order.target_x.to_i,
|
98
|
-
y: order.target_y.to_i
|
99
|
-
}
|
96
|
+
placement: order.target_pos.to_i
|
100
97
|
}
|
101
98
|
when 'Message'
|
102
99
|
data[:chat] << {
|
@@ -107,13 +104,13 @@ module Openra
|
|
107
104
|
when 'Chat'
|
108
105
|
data[:chat] << {
|
109
106
|
channel: 'global',
|
110
|
-
name:
|
107
|
+
name: client.name,
|
111
108
|
message: utf8(order.target)
|
112
109
|
}
|
113
110
|
when 'TeamChat'
|
114
111
|
data[:chat] << {
|
115
112
|
channel: client.team,
|
116
|
-
name:
|
113
|
+
name: client.name,
|
117
114
|
message: utf8(order.target)
|
118
115
|
}
|
119
116
|
end
|
data/lib/openra/replays/order.rb
CHANGED
@@ -12,6 +12,7 @@ module Openra
|
|
12
12
|
TARGET_IS_FROZEN_ACTOR = -> { instance_exec(&HAS_TARGET) && target_type == 3 }
|
13
13
|
TARGET_IS_CELL = -> { instance_exec(&TARGET_IS_TERRAIN) && (flags & 64) == 64 }
|
14
14
|
TARGET_NOT_CELL = -> { instance_exec(&TARGET_IS_TERRAIN) && (flags & 64) != 64 }
|
15
|
+
HAS_SUBJECT = -> { instance_exec(&IS_STANDARD_ORDER) && (flags & 128) == 128 }
|
15
16
|
HAS_TARGET_STRING = -> { instance_exec(&IS_STANDARD_ORDER) && (flags & 4) == 4 }
|
16
17
|
HAS_EXTRA_LOCATION = -> { instance_exec(&IS_STANDARD_ORDER) && (flags & 16) == 16 }
|
17
18
|
HAS_EXTRA_DATA = -> { instance_exec(&IS_STANDARD_ORDER) && (flags & 32) == 32 }
|
@@ -19,29 +20,31 @@ module Openra
|
|
19
20
|
endian :little
|
20
21
|
# Common
|
21
22
|
string :order_type, read_length: 1
|
22
|
-
pascal_string :command
|
23
|
+
pascal_string :command # order in protocol
|
23
24
|
# Immediate Order Data
|
24
|
-
pascal_string :
|
25
|
+
pascal_string :immediate_order_target, onlyif: IS_IMMEDIATE_ORDER
|
25
26
|
# Standard Order Data
|
26
|
-
uint32 :subject_id, onlyif: IS_STANDARD_ORDER
|
27
27
|
uint8 :flags, onlyif: IS_STANDARD_ORDER
|
28
|
+
uint32 :subject_id, onlyif: HAS_SUBJECT
|
28
29
|
uint8 :target_type, onlyif: HAS_TARGET
|
29
30
|
uint32 :actor_id, onlyif: TARGET_IS_ACTOR
|
30
31
|
uint32 :player_actor_id, onlyif: TARGET_IS_FROZEN_ACTOR
|
31
32
|
uint32 :frozen_actor_id, onlyif: TARGET_IS_FROZEN_ACTOR
|
32
|
-
int32 :
|
33
|
-
|
34
|
-
string :target_layer, read_length: 1, onlyif: TARGET_IS_CELL
|
35
|
-
int32 :target_sub_cell, onlyif: TARGET_IS_CELL
|
33
|
+
int32 :target_pos, onlyif: TARGET_IS_CELL
|
34
|
+
uint8 :target_sub_cell, onlyif: TARGET_IS_CELL
|
36
35
|
int32 :pos_x, onlyif: TARGET_NOT_CELL
|
37
36
|
int32 :pos_y, onlyif: TARGET_NOT_CELL
|
38
37
|
int32 :pos_z, onlyif: TARGET_NOT_CELL
|
39
|
-
pascal_string :
|
40
|
-
int32 :
|
41
|
-
int32 :extra_pos_y, onlyif: HAS_EXTRA_LOCATION
|
42
|
-
string :extra_pos_layer, read_length: 1, onlyif: HAS_EXTRA_LOCATION
|
38
|
+
pascal_string :standard_order_target, onlyif: HAS_TARGET_STRING
|
39
|
+
int32 :extra_pos, onlyif: HAS_EXTRA_LOCATION
|
43
40
|
uint32 :extra_data, onlyif: HAS_EXTRA_DATA
|
44
41
|
|
42
|
+
def target
|
43
|
+
target = standard? ? standard_order_target : immediate_order_target
|
44
|
+
|
45
|
+
Types::UTF8String.(target)
|
46
|
+
end
|
47
|
+
|
45
48
|
def type
|
46
49
|
case order_type
|
47
50
|
when HEX_FF
|
data/lib/openra/struct.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'dry/transformer/all'
|
2
2
|
require 'dry-struct'
|
3
3
|
require 'openra/types'
|
4
4
|
require 'openra/struct/functions'
|
@@ -26,7 +26,7 @@ module Openra
|
|
26
26
|
def define(&block)
|
27
27
|
instance_eval(&block)
|
28
28
|
|
29
|
-
preprocessor(preprocessor.with(schema: schema))
|
29
|
+
preprocessor(preprocessor.with(**{ schema: schema }))
|
30
30
|
|
31
31
|
preprocessor.finalize!
|
32
32
|
end
|
data/lib/openra/struct/client.rb
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
module Openra
|
2
2
|
class Struct < Dry::Struct
|
3
3
|
class Client < Openra::Struct
|
4
|
+
transform_types(&:omittable)
|
5
|
+
|
4
6
|
define do
|
5
7
|
attribute :index, Types::Strict::String.meta(from: 'Index')
|
6
8
|
attribute :preferred_color, Types::Strict::String.meta(from: 'PreferredColor')
|
7
9
|
attribute :color, Types::Strict::String.meta(from: 'Color')
|
8
10
|
attribute :faction_name, Types::Strict::String.meta(from: 'Faction')
|
9
11
|
attribute :spawn_point, Types::Strict::String.meta(from: 'SpawnPoint')
|
10
|
-
attribute :name, Types::
|
11
|
-
attribute :ip, Types::Strict::String.meta(from: 'IpAddress'
|
12
|
+
attribute :name, Types::UTF8String.meta(from: 'Name')
|
13
|
+
attribute :ip, Types::Strict::String.meta(from: 'IpAddress')
|
12
14
|
attribute :state, Types::Strict::String.meta(from: 'State')
|
13
15
|
attribute :team, Types::Strict::String.meta(from: 'Team')
|
14
|
-
attribute :slot, Types::Strict::String.meta(from: 'Slot'
|
16
|
+
attribute :slot, Types::Strict::String.meta(from: 'Slot')
|
15
17
|
attribute :bot_controller_index, Types::Strict::String.meta(
|
16
18
|
from: 'BotControllerClientIndex'
|
17
19
|
)
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Openra
|
2
2
|
class Struct < Dry::Struct
|
3
3
|
module Functions
|
4
|
-
extend
|
4
|
+
extend Dry::Transformer::Registry
|
5
5
|
|
6
|
-
import
|
6
|
+
import Dry::Transformer::HashTransformations
|
7
7
|
|
8
8
|
def self.sequence(hash, prefix, into)
|
9
9
|
keys = hash.keys.select { |key| key.start_with?(prefix + '@') }
|
@@ -1,20 +1,24 @@
|
|
1
1
|
module Openra
|
2
2
|
class Struct < Dry::Struct
|
3
3
|
class GameOptions < Openra::Struct
|
4
|
+
transform_types(&:omittable)
|
5
|
+
|
4
6
|
define do
|
5
7
|
attribute :starting_cash, IntegerOption.meta(from: 'startingcash')
|
6
8
|
attribute :cheats_enabled, BooleanOption.meta(from: 'cheats')
|
7
9
|
attribute :explored_map_enabled, BooleanOption.meta(from: 'explored')
|
8
10
|
attribute :fog_enabled, BooleanOption.meta(from: 'fog')
|
9
|
-
attribute :bounties_enabled, BooleanOption.meta(from: 'bounty'
|
10
|
-
attribute :conyard_undeploy_enabled, BooleanOption.meta(from: 'factundeploy'
|
11
|
+
attribute :bounties_enabled, BooleanOption.meta(from: 'bounty')
|
12
|
+
attribute :conyard_undeploy_enabled, BooleanOption.meta(from: 'factundeploy')
|
11
13
|
attribute :crates_enabled, BooleanOption.meta(from: 'crates')
|
12
14
|
attribute :build_off_allies_enabled, BooleanOption.meta(from: 'allybuild')
|
13
|
-
attribute :restricted_build_radius_enabled, BooleanOption.meta(from: 'buildradius'
|
15
|
+
attribute :restricted_build_radius_enabled, BooleanOption.meta(from: 'buildradius')
|
14
16
|
attribute :short_game_enabled, BooleanOption.meta(from: 'shortgame')
|
17
|
+
attribute :reusable_engineers, BooleanOption.meta(from: 'reusable-engineers')
|
15
18
|
attribute :tech_level, StringOption.meta(from: 'techlevel')
|
16
19
|
attribute :game_speed, StringOption.meta(from: 'gamespeed')
|
17
20
|
attribute :starting_units, StringOption.meta(from: 'startingunits')
|
21
|
+
attribute :separate_team_spawns, StringOption.meta(from: 'separateteamspawns')
|
18
22
|
end
|
19
23
|
|
20
24
|
def bounties_enabled
|
@@ -1,16 +1,33 @@
|
|
1
1
|
module Openra
|
2
2
|
class Struct < Dry::Struct
|
3
3
|
class GlobalSettings < Openra::Struct
|
4
|
+
transform_types(&:omittable)
|
5
|
+
|
4
6
|
define do
|
5
|
-
attribute :server_name, Types::
|
7
|
+
attribute :server_name, Types::UTF8String.meta(from: 'ServerName')
|
6
8
|
attribute :map_hash, Types::Strict::String.meta(from: 'Map')
|
7
9
|
attribute :timestep, Types::Params::Integer.meta(from: 'Timestep')
|
8
|
-
attribute :order_latency, Types::Params::Integer.meta(
|
10
|
+
attribute :order_latency, Types::Params::Integer.meta(
|
11
|
+
from: 'OrderLatency'
|
12
|
+
)
|
9
13
|
attribute :random_seed, Types::Strict::String.meta(from: 'RandomSeed')
|
10
|
-
attribute :allow_spectators, Types::Params::Bool.meta(
|
11
|
-
|
12
|
-
|
13
|
-
attribute :
|
14
|
+
attribute :allow_spectators, Types::Params::Bool.meta(
|
15
|
+
from: 'AllowSpectators'
|
16
|
+
)
|
17
|
+
attribute :allow_version_mismatch, Types::Params::Bool.meta(
|
18
|
+
from: 'AllowVersionMismatch')
|
19
|
+
attribute :game_id, Types::Strict::String.meta(from: 'GameUid'
|
20
|
+
)
|
21
|
+
attribute :allow_singleplayer, Types::Params::Bool.meta(
|
22
|
+
from: 'EnableSingleplayer'
|
23
|
+
)
|
24
|
+
attribute :enable_sync_reports, Types::Params::Bool.meta(
|
25
|
+
from: 'EnableSyncReports'
|
26
|
+
)
|
27
|
+
attribute :dedicated, Types::Params::Bool.meta(from: 'Dedicated')
|
28
|
+
attribute :save_enabled, Types::Params::Bool.meta(
|
29
|
+
from: 'GameSavesEnabled'
|
30
|
+
)
|
14
31
|
attribute :game_options, GameOptions.meta(from: 'Options')
|
15
32
|
end
|
16
33
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module Openra
|
2
2
|
class Struct < Dry::Struct
|
3
3
|
class Metadata < Openra::Struct
|
4
|
-
preprocessor(preprocessor.with(root: 'Root'))
|
4
|
+
preprocessor(preprocessor.with(**{ root: 'Root' }))
|
5
5
|
|
6
6
|
define do
|
7
7
|
attribute :mod, Types::Strict::String.meta(from: 'Mod')
|
8
8
|
attribute :version, Types::Strict::String.meta(from: 'Version')
|
9
9
|
attribute :map_hash, Types::Strict::String.meta(from: 'MapUid')
|
10
|
-
attribute :map_name, Types::
|
10
|
+
attribute :map_name, Types::UTF8String.meta(from: 'MapTitle')
|
11
11
|
attribute :start_time, Types::Timestamp.meta(from: 'StartTimeUtc')
|
12
12
|
attribute :end_time, Types::Timestamp.meta(from: 'EndTimeUtc')
|
13
13
|
attribute :players, Types::Strict::Array.of(Player).meta(sequence: 'Player')
|
data/lib/openra/struct/player.rb
CHANGED
@@ -3,7 +3,7 @@ module Openra
|
|
3
3
|
class Player < Openra::Struct
|
4
4
|
define do
|
5
5
|
attribute :index, Types::Strict::String.meta(from: 'ClientIndex')
|
6
|
-
attribute :name, Types::
|
6
|
+
attribute :name, Types::UTF8String.meta(from: 'Name')
|
7
7
|
attribute :is_human, Types::Params::Bool.meta(from: 'IsHuman')
|
8
8
|
attribute :is_bot, Types::Params::Bool.meta(from: 'IsBot')
|
9
9
|
attribute :faction_name, Types::Strict::String.meta(from: 'FactionName')
|
@@ -16,29 +16,31 @@ module Openra
|
|
16
16
|
|
17
17
|
def with(**new_config)
|
18
18
|
raise AlreadyFinalizedError, 'transformer already finalized' if finalized?
|
19
|
-
self.class.new(config.merge(new_config))
|
19
|
+
self.class.new(**config.merge(new_config))
|
20
20
|
end
|
21
21
|
|
22
22
|
def finalize!
|
23
23
|
config = self.config
|
24
24
|
|
25
|
-
transformer_klass = Class.new(
|
25
|
+
transformer_klass = Class.new(Dry::Transformer::Pipe[Functions])
|
26
26
|
transformer_klass.instance_eval do
|
27
|
-
|
27
|
+
define! do
|
28
|
+
unwrap(config[:root]) if config[:root]
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
if (schema = config[:schema])
|
31
|
+
schema.keys.each do |key|
|
32
|
+
if (sequence = key.type.meta[:sequence])
|
33
|
+
sequence(sequence, sequence)
|
34
|
+
rename_keys(sequence => key.name)
|
35
|
+
end
|
34
36
|
end
|
35
|
-
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
mapping = schema.keys.each_with_object({}) do |key, mapping|
|
39
|
+
mapping[key.type.meta[:from]] = key.name if key.type.meta[:from]
|
40
|
+
end
|
40
41
|
|
41
|
-
|
42
|
+
rename_keys(mapping)
|
43
|
+
end
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
data/lib/openra/types.rb
CHANGED
@@ -2,10 +2,14 @@ require 'dry-types'
|
|
2
2
|
|
3
3
|
module Openra
|
4
4
|
module Types
|
5
|
-
include Dry
|
5
|
+
include Dry.Types()
|
6
6
|
|
7
7
|
Timestamp = Constructor(Time) do |input|
|
8
8
|
::DateTime.strptime(input, '%Y-%m-%d %H-%M-%S').to_time
|
9
9
|
end
|
10
|
+
|
11
|
+
UTF8String = Types::String.constructor do |input|
|
12
|
+
input.force_encoding('UTF-8').to_s
|
13
|
+
end
|
10
14
|
end
|
11
15
|
end
|
data/lib/openra/version.rb
CHANGED
data/openra.gemspec
CHANGED
@@ -16,11 +16,12 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.require_paths = ['lib']
|
17
17
|
|
18
18
|
spec.add_dependency 'bundler'
|
19
|
-
spec.add_dependency 'bindata'
|
20
|
-
spec.add_dependency '
|
21
|
-
spec.add_dependency 'dry-types'
|
22
|
-
spec.add_dependency 'dry-struct'
|
23
|
-
spec.add_dependency '
|
19
|
+
spec.add_dependency 'bindata'
|
20
|
+
spec.add_dependency 'dry-transformer'
|
21
|
+
spec.add_dependency 'dry-types'
|
22
|
+
spec.add_dependency 'dry-struct'
|
23
|
+
spec.add_dependency 'dry-cli'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'rake'
|
26
|
+
spec.add_development_dependency 'pry'
|
26
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Holland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,72 +28,72 @@ dependencies:
|
|
28
28
|
name: bindata
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '0'
|
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:
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: dry-transformer
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '0'
|
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:
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: dry-types
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0
|
61
|
+
version: '0'
|
62
62
|
type: :runtime
|
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: 0
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: dry-struct
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0
|
75
|
+
version: '0'
|
76
76
|
type: :runtime
|
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: 0
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: dry-cli
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0
|
89
|
+
version: '0'
|
90
90
|
type: :runtime
|
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: 0
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
description:
|
112
126
|
email:
|
113
127
|
- andyholland1991@aol.com
|
@@ -183,8 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
197
|
- !ruby/object:Gem::Version
|
184
198
|
version: '0'
|
185
199
|
requirements: []
|
186
|
-
|
187
|
-
rubygems_version: 2.6.13
|
200
|
+
rubygems_version: 3.1.2
|
188
201
|
signing_key:
|
189
202
|
specification_version: 4
|
190
203
|
summary: Openra Rubygem
|