openra 1.5.0 → 1.6.0

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 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