checkoff 0.5.2 → 0.7.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
2
  SHA256:
3
- metadata.gz: cf801216d45c8e3b9c09e80e8d5f05d097dec4361f076f3d70efafd10a628ec5
4
- data.tar.gz: 19e168d38d597f1ca0962f22d14d2e4326975b847334672337c879edf19d74bb
3
+ metadata.gz: 4602a0a2276fa337153e3394f009fa99a8a22603003baf9e99fb9da65c9b9107
4
+ data.tar.gz: e1a006d0debc96dbf11fd5e63d4930446bf35a3ae7f261bbbfca79a9d9bbad02
5
5
  SHA512:
6
- metadata.gz: 11b63053e7902dad783ccc000990f211a0184a90a016f938fa354871bec3c101ff8fff4743e798998844405710b34e686cc18def737fd44b7956f179bdeb83df
7
- data.tar.gz: 80577a035c94855fbdcb2ee0abbca795c41a426d8d1737c33f7c9250a86dc52e7699dc64b39c895930bd581fcebe8b90fafc50fb2671c3cfb1729c4074ba8487
6
+ metadata.gz: 9c998ad14b388dd17a118536b1abacd2e2dc0195fd42f847090c142cb17636f9bd8fe17e2ee4202d2784d7d907ea6aad59381639a5fa71af32babd70bd229229
7
+ data.tar.gz: b47bb6ce0899ad62c683fefb67596cc5ca371dc0b67d1cacec881060c19d2cb796175b781530231d2cb320b7662dd4929b5a6eac21b8ae9accfd1c138d344d10
data/.overcommit.yml ADDED
@@ -0,0 +1,33 @@
1
+ # Use this file to configure the Overcommit hooks you wish to use. This will
2
+ # extend the default configuration defined in:
3
+ # https://github.com/sds/overcommit/blob/master/config/default.yml
4
+ #
5
+ # At the topmost level of this YAML file is a key representing type of hook
6
+ # being run (e.g. pre-commit, commit-msg, etc.). Within each type you can
7
+ # customize each hook, such as whether to only run it on certain files (via
8
+ # `include`), whether to only display output if it fails (via `quiet`), etc.
9
+ #
10
+ # For a complete list of hooks, see:
11
+ # https://github.com/sds/overcommit/tree/master/lib/overcommit/hook
12
+ #
13
+ # For a complete list of options that you can use to customize hooks, see:
14
+ # https://github.com/sds/overcommit#configuration
15
+ #
16
+ # Uncomment the following lines to make the configuration take effect.
17
+
18
+ PreCommit:
19
+ RuboCop:
20
+ enabled: true
21
+ on_warn: fail # Treat all warnings as failures
22
+ #
23
+ # TrailingWhitespace:
24
+ # enabled: true
25
+ # exclude:
26
+ # - '**/db/structure.sql' # Ignore trailing whitespace in generated files
27
+ #
28
+ #PostCheckout:
29
+ # ALL: # Special hook name that customizes all hooks of this type
30
+ # quiet: true # Change all post-checkout hooks to only display output on failure
31
+ #
32
+ # IndexTags:
33
+ # enabled: true # Generate a tags file with `ctags` each time HEAD changes
data/.rubocop.yml CHANGED
@@ -67,9 +67,134 @@ Style/StringLiterals:
67
67
  - double_quotes
68
68
  ConsistentQuotesInMultiline: true
69
69
 
