checkoff 0.93.0 → 0.94.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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/checkoff/internal/task_timing.rb +31 -0
- data/lib/checkoff/tasks.rb +18 -31
- data/lib/checkoff/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3728a0da90fb49dedd232b05722fbb87f03789d3bf9bc15513e4fa4b88f9e6fc
|
4
|
+
data.tar.gz: 16ce81c8b51905620414ff21f9469ce83c100a61985f355b8a27de20b7234b3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d73466d69b7b116eb8c58c0053b7cf13cedf288477e7cc8862de091fdd183e5a84355e19841e09df003da9b44d2b87ac90a459845c9186737069002f5312e455
|
7
|
+
data.tar.gz: 207d7d34ecdc3435892afe3b96860df2373e36067f8c75866f7b87d5a6f0aac0ebe89b0889b45d6a31ddec1ac6211f592fce4b657aa70ffad5e5c504deeea773
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Checkoff
|
4
|
+
module Internal
|
5
|
+
# Utility methods for working with task dates and times
|
6
|
+
class TaskTiming
|
7
|
+
# @param time_class [Class<Time>]
|
8
|
+
def initialize(time_class: Time)
|
9
|
+
@time_class = time_class
|
10
|
+
end
|
11
|
+
|
12
|
+
# @param task [Asana::Resources::Task]
|
13
|
+
# @return [Time, nil]
|
14
|
+
def start_time(task)
|
15
|
+
return @time_class.parse(task.start_at) if task.start_at
|
16
|
+
return @time_class.parse(task.start_on) if task.start_on
|
17
|
+
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
|
21
|
+
# @param task [Asana::Resources::Task]
|
22
|
+
# @return [Time, nil]
|
23
|
+
def due_time(task)
|
24
|
+
return @time_class.parse(task.due_at) if task.due_at
|
25
|
+
return @time_class.parse(task.due_on) if task.due_on
|
26
|
+
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/checkoff/tasks.rb
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
require_relative 'sections'
|
6
6
|
require_relative 'workspaces'
|
7
7
|
require_relative 'internal/config_loader'
|
8
|
+
require_relative 'internal/task_timing'
|
8
9
|
require 'asana'
|
9
10
|
|
10
11
|
module Checkoff
|
@@ -57,8 +58,8 @@ module Checkoff
|
|
57
58
|
def task_ready?(task, ignore_dependencies: false)
|
58
59
|
return false if !ignore_dependencies && incomplete_dependencies?(task)
|
59
60
|
|
60
|
-
start = start_time(task)
|
61
|
-
due = due_time(task)
|
61
|
+
start = task_timing.start_time(task)
|
62
|
+
due = task_timing.due_time(task)
|
62
63
|
|
63
64
|
return true if start.nil? && due.nil?
|
64
65
|
|
@@ -79,12 +80,12 @@ module Checkoff
|
|
79
80
|
only_uncompleted: true,
|
80
81
|
extra_fields: [])
|
81
82
|
# @sg-ignore
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
83
|
+
t = tasks(workspace_name,
|
84
|
+
project_name,
|
85
|
+
section_name: section_name,
|
86
|
+
only_uncompleted: only_uncompleted,
|
87
|
+
extra_fields: extra_fields)
|
88
|
+
t.find { |task| task.name == task_name }
|
88
89
|
end
|
89
90
|
cache_method :task, SHORT_CACHE_TIME
|
90
91
|
|
@@ -146,16 +147,20 @@ module Checkoff
|
|
146
147
|
|
147
148
|
private
|
148
149
|
|
150
|
+
# @return [Checkoff::Internal::TaskTiming]
|
151
|
+
def task_timing
|
152
|
+
@task_timing ||= Checkoff::Internal::TaskTiming.new(time_class: @time_class)
|
153
|
+
end
|
154
|
+
|
149
155
|
# @param workspace_name [String]
|
150
156
|
# @param project_name [String, Symbol]
|
151
|
-
# @param section_name [String, nil,
|
157
|
+
# @param section_name [String, nil, Symbol<:unspecified>]
|
152
158
|
# @param only_uncompleted [Boolean]
|
153
159
|
# @param extra_fields [Array<String>]
|
160
|
+
#
|
154
161
|
# @return [Enumerable<Asana::Resources::Task>]
|
155
|
-
def
|
156
|
-
|
157
|
-
only_uncompleted:,
|
158
|
-
extra_fields:)
|
162
|
+
def tasks(workspace_name, project_name,
|
163
|
+
only_uncompleted:, extra_fields:, section_name: :unspecified)
|
159
164
|
if section_name == :unspecified
|
160
165
|
project = projects.project_or_raise(workspace_name, project_name)
|
161
166
|
projects.tasks_from_project(project,
|
@@ -182,23 +187,5 @@ module Checkoff
|
|
182
187
|
def default_assignee_gid
|
183
188
|
@config.fetch(:default_assignee_gid)
|
184
189
|
end
|
185
|
-
|
186
|
-
# @param task [Asana::Resources::Task]
|
187
|
-
# @return [Time, nil]
|
188
|
-
def start_time(task)
|
189
|
-
return @time_class.parse(task.start_at) if task.start_at
|
190
|
-
return @time_class.parse(task.start_on) if task.start_on
|
191
|
-
|
192
|
-
nil
|
193
|
-
end
|
194
|
-
|
195
|
-
# @param task [Asana::Resources::Task]
|
196
|
-
# @return [Time, nil]
|
197
|
-
def due_time(task)
|
198
|
-
return @time_class.parse(task.due_at) if task.due_at
|
199
|
-
return @time_class.parse(task.due_on) if task.due_on
|
200
|
-
|
201
|
-
nil
|
202
|
-
end
|
203
190
|
end
|
204
191
|
end
|
data/lib/checkoff/version.rb
CHANGED
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.
|
4
|
+
version: 0.94.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-10-
|
11
|
+
date: 2023-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -153,6 +153,7 @@ files:
|
|
153
153
|
- lib/checkoff/internal/selector_classes/task/function_evaluator.rb
|
154
154
|
- lib/checkoff/internal/selector_evaluator.rb
|
155
155
|
- lib/checkoff/internal/task_selector_evaluator.rb
|
156
|
+
- lib/checkoff/internal/task_timing.rb
|
156
157
|
- lib/checkoff/my_tasks.rb
|
157
158
|
- lib/checkoff/portfolios.rb
|
158
159
|
- lib/checkoff/project_selectors.rb
|