checkoff 0.100.0 → 0.101.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/config/definitions.rb +4 -0
- data/lib/checkoff/internal/selector_classes/task.rb +17 -0
- data/lib/checkoff/portfolios.rb +10 -0
- data/lib/checkoff/tasks.rb +20 -0
- data/lib/checkoff/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6242a956ad83d3a1818be59711f4ba42040d7051dac2dd0ba2c8a2e5ed29f244
|
4
|
+
data.tar.gz: 515a08a90d20a58956256f76248f01d7a5fd52c6ac14e1fbd8215a6eb33dcc6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8575f32ba5e2130117784cdf0b6e3f9bd40a11c918ffd99208457cd8dde84f7333da5ffc09096f520bccb28f6451da0605f3a3073002de89e8b9d75800371dfa
|
7
|
+
data.tar.gz: 037b01300963f231ba1401eb55beb47aff94deb9baab62c3d952876de3d3afc6d5a2c427bb717f5bdc0b8faa8cf3029bdd844de8d955ae3d600ebf9b2ee20835
|
data/Gemfile.lock
CHANGED
data/config/definitions.rb
CHANGED
@@ -394,6 +394,23 @@ module Checkoff
|
|
394
394
|
limit_to_portfolio_gid: limit_to_portfolio_gid)
|
395
395
|
end
|
396
396
|
end
|
397
|
+
|
398
|
+
# :in_portfolio_named? function
|
399
|
+
class InPortfolioNamedFunctionEvaluator < FunctionEvaluator
|
400
|
+
FUNCTION_NAME = :in_portfolio_named?
|
401
|
+
|
402
|
+
def matches?
|
403
|
+
fn?(selector, FUNCTION_NAME)
|
404
|
+
end
|
405
|
+
|
406
|
+
# @param task [Asana::Resources::Task]
|
407
|
+
# @param portfolio_name [String]
|
408
|
+
#
|
409
|
+
# @return [Boolean]
|
410
|
+
def evaluate(task, portfolio_name)
|
411
|
+
@tasks.in_portfolio_named?(task, portfolio_name)
|
412
|
+
end
|
413
|
+
end
|
397
414
|
end
|
398
415
|
end
|
399
416
|
end
|
data/lib/checkoff/portfolios.rb
CHANGED
@@ -78,6 +78,16 @@ module Checkoff
|
|
78
78
|
end
|
79
79
|
cache_method :portfolio_by_gid, SHORT_CACHE_TIME
|
80
80
|
|
81
|
+
# @param workspace_name [String]
|
82
|
+
# @param portfolio_name [String]
|
83
|
+
#
|
84
|
+
# @return [Enumerable<Asana::Resources::Project>]
|
85
|
+
def projects_in_portfolio(workspace_name, portfolio_name)
|
86
|
+
portfolio = portfolio_or_raise(workspace_name, portfolio_name)
|
87
|
+
portfolio.get_items
|
88
|
+
end
|
89
|
+
cache_method :projects_in_portfolio, LONG_CACHE_TIME
|
90
|
+
|
81
91
|
private
|
82
92
|
|
83
93
|
# @return [Checkoff::Workspaces]
|
data/lib/checkoff/tasks.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
# frozen_string_literal: true
|
4
4
|
|
5
5
|
require_relative 'sections'
|
6
|
+
require_relative 'portfolios'
|
6
7
|
require_relative 'workspaces'
|
7
8
|
require_relative 'internal/config_loader'
|
8
9
|
require_relative 'internal/task_timing'
|
@@ -26,6 +27,7 @@ module Checkoff
|
|
26
27
|
# @param client [Asana::Client]
|
27
28
|
# @param workspaces [Checkoff::Workspaces]
|
28
29
|
# @param sections [Checkoff::Sections]
|
30
|
+
# @param portfolios [Checkoff::Portfolios]
|
29
31
|
# @param time_class [Class<Time>]
|
30
32
|
# @param date_class [Class<Date>]
|
31
33
|
# @param asana_task [Class<Asana::Resources::Task>]
|
@@ -35,6 +37,8 @@ module Checkoff
|
|
35
37
|
client: client),
|
36
38
|
sections: Checkoff::Sections.new(config: config,
|
37
39
|
client: client),
|
40
|
+
portfolios: Checkoff::Portfolios.new(config: config,
|
41
|
+
client: client),
|
38
42
|
time_class: Time,
|
39
43
|
date_class: Date,
|
40
44
|
asana_task: Asana::Resources::Task)
|
@@ -44,6 +48,7 @@ module Checkoff
|
|
44
48
|
@date_class = date_class
|
45
49
|
@asana_task = asana_task
|
46
50
|
@client = client
|
51
|
+
@portfolios = portfolios
|
47
52
|
@workspaces = workspaces
|
48
53
|
end
|
49
54
|
|
@@ -166,6 +171,21 @@ module Checkoff
|
|
166
171
|
task_hashes.task_to_h(task)
|
167
172
|
end
|
168
173
|
|
174
|
+
# @param task [Asana::Resources::Task]
|
175
|
+
# @param portfolio_name [String]
|
176
|
+
# @param workspace_name [String]
|
177
|
+
def in_portfolio_named?(task,
|
178
|
+
portfolio_name,
|
179
|
+
workspace_name: @workspaces.default_workspace.name)
|
180
|
+
portfolio_projects = @portfolios.projects_in_portfolio(workspace_name, portfolio_name)
|
181
|
+
task.memberships.any? do |membership|
|
182
|
+
project_gid = membership.fetch('project').fetch('gid')
|
183
|
+
portfolio_projects.any? do |portfolio_project|
|
184
|
+
portfolio_project.gid == project_gid
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
169
189
|
private
|
170
190
|
|
171
191
|
# @return [Checkoff::Internal::TaskTiming]
|
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.101.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-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|