70
- AllCops:
71
- TargetRubyVersion: 2.4
70
+ Layout/BeginEndAlignment: # (new in 0.91)
71
+ Enabled: true
72
+ Layout/EmptyLinesAroundAttributeAccessor: # (new in 0.83)
73
+ Enabled: true
74
+ Layout/SpaceAroundMethodCallOperator: # (new in 0.82)
75
+ Enabled: true
76
+ Lint/BinaryOperatorWithIdenticalOperands: # (new in 0.89)
77
+ Enabled: true
78
+ Lint/ConstantDefinitionInBlock: # (new in 0.91)
79
+ Enabled: true
80
+ Lint/DeprecatedOpenSSLConstant: # (new in 0.84)
81
+ Enabled: true
82
+ Lint/DuplicateElsifCondition: # (new in 0.88)
83
+ Enabled: true
84
+ Lint/DuplicateRequire: # (new in 0.90)
85
+ Enabled: true
86
+ Lint/DuplicateRescueException: # (new in 0.89)
87
+ Enabled: true
88
+ Lint/EmptyConditionalBody: # (new in 0.89)
89
+ Enabled: true
90
+ Lint/EmptyFile: # (new in 0.90)
91
+ Enabled: true
92
+ Lint/FloatComparison: # (new in 0.89)
93
+ Enabled: true
94
+ Lint/IdentityComparison: # (new in 0.91)
95
+ Enabled: true
96
+ Lint/MissingSuper: # (new in 0.89)
97
+ Enabled: true
98
+ Lint/MixedRegexpCaptureTypes: # (new in 0.85)
99
+ Enabled: true
100
+ Lint/OutOfRangeRegexpRef: # (new in 0.89)
101
+ Enabled: true
102
+ Lint/RaiseException: # (new in 0.81)
103
+ Enabled: true
104
+ Lint/SelfAssignment: # (new in 0.89)
105
+ Enabled: true
106
+ Lint/StructNewOverride: # (new in 0.81)
107
+ Enabled: true
108
+ Lint/TopLevelReturnWithArgument: # (new in 0.89)
109
+ Enabled: true
110
+ Lint/TrailingCommaInAttributeDeclaration: # (new in 0.90)
111
+ Enabled: true
112
+ Lint/UnreachableLoop: # (new in 0.89)
113
+ Enabled: true
114
+ Lint/UselessMethodDefinition: # (new in 0.90)
115
+ Enabled: true
116
+ Lint/UselessTimes: # (new in 0.91)
117
+ Enabled: true
118
+ Style/AccessorGrouping: # (new in 0.87)
119
+ Enabled: true
120
+ Style/BisectedAttrAccessor: # (new in 0.87)
121
+ Enabled: true
122
+ Style/CaseLikeIf: # (new in 0.88)
123
+ Enabled: true
124
+ Style/CombinableLoops: # (new in 0.90)
125
+ Enabled: true
126
+ Style/ExplicitBlockArgument: # (new in 0.89)
127
+ Enabled: true
128
+ Style/ExponentialNotation: # (new in 0.82)
129
+ Enabled: true
130
+ Style/GlobalStdStream: # (new in 0.89)
131
+ Enabled: true
132
+ Style/HashAsLastArrayItem: # (new in 0.88)
133
+ Enabled: true
134
+ Style/HashEachMethods: # (new in 0.80)
135
+ Enabled: true
136
+ Style/HashLikeCase: # (new in 0.88)
137
+ Enabled: true
138
+ Style/HashTransformKeys: # (new in 0.80)
139
+ Enabled: true
140
+ Style/HashTransformValues: # (new in 0.80)
141
+ Enabled: true
142
+ Style/KeywordParametersOrder: # (new in 0.90)
143
+ Enabled: true
144
+ Style/OptionalBooleanParameter: # (new in 0.89)
145
+ Enabled: true
146
+ Style/RedundantAssignment: # (new in 0.87)
147
+ Enabled: true
148
+ Style/RedundantFetchBlock: # (new in 0.86)
149
+ Enabled: true
150
+ Style/RedundantFileExtensionInRequire: # (new in 0.88)
151
+ Enabled: true
152
+ Style/RedundantRegexpCharacterClass: # (new in 0.85)
153
+ Enabled: true
154
+ Style/RedundantRegexpEscape: # (new in 0.85)
155
+ Enabled: true
156
+ Style/RedundantSelfAssignment: # (new in 0.90)
157
+ Enabled: true
158
+ Style/SingleArgumentDig: # (new in 0.89)
159
+ Enabled: true
160
+ Style/SlicingWithRange: # (new in 0.83)
161
+ Enabled: true
162
+ Style/SoleNestedConditional: # (new in 0.89)
163
+ Enabled: true
164
+ Style/StringConcatenation: # (new in 0.89)
165
+ Enabled: true
166
+ Minitest/AssertInDelta: # (new in 0.10)
167
+ Enabled: true
168
+ Minitest/AssertionInLifecycleHook: # (new in 0.10)
169
+ Enabled: true
170
+ Minitest/AssertKindOf: # (new in 0.10)
171
+ Enabled: true
172
+ Minitest/AssertOutput: # (new in 0.10)
173
+ Enabled: true
174
+ Minitest/AssertPathExists: # (new in 0.10)
175
+ Enabled: true
176
+ Minitest/AssertSilent: # (new in 0.10)
177
+ Enabled: true
178
+ Minitest/LiteralAsActualArgument: # (new in 0.10)
179
+ Enabled: true
180
+ Minitest/MultipleAssertions: # (new in 0.10)
181
+ Enabled: true
182
+ Minitest/RefuteInDelta: # (new in 0.10)
183
+ Enabled: true
184
+ Minitest/RefuteKindOf: # (new in 0.10)
185
+ Enabled: true
186
+ Minitest/RefutePathExists: # (new in 0.10)
187
+ Enabled: true
188
+ Minitest/TestMethodName: # (new in 0.10)
189
+ # This gives false positives when non-test methods exist...
190
+ Enabled: false
191
+ Minitest/UnspecifiedException: # (new in 0.10)
192
+ Enabled: true
193
+ RSpec/StubbedMock: # (new in 1.44)
194
+ Enabled: true
72
195
 
196
+ AllCops:
197
+ TargetRubyVersion: 2.5
73
198
 
74
199
  require:
75
200
  - rubocop-rspec
data/.travis.yml CHANGED
@@ -10,8 +10,13 @@ rvm:
10
10
  # checking for main() in -lstdc++... RuntimeError: The compiler failed to generate
11
11
  # https://travis-ci.com/apiology/pronto-punchlist/jobs/264907931
12
12
  # - jruby-head
13
- - ruby-head
13
+
14
+ # These are currently pending ruby-asana fixes:
15
+ #
16
+ # https://github.com/Asana/ruby-asana/pull/99
17
+ #
18
+ # - ruby-head
19
+ # - ruby-3.0
14
20
  - ruby-2.7
15
21
  - ruby-2.6
16
22
  - ruby-2.5
17
- - ruby-2.4
data/README.md CHANGED
@@ -126,6 +126,8 @@ my_tasks:
126
126
  personal_access_token: 'some_big_long_string_from_asana.com_here'
127
127
  ```
128
128
 
129
+ Alternately you can set environment variables to match - e.g., `ASANA__PERSONAL_ACCESS_TOKEN`
130
+
129
131
  ## Developing
130
132
 
131
133
  ```bash
data/checkoff.gemspec CHANGED
@@ -10,12 +10,12 @@ Gem::Specification.new do |spec|
10
10
  spec.version = Checkoff::VERSION
11
11
  spec.authors = ['Vince Broz']
12
12
  spec.email = ['vince@broz.cc']
13
-
14
13
  spec.summary = 'Command-line and gem client for Asana (unofficial)'
15
14
  spec.homepage = 'http://github.com/apiology/checkoff'
16
15
  spec.license = 'MIT'
16
+ spec.required_ruby_version = '>= 2.5'
17
17
 
18
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
19
  f.match(%r{^(test|spec|features)/})
20
20
  end
21
21
  spec.bindir = 'exe'
@@ -23,14 +23,15 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ['lib']
24
24
 
25
25
  spec.add_runtime_dependency 'activesupport'
