checkoff 0.147.0 → 0.149.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
2
  SHA256:
3
- metadata.gz: d2cf77737db4f96b50336287995a535b56d94febab4a2de78e83e6467f4fcaa0
4
- data.tar.gz: 63285583fcd06b843bc5c6679bdb9af2ddf1ae157a966b9c5a0c04966812ff3d
3
+ metadata.gz: d22e09a2b3d0e47fa0eebca1c5484aa916327cf014caa2f5a5491c66791aa607
4
+ data.tar.gz: aa50373ee49bf7c70f0930fbd8480670bb395ebf760e27309c3dbcfd692ff22d
5
5
  SHA512:
6
- metadata.gz: fe8ff80ae724dd967d4faf53c833388a31b159a6154341d3abfe11400ae7eea3e849b34bc21f9f61bf06e9f52a325766dba5f4c60bb01071d6753c832693569e
7
- data.tar.gz: 3177e4244331287d5ef7435e99568c16910d5dd2c9f28a2977b0b11640c46f18d50d242e78e4e355381299b0b409a012c709f4045958014c45d258a5638c3f04
6
+ metadata.gz: f855008ebd7d20737f7d4e8771796f67c6c86ab0fb991e83469caca6de5bb3fac634c97edbd0b6728ae4c9191c979a75d91722f6729b74eb1318bb4ed293eabb
7
+ data.tar.gz: 2bcdb1624b4bf845a61b6ac920277cccd13960212c5ce956fb02d304a9ef5a85110e9bf0f5ffb9d7bd1cdc0630b8caa7275a2ec28b95e858deab5c724514fdac
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- checkoff (0.147.0)
15
+ checkoff (0.149.0)
16
16
  activesupport
17
17
  asana (> 0.10.0)
18
18
  cache_method
@@ -8,6 +8,7 @@ require_relative 'workspaces'
8
8
  require_relative 'internal/config_loader'
9
9
  require_relative 'internal/task_timing'
10
10
  require_relative 'internal/task_hashes'
11
+ require_relative 'internal/logging'
11
12
  require 'asana'
12
13
 
13
14
  module Checkoff
@@ -16,6 +17,8 @@ module Checkoff
16
17
  # @!parse
17
18
  # extend CacheMethod::ClassMethods
18
19
 
20
+ include Logging
21
+
19
22
  MINUTE = 60
20
23
  HOUR = MINUTE * 60
21
24
  DAY = 24 * HOUR
@@ -167,6 +170,8 @@ module Checkoff
167
170
 
168
171
  # True if any of the task's dependencies are marked incomplete
169
172
  #
173
+ # Include 'dependencies.gid' in extra_fields of task passed in.
174
+ #
170
175
  # @param task [Asana::Resources::Task]
171
176
  def incomplete_dependencies?(task)
172
177
  # Avoid a redundant fetch. Unfortunately, Ruby SDK allows
@@ -179,8 +184,7 @@ module Checkoff
179
184
 
180
185
  # @sg-ignore
181
186
  # @type [Enumerable<Asana::Resources::Task>, nil]
182
- dependencies = task.instance_variable_get(:@dependencies)
183
- dependencies = task.dependencies.map { |dependency| { 'gid' => dependency.gid } } if dependencies.nil?
187
+ dependencies = task.instance_variable_get(:@dependencies) || []
184
188
 
185
189
  dependencies.any? do |parent_task_info|
186
190
  # the real bummer though is that asana doesn't let you fetch
@@ -188,20 +192,36 @@ module Checkoff
188
192
  # regardless:
189
193
  parent_task_gid = parent_task_info.fetch('gid')
190
194
 
191
- parent_task = task_by_gid(parent_task_gid,
192
- only_uncompleted: false)
195
+ parent_task = task_by_gid(parent_task_gid, only_uncompleted: false)
193
196
  parent_task.completed_at.nil?
194
197
  end
195
198
  end
196
199
 
197
200
  # @param task [Asana::Resources::Task]
198
201
  #
199
- # @return [Array<Asana::Resources::Task>]
202
+ # @return [Array<Hash>]
200
203
  def all_dependent_tasks(task)
201
204
  dependent_tasks = []
202
- task.dependents.each do |dependent_task|
203
- dependent_tasks << dependent_task
204
- dependent_tasks += all_dependent_tasks(dependent_task)
205
+ # See note above - same applies as does in @dependencies
206
+ #
207
+ # @type [Array<Hash>]
208
+ dependents = task.instance_variable_get(:@dependents) || []
209
+ dependents.each do |dependent_task_hash_or_obj|
210
+ # seems like if we ever .inspect the task, it stashes the task
211
+ # object instead of the hash. Try to avoid this - but maybe we
212
+ # need to convert if it does happen.
213
+ raise 'Found dependent task object!' if dependent_task_hash_or_obj.is_a?(Asana::Resources::Task)
214
+
215
+ dependent_task_hash = dependent_task_hash_or_obj
216
+
217
+ dependent_task = task_by_gid(dependent_task_hash.fetch('gid'),
218
+ only_uncompleted: true,
219
+ extra_fields: ['dependents'])
220
+ debug { "#{task.name} has dependent task #{dependent_task.name}" }
221
+ unless dependent_task.nil?
222
+ dependent_tasks << dependent_task
223
+ dependent_tasks += all_dependent_tasks(dependent_task)
224
+ end
205
225
  end
206
226
  dependent_tasks
207
227
  end
@@ -248,6 +268,11 @@ module Checkoff
248
268
  end
249
269
  end
250
270
 
271
+ # @return [Hash]
272
+ def as_cache_key
273
+ {}
274
+ end
275
+
251
276
  private
252
277
 
253
278
  # @return [Checkoff::Internal::TaskTiming]
@@ -69,7 +69,7 @@ module Checkoff
69
69
  limit_to_portfolio_name)
70
70
  end
71
71
 
72
- all_dependent_task_gids = @tasks.all_dependent_tasks(task).map(&:gid)
72
+ all_dependent_task_gids = nil
73
73
  task.memberships.all? do |membership_data|
74
74
  unless limit_to_portfolio_name.nil?
75
75
  project_gid = membership_data.fetch('project').fetch('gid')
@@ -86,6 +86,8 @@ module Checkoff
86
86
 
87
87
  next true if last_milestone.gid == task.gid
88
88
 
89
+ all_dependent_task_gids ||= @tasks.all_dependent_tasks(task).map(&:gid)
90
+
89
91
  all_dependent_task_gids.include? last_milestone.gid
90
92
  end
91
93
  end
@@ -3,5 +3,5 @@
3
3
  # Command-line and gem client for Asana (unofficial)
4
4
  module Checkoff
5
5
  # Version of library
6
- VERSION = '0.147.0'
6
+ VERSION = '0.149.0'
7
7
  end
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.147.0
4
+ version: 0.149.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: 2023-12-03 00:00:00.000000000 Z
11
+ date: 2023-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport