checkoff 0.164.0 → 0.166.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/project_selector_evaluator.rb +15 -2
- data/lib/checkoff/internal/selector_classes/function_evaluator.rb +4 -0
- data/lib/checkoff/internal/selector_classes/project/function_evaluator.rb +6 -0
- data/lib/checkoff/internal/selector_classes/project.rb +23 -0
- data/lib/checkoff/internal/task_hashes.rb +11 -0
- data/lib/checkoff/project_selectors.rb +8 -1
- data/lib/checkoff/tasks.rb +1 -1
- 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: c9cb05ee972b3a2f79c131e22fb0e690fb2d5df2497b6deb6086a1af3e66f968
|
4
|
+
data.tar.gz: 75db9682d91825259ce86276e820c2b45742943a0346728d0c4eb4a8316e93a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b47af68554c08cb0bfe4321a9ada6121b99ebf253cfdff749497def7f7afa9c0530bbb249b0b6b750b418def691ac3b3fae4521a777702fc674e291ffd916225
|
7
|
+
data.tar.gz: 37794f4d4a6ce253486fee8f1763436d1c301d5c65cfe5b60d2a01236992e093870d4c015e798866f7461d940894284d62ac00141cbd895d4c2c0cc496c0a248
|
data/Gemfile.lock
CHANGED
@@ -10,12 +10,18 @@ module Checkoff
|
|
10
10
|
# @param project [Asana::Resources::Project]
|
11
11
|
# @param projects [Checkoff::Projects]
|
12
12
|
# @param custom_fields [Checkoff::CustomFields]
|
13
|
+
# @param workspaces [Checkoff::Workspaces]
|
14
|
+
# @param portfolios [Checkoff::Portfolios]
|
13
15
|
def initialize(project:,
|
14
16
|
projects: Checkoff::Projects.new,
|
15
|
-
custom_fields: Checkoff::CustomFields.new
|
17
|
+
custom_fields: Checkoff::CustomFields.new,
|
18
|
+
workspaces: Checkoff::Workspaces.new,
|
19
|
+
portfolios: Checkoff::Portfolios.new)
|
16
20
|
@item = project
|
17
21
|
@projects = projects
|
18
22
|
@custom_fields = custom_fields
|
23
|
+
@workspaces = workspaces
|
24
|
+
@portfolios = portfolios
|
19
25
|
super()
|
20
26
|
end
|
21
27
|
|
@@ -38,7 +44,10 @@ module Checkoff
|
|
38
44
|
|
39
45
|
# @return [Hash]
|
40
46
|
def initializer_kwargs
|
41
|
-
{
|
47
|
+
{
|
48
|
+
projects: projects, custom_fields: custom_fields,
|
49
|
+
workspaces: workspaces, portfolios: portfolios
|
50
|
+
}
|
42
51
|
end
|
43
52
|
|
44
53
|
# @return [Asana::Resources::Project]
|
@@ -47,5 +56,9 @@ module Checkoff
|
|
47
56
|
attr_reader :projects
|
48
57
|
# @return [Checkoff::CustomFields]
|
49
58
|
attr_reader :custom_fields
|
59
|
+
# @return [Checkoff::Workspaces]
|
60
|
+
attr_reader :workspaces
|
61
|
+
# @return [Checkoff::Portfolios]
|
62
|
+
attr_reader :portfolios
|
50
63
|
end
|
51
64
|
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'checkoff/internal/logging'
|
4
|
+
|
3
5
|
module Checkoff
|
4
6
|
module SelectorClasses
|
5
7
|
# Base class to evaluate types of selector functions
|
6
8
|
class FunctionEvaluator
|
9
|
+
include Logging
|
10
|
+
|
7
11
|
# @sg-ignore
|
8
12
|
# @param _index [Integer]
|
9
13
|
def evaluate_arg?(_index)
|
@@ -9,11 +9,17 @@ module Checkoff
|
|
9
9
|
class FunctionEvaluator < ::Checkoff::SelectorClasses::FunctionEvaluator
|
10
10
|
# @param selector [Array<(Symbol, Array)>,String]
|
11
11
|
# @param projects [Checkoff::Projects]
|
12
|
+
# @param portfolios [Checkoff::Portfolios]
|
13
|
+
# @param workspaces [Checkoff::Workspaces]
|
12
14
|
def initialize(selector:,
|
13
15
|
projects:,
|
16
|
+
portfolios:,
|
17
|
+
workspaces:,
|
14
18
|
**_kwargs)
|
15
19
|
@selector = selector
|
16
20
|
@projects = projects
|
21
|
+
@portfolios = portfolios
|
22
|
+
@workspaces = workspaces
|
17
23
|
super()
|
18
24
|
end
|
19
25
|
|
@@ -36,6 +36,29 @@ module Checkoff
|
|
36
36
|
@projects.project_ready?(project, period: period)
|
37
37
|
end
|
38
38
|
end
|
39
|
+
|
40
|
+
# :in_portfolio_named? function
|
41
|
+
class InPortfolioNamedPFunctionEvaluator < FunctionEvaluator
|
42
|
+
FUNCTION_NAME = :in_portfolio_named?
|
43
|
+
|
44
|
+
def matches?
|
45
|
+
fn?(selector, FUNCTION_NAME)
|
46
|
+
end
|
47
|
+
|
48
|
+
# @param project [Asana::Resources::Project]
|
49
|
+
# @param portfolio_name [String]
|
50
|
+
# @param workspace_name [String, nil]
|
51
|
+
# @param extra_project_fields [Array<String>]
|
52
|
+
#
|
53
|
+
# @return [Boolean]
|
54
|
+
def evaluate(project, portfolio_name, workspace_name: nil, extra_project_fields: [])
|
55
|
+
workspace_name ||= project.workspace&.name
|
56
|
+
workspace_name ||= @workspaces.default_workspace.name
|
57
|
+
projects = @portfolios.projects_in_portfolio(workspace_name, portfolio_name,
|
58
|
+
extra_project_fields: extra_project_fields)
|
59
|
+
projects.any? { |p| p.name == project.name }
|
60
|
+
end
|
61
|
+
end
|
39
62
|
end
|
40
63
|
end
|
41
64
|
end
|
@@ -17,6 +17,17 @@ module Checkoff
|
|
17
17
|
task_hash
|
18
18
|
end
|
19
19
|
|
20
|
+
# @param task_data [Hash]
|
21
|
+
# @param client [Asana::Client]
|
22
|
+
#
|
23
|
+
# @return [Asana::Resources::Task]
|
24
|
+
def h_to_task(task_data, client:)
|
25
|
+
# copy of task_data without the 'unwrapped' key
|
26
|
+
clean_task_data = task_data.dup
|
27
|
+
clean_task_data.delete('unwrapped')
|
28
|
+
Asana::Resources::Task.new(clean_task_data, client: client)
|
29
|
+
end
|
30
|
+
|
20
31
|
private
|
21
32
|
|
22
33
|
# @param task_hash [Hash]
|
@@ -23,17 +23,20 @@ module Checkoff
|
|
23
23
|
# @param workspaces [Checkoff::Workspaces]
|
24
24
|
# @param projects [Checkoff::Projects]
|
25
25
|
# @param custom_fields [Checkoff::CustomFields]
|
26
|
+
# @param portfolios [Checkoff::Portfolios]
|
26
27
|
# @param clients [Checkoff::Clients]
|
27
28
|
# @param client [Asana::Client]
|
28
29
|
def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
|
29
30
|
workspaces: Checkoff::Workspaces.new(config: config),
|
30
31
|
projects: Checkoff::Projects.new(config: config),
|
31
32
|
custom_fields: Checkoff::CustomFields.new(config: config),
|
33
|
+
portfolios: Checkoff::Portfolios.new(config: config),
|
32
34
|
clients: Checkoff::Clients.new(config: config),
|
33
35
|
client: clients.client)
|
34
36
|
@workspaces = workspaces
|
35
37
|
@projects = projects
|
36
38
|
@custom_fields = custom_fields
|
39
|
+
@portfolios = portfolios
|
37
40
|
@client = client
|
38
41
|
end
|
39
42
|
|
@@ -42,7 +45,8 @@ module Checkoff
|
|
42
45
|
# project details. Examples: [:tag, 'foo'] [:not, [:tag, 'foo']] [:tag, 'foo']
|
43
46
|
# @return [Boolean]
|
44
47
|
def filter_via_project_selector(project, project_selector)
|
45
|
-
evaluator = ProjectSelectorEvaluator.new(project: project, projects: projects, custom_fields: custom_fields
|
48
|
+
evaluator = ProjectSelectorEvaluator.new(project: project, projects: projects, custom_fields: custom_fields,
|
49
|
+
workspaces: workspaces, portfolios: portfolios)
|
46
50
|
evaluator.evaluate(project_selector)
|
47
51
|
end
|
48
52
|
|
@@ -57,6 +61,9 @@ module Checkoff
|
|
57
61
|
# @return [Checkoff::CustomFields]
|
58
62
|
attr_reader :custom_fields
|
59
63
|
|
64
|
+
# @return [Checkoff::Portfolios]
|
65
|
+
attr_reader :portfolios
|
66
|
+
|
60
67
|
# @return [Asana::Client]
|
61
68
|
attr_reader :client
|
62
69
|
|
data/lib/checkoff/tasks.rb
CHANGED
@@ -249,7 +249,7 @@ module Checkoff
|
|
249
249
|
#
|
250
250
|
# @return [Asana::Resources::Task]
|
251
251
|
def h_to_task(task_data)
|
252
|
-
|
252
|
+
task_hashes.h_to_task(task_data, client: client)
|
253
253
|
end
|
254
254
|
|
255
255
|
# True if the task is in a project which is in the given portfolio
|
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.166.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-
|
11
|
+
date: 2023-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|