26
- spec.add_runtime_dependency 'asana'
26
+ spec.add_runtime_dependency 'asana', '>0.10.0'
27
27
  spec.add_runtime_dependency 'cache_method'
28
28
  spec.add_runtime_dependency 'dalli'
29
29
 
30
30
  spec.add_development_dependency 'bundler'
31
31
  spec.add_development_dependency 'minitest-profile'
32
32
  spec.add_development_dependency 'mocha'
33
- spec.add_development_dependency 'quality', '~> 37'
33
+ spec.add_development_dependency 'overcommit'
34
+ spec.add_development_dependency 'quality', '~> 38'
34
35
  spec.add_development_dependency 'rake', '~> 13.0'
35
36
  spec.add_development_dependency 'rspec', '>=3.4'
36
37
  spec.add_development_dependency 'simplecov'
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "result": {
3
- "covered_percent": 83.74
3
+ "covered_percent": 85.38
4
4
  }
5
5
  }
data/lib/checkoff/cli.rb CHANGED
@@ -15,11 +15,13 @@ module Checkoff
15
15
  class CLI
16
16
  attr_reader :sections, :stderr
17
17
 
18
- def initialize(workspaces: Checkoff::Workspaces.new,
19
- projects: Checkoff::Projects.new,
20
- sections: Checkoff::Sections.new(projects: projects),
21
- tasks: Checkoff::Tasks.new,
22
- stderr: STDERR,
18
+ def initialize(config: Checkoff::ConfigLoader.load(:asana),
19
+ workspaces: Checkoff::Workspaces.new(config: config),
20
+ projects: Checkoff::Projects.new(config: config),
21
+ sections: Checkoff::Sections.new(config: config,
22
+ projects: projects),
23
+ tasks: Checkoff::Tasks.new(config: config),
24
+ stderr: $stderr,
23
25
  kernel: Kernel)
24
26
  @workspaces = workspaces
25
27
  @projects = projects
@@ -87,9 +89,10 @@ module Checkoff
87
89
  def parse_args(args)
88
90
  mode = args[0]
89
91
  subargs = OpenStruct.new
90
- if mode == 'view'
92
+ case mode
93
+ when 'view'
91
94
  parse_view_args(subargs, args)
92
- elsif mode == 'quickadd'
95
+ when 'quickadd'
93
96
  parse_quickadd_args(subargs, args)
94
97
  else
95
98
  raise
@@ -118,9 +121,10 @@ module Checkoff
118
121
  def run(args)
119
122
  validate_args!(args)
120
123
  command, subargs = parse_args(args)
121
- if command == 'view'
124
+ case command
125
+ when 'view'
122
126
  view(subargs.workspace, subargs.project, subargs.section)
123
- elsif command == 'quickadd'
127
+ when 'quickadd'
124
128
  quickadd(subargs.workspace, subargs.task_name)
125
129
  else
126
130
  raise
@@ -3,14 +3,53 @@
3
3
  require 'yaml'
4
4
  require 'active_support/core_ext/hash'
5
5
 
6
- # frozen_string_literal: true
7
6
  module Checkoff
7
+ # Use the provided config from a YAML file, and fall back to env
8
+ # variable if it's not populated for a key'
9
+ class EnvFallbackConfigLoader
10
+ def initialize(config, sym, yaml_filename)
11
+ @config = config
12
+ @envvar_prefix = sym.upcase
13
+ @yaml_filename = yaml_filename
14
+ end
15
+
16
+ def envvar_name(key)
17
+ "#{@envvar_prefix}__#{key.upcase}"
18
+ end
19
+
20
+ def [](key)
21
+ config_value = @config[key]
22
+ return config_value unless config_value.nil?
23
+
24
+ ENV[envvar_name(key)]
25
+ end
26
+
27
+ def fetch(key)
28
+ out = self[key]
29
+ return out unless out.nil?
30
+
31
+ raise KeyError,
32
+ "Please configure either the #{key} key in #{@yaml_filename} or set #{envvar_name(key)}"
33
+ end
34
+ end
35
+
8
36
  # Load configuration file
9
37
  class ConfigLoader
10
- def self.load(sym)
38
+ def self.yaml_filename(sym)
11
39
  file = "#{sym}.yml"
12
- YAML.load_file(File.expand_path("~/.#{file}"))
13
- .with_indifferent_access
40
+ File.expand_path("~/.#{file}")
41
+ end
42
+
43
+ def self.load_yaml_file(sym)
44
+ filename = yaml_filename(sym)
45
+ return {} unless File.exist?(filename)
46
+
47
+ YAML.load_file(filename).with_indifferent_access
48
+ end
49
+
50
+ def self.load(sym)
51
+ yaml_result = load_yaml_file(sym)
52
+ EnvFallbackConfigLoader.new(yaml_result, sym, yaml_filename(sym))
14
53
  end
15
54
  end
16
55
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'config_loader'
2
4
 
3
- # frozen_string_literal: true
4
5
  require 'cache_method'
5
6
  require 'asana'
6
7
 
@@ -25,7 +26,7 @@ module Checkoff
25
26
 
26
27
  def initialize(config: Checkoff::ConfigLoader.load(:asana),
27
28
  asana_client: Asana::Client,
28
- workspaces: Checkoff::Workspaces.new)
29
+ workspaces: Checkoff::Workspaces.new(config: config))
29
30
  @config = config
