checkoff 0.148.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: 59a19680baee0ffb1a81101fe640019611e61fcb2f19928a7438a720bc2cc577
4
- data.tar.gz: 8cdc27dce1e2e1d171ef3d8bb1b61f4978f8dddf53fbf477c31881eed36e81c8
3
+ metadata.gz: d22e09a2b3d0e47fa0eebca1c5484aa916327cf014caa2f5a5491c66791aa607
4
+ data.tar.gz: aa50373ee49bf7c70f0930fbd8480670bb395ebf760e27309c3dbcfd692ff22d
5
5
  SHA512:
6
- metadata.gz: 298bf510b836223c6bb61424011c019cc54ab600c08baba89db73b5166b3ffabb74e1f0cbdf4faccc31cf70439411987445763b62c7422d3d46afc97508d506d
7
- data.tar.gz: fcd68e91155a1058af51f3d75e32064d0afc9f45be9277d3cf3a4bf53e8df966acfadbb6f440330899e879dcc2e85348eced0e29fbe4cf7819a55214b980be7d
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.148.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.148.0'
6
+ VERSION = '0.149.0'
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkoff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.148.0
4
+ version: 0.149.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz