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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f8e899e24d7c1a64648be5f39fb249439f7ff008
4
- data.tar.gz: 6efadd30042d44cfd54bcaecf9594b09d5aed992
2
+ SHA256:
3
+ metadata.gz: 345905d788dbaf8a6ffad6e70be070553de601d3e0b5a56b3c2e3840ba6ff490
4
+ data.tar.gz: c1ac04f3de64aba8bb52206308c8b9cf92730e4ef00c236729449f131a3b8a64
5
5
  SHA512:
6
- metadata.gz: b15a3518af884311eac8fda0ea5323f30af197c1e2b4e00fdf86ae2103094d666ec2ba133a8c96ad7ad6e0f3af1fd27b3008aa5f539dbce03d9c13d9da63cf79
7
- data.tar.gz: 1631bcefa11178ba60eb37d4a71019e4e4383b3e33290c29f2ccde99aae410e2e51b98bf9acce0282172f15105bf1405d711d14ebea9a2f487f7b03ed0b8f7d9
6
+ metadata.gz: ea61c392895a2cec57e9e64e085219752f6dbca7c1eafada4b2a6d78f7f5706f6838c0d3a1d4d91796e726f1b5cd82d61bf69a09c2daa1d4f08399aea4f8234b
7
+ data.tar.gz: bbb8382e3c7d991c9e68e5c3e31e84b81cddd1480d671a700bf1f3295b9c56772802969dc93de510e3ac5ac575b41ff0bba4899e1625f6108892f3be8611dc63
@@ -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...HEAD](https://github.com/AMHOL/openra-ruby/compare/v1.4.0...HEAD)
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
 
@@ -1,7 +1,7 @@
1
1
  require 'securerandom'
2
2
  require 'yaml'
3
3
  require 'json'
4
- require 'hanami/cli'
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
- Hanami::CLI.new(CommandRegistry).call(*args)
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
  class CommandRegistry
4
- extend Hanami::CLI::Registry
4
+ extend Dry::CLI::Registry
5
5
 
6
6
  register 'replay-data', Commands::ReplayData
7
7
  register 'detect-production-macros', Commands::DetectProductionMacros
@@ -1,7 +1,7 @@
1
1
  module Openra
2
2
  class CLI
3
3
  module Commands
4
- class DetectProductionMacros < Hanami::CLI::Command
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.target_string.to_s,
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 < Hanami::CLI::Command
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: utf8(replay.global_settings.server_name),
16
+ server_name: replay.global_settings.server_name,
17
17
  map: {
18
- name: utf8(replay.metadata.map_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: utf8(client.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.target_string),
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: utf8(client.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: utf8(client.name),
113
+ name: client.name,
117
114
  message: utf8(order.target)
118
115
  }
119
116
  end
@@ -1,7 +1,7 @@
1
1
  module Openra
2
2
  class CLI
3
3
  module Commands
4
- class Version < Hanami::CLI::Command
4
+ class Version < Dry::CLI::Command
5
5
  desc 'Print current version number'
6
6
 
7
7
  def call(*)
@@ -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 :target, onlyif: IS_IMMEDIATE_ORDER
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 :target_x, onlyif: TARGET_IS_CELL
33
- int32 :target_y, onlyif: TARGET_IS_CELL
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 :target_string, onlyif: HAS_TARGET_STRING
40
- int32 :extra_pos_x, onlyif: HAS_EXTRA_LOCATION
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
@@ -1,4 +1,4 @@
1
- require 'transproc'
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
@@ -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::Strict::String.meta(from: 'Name')
11
- attribute :ip, Types::Strict::String.meta(from: 'IpAddress', omittable: true)
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', omittable: true)
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 Transproc::Registry
4
+ extend Dry::Transformer::Registry
5
5
 
6
- import Transproc::HashTransformations
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', omittable: true)
10
- attribute :conyard_undeploy_enabled, BooleanOption.meta(from: 'factundeploy', omittable: true)
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', omittable: true)
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::Strict::String.meta(from: 'ServerName')
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(from: 'OrderLatency')
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(from: 'AllowSpectators')
11
- attribute :allow_version_mismatch, Types::Params::Bool.meta(from: 'AllowVersionMismatch')
12
- attribute :allow_singleplayer, Types::Params::Bool.meta(from: 'EnableSingleplayer')
13
- attribute :game_id, Types::Strict::String.meta(from: 'GameUid')
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::Strict::String.meta(from: 'MapTitle')
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')
@@ -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::Strict::String.meta(from: 'Name')
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(Transproc::Transformer[Functions])
25
+ transformer_klass = Class.new(Dry::Transformer::Pipe[Functions])
26
26
  transformer_klass.instance_eval do
27
- unwrap(config[:root]) if config[:root]
27
+ define! do
28
+ unwrap(config[:root]) if config[:root]
28
29
 
29
- if (schema = config[:schema])
30
- schema.each_pair do |key, type|
31
- if (sequence = type.meta[:sequence])
32
- sequence(sequence, sequence)
33
- rename_keys(sequence => key)
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
- mapping = schema.each_with_object({}) do |(key, type), mapping|
38
- mapping[type.meta[:from]] = key if type.meta[:from]
39
- end
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
- rename_keys(mapping)
42
+ rename_keys(mapping)
43
+ end
42
44
  end
43
45
  end
44
46
 
@@ -2,10 +2,14 @@ require 'dry-types'
2
2
 
3
3
  module Openra
4
4
  module Types
5
- include Dry::Types.module
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
@@ -1,3 +1,3 @@
1
1
  module Openra
2
- VERSION = '1.5.0'.freeze
2
+ VERSION = '1.6.0'.freeze
3
3
  end
@@ -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', '2.4.3'
20
- spec.add_dependency 'transproc', '1.0.2'
21
- spec.add_dependency 'dry-types', '0.13.2'
22
- spec.add_dependency 'dry-struct', '0.5.0'
23
- spec.add_dependency 'hanami-cli', '0.2.0'
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.5.0
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: 2018-08-30 00:00:00.000000000 Z
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: 2.4.3
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: 2.4.3
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: transproc
42
+ name: dry-transformer
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.2
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: 1.0.2
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.13.2
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.13.2
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.5.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.5.0
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: hanami-cli
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.2.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.2.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
- rubyforge_project:
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