30
31
  @asana_client = asana_client
31
32
  @workspaces = workspaces
@@ -48,11 +49,9 @@ module Checkoff
48
49
  end
49
50
 
50
51
  def my_tasks(workspace_name)
51
- my_tasks = @config[:my_tasks]
52
- gid = @config[:my_tasks][workspace_name] unless my_tasks.nil?
53
- if my_tasks.nil? || gid.nil?
54
- raise "Please define [:my_tasks][#{workspace_name}] in config file"
55
- end
52
+ my_tasks = @config.fetch(:my_tasks)
53
+ gid = my_tasks[workspace_name] unless my_tasks.nil?
54
+ raise "Please define [:my_tasks][#{workspace_name}] in config file" if my_tasks.nil? || gid.nil?
56
55
 
57
56
  projects.find_by_id(gid)
58
57
  end
@@ -78,7 +77,7 @@ module Checkoff
78
77
  per_page: 100,
79
78
  options: {
80
79
  fields: %w[name completed_at due_at due_on assignee_status tags
81
- memberships.project.gid memberships.section.name],
80
+ memberships.project.gid memberships.section.name dependencies],
82
81
  },
83
82
  }
84
83
  end
@@ -13,7 +13,8 @@ module Checkoff
13
13
 
14
14
  attr_reader :projects, :time
15
15
 
16
- def initialize(projects: Checkoff::Projects.new,
16
+ def initialize(config: Checkoff::ConfigLoader.load(:asana),
17
+ projects: Checkoff::Projects.new(config: config),
17
18
  time: Time)
18
19
  @projects = projects
19
20
  @time = time
@@ -22,12 +23,10 @@ module Checkoff
22
23
  def_delegators :@projects, :client
23
24
 
24
25
  def file_task_by_section(by_section, task, project_gid)
25
- membership = task.memberships.find { |m| m.project.gid == project_gid }
26
- if membership.nil?
27
- raise "Could not find task in project_gid #{project_gid}: #{task}"
28
- end
26
+ membership = task.memberships.find { |m| m['project']['gid'] == project_gid }
27
+ raise "Could not find task in project_gid #{project_gid}: #{task}" if membership.nil?
29
28
 
30
- current_section = membership.section.name
29
+ current_section = membership['section']['name']
31
30
  current_section = nil if current_section == '(no section)'
32
31
  by_section[current_section] ||= []
33
32
  by_section[current_section] << task
@@ -90,11 +89,12 @@ module Checkoff
90
89
 
91
90
  def tasks_by_section(workspace_name, project_name)
92
91
  project = project_or_raise(workspace_name, project_name)
93
- if project_name == :my_tasks_new
92
+ case project_name
93
+ when :my_tasks_new
94
94
  tasks_by_section_for_project_and_assignee_status(project, 'inbox')
95
- elsif project_name == :my_tasks_today
95
+ when :my_tasks_today
96
96
  tasks_by_section_for_project_and_assignee_status(project, 'today')
97
- elsif project_name == :my_tasks_upcoming
97
+ when :my_tasks_upcoming
98
98
  tasks_by_section_for_project_and_assignee_status(project, 'upcoming')
99
99
  else
100
100
  tasks_by_section_for_project(project)
@@ -15,7 +15,7 @@ module Checkoff
15
15
  SHORT_CACHE_TIME = MINUTE * 5
16
16
 
17
17
  def initialize(config: Checkoff::ConfigLoader.load(:asana),
18
- sections: Checkoff::Sections.new,
18
+ sections: Checkoff::Sections.new(config: config),
19
19
  asana_task: Asana::Resources::Task)
20
20
  @config = config
21
21
  @sections = sections
@@ -50,7 +50,7 @@ module Checkoff
50
50
  end
51
51
 
52
52
  def default_assignee_gid
53
- @config[:default_assignee_gid]
53
+ @config.fetch(:default_assignee_gid)
54
54
  end
55
55
  end
56
56
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Checkoff
4
- VERSION = '0.5.2'
4
+ VERSION = '0.7.0'
5
5
  end
@@ -11,13 +11,13 @@ module Checkoff
11
11
 
12
12
  def client
13
13
  @client ||= @asana_client.new do |c|
14
- c.authentication :access_token, @config[:personal_access_token]
14
+ c.authentication :access_token, @config.fetch(:personal_access_token)
15
15
  c.default_headers 'asana-enable' => 'string_ids,new_sections'
16
16
  end
17
17
  end
18
18
 
19
19
  def default_workspace_gid
20
- @config[:default_workspace_gid]
20
+ @config.fetch(:default_workspace_gid)
21
21
  end
22
22
 
23
23
  def workspace_by_name(workspace_name)
@@ -3,7 +3,7 @@
3
3
  require 'quality/rake/task'
4
4
 
5
5
  Quality::Rake::Task.new do |task|
6
- task.skip_tools = ['reek']
6
+ task.skip_tools = %w[reek cane eslint jscs pycodestyle rails_best_practices flake8]
7
7
  task.output_dir = 'metrics'
8
- task.exclude_files = ['docs/example_project.png']
8
+ task.exclude_files = ['docs/example_project.png', '.rubocop.yml']
9
9
  end
@@ -1 +1 @@
1
- 410
1
+ 416
@@ -1 +1 @@
1
- 1
1
+ 4
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkoff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-17 00:00:00.000000000 Z
11
+ date: 2021-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: asana
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ">"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.10.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: '0'
40
+ version: 0.10.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: cache_method
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +108,34 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: overcommit
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
  - !ruby/object:Gem::Dependency
112
126
  name: quality
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '37'
131
+ version: '38'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '37'
138
+ version: '38'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rake
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +188,7 @@ extra_rdoc_files: []
174
188
  files:
175
189
  - ".circleci/config.yml"
176
190
  - ".gitignore"
191
+ - ".overcommit.yml"
177
192
  - ".rubocop.yml"
178
193
  - ".ruby-version"
179
194
  - ".travis.yml"
@@ -235,7 +250,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
235
250
  requirements:
236
251
  - - ">="
237
252
  - !ruby/object:Gem::Version
238
- version: '0'
253
+ version: '2.5'
239
254
  required_rubygems_version: !ruby/object:Gem::Requirement
240
255
  requirements:
241
256
  - - ">="