checkoff 0.39.1 → 0.39.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dde98e951a53086231de929b8eab46e11ab7056e853879da48363a17e36c9404
4
- data.tar.gz: c3e8bd5a59452d1e3cbaa5776b1b36b9ea9097062cee836dbc54b42c2b400e36
3
+ metadata.gz: e76d0cf72eb0426c6c69b27837d486f9cbe6de2f0782b10acc157f1b305941b1
4
+ data.tar.gz: effbabaaccae53bf8e3e843f509bba7477a24a34be44542906bf33e39a6a1f91
5
5
  SHA512:
6
- metadata.gz: 9c673008ef9a2985c5ffa0b22bbda49199c4b072bd6c90c2642bf318d5a1fa455b85677016e046cd0f10aada9cff0507f1ba4b53317d5407a13c746e8a625247
7
- data.tar.gz: f1eba99cad086db81ba4b69a28cefd754ac4c98d3a9016ed191e065481011b5971194be2c80a303d55daa48c195ef4506d7ae3c364719cc707faab05c259e1b5
6
+ metadata.gz: a0d0e684e7811ab1ba2637117969e114b1c2c01e8e495f5dd2aa42255ff9d8ee1b67cf6368dcb2908ce1e70000b51c537492a5e812632b2c134ff0b632602510
7
+ data.tar.gz: b24402a8cbf03684397dddea78ba3d778cd96fbb9408a828853e737c65b787b7bb1170f14ff5f28d1efb7b599766e944df8f1e2ce27eff93f03e5b02736ccd86
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- checkoff (0.39.1)
15
+ checkoff (0.39.2)
16
16
  activesupport
17
17
  asana (> 0.10.0)
18
18
  cache_method
@@ -74,7 +74,7 @@ GEM
74
74
  multi_json
75
75
  gli (2.21.0)
76
76
  hashdiff (1.0.1)
77
- i18n (1.14.0)
77
+ i18n (1.14.1)
78
78
  concurrent-ruby (~> 1.0)
79
79
  imagen (0.1.8)
80
80
  parser (>= 2.5, != 2.5.1.1)
@@ -14,6 +14,8 @@
14
14
  # def tasks; end
15
15
  # # @return [Asana::ProxiedResourceClasses::Workspace]
16
16
  # def workspaces; end
17
+ # # @return [Asana::ProxiedResourceClasses::Section]
18
+ # def sections; end
17
19
  # end
18
20
  # module Resources
19
21
  # class Task
@@ -43,10 +45,26 @@
43
45
  # # @param options [Hash] the request I/O options.
44
46
  # # @return [Asana::Resources::Task]
45
47
  # def find_by_id(id, options: {}); end
48
+ # # @param section [Asana::Resources::section]
49
+ # # @param options [Hash] the request I/O options.
50
+ # # @return [Array<Asana::Resources::Task>]
51
+ # def get_tasks(assignee: nil,
52
+ # project: nil,
53
+ # section: nil,
54
+ # workspace: nil,
55
+ # completed_since: nil,
56
+ # per_page: 20,
57
+ # modified_since: nil,
58
+ # options: {}); end
46
59
  # end
47
60
  # class Workspace
48
61
  # # @return [Array<Asana::Resources::Workspace>]
49
62
  # def find_all; end
50
63
  # end
64
+ # class Section
65
+ # # @param project_gid [String]
66
+ # # @return [Array<Asana::Resources::Section>]
67
+ # def get_sections_for_project(client, project_gid:, options: {}); end
68
+ # end
51
69
  # end
52
70
  # end
@@ -9,14 +9,23 @@ require_relative 'my_tasks'
9
9
  module Checkoff
10
10
  # Query different sections of Asana projects
11
11
  class Sections
12
+ # @!parse
13
+ # extend CacheMethod::ClassMethods
14
+
12
15
  MINUTE = 60
16
+ # @sg-ignore
13
17
  LONG_CACHE_TIME = MINUTE * 15
18
+ # @sg-ignore
14
19
  SHORT_CACHE_TIME = MINUTE * 5
15
20
 
16
21
  extend Forwardable
17
22
 
18
23
  attr_reader :projects, :workspaces, :time, :my_tasks
19
24
 
25
+ # @param client [Asana::Client]
26
+ # @param projects [Checkoff::Projects]
27
+ # @param workspaces [Checkoff::Workspaces]
28
+ # @param time [Class<Time>]
20
29
  def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
21
30
  client: Checkoff::Clients.new(config: config).client,
22
31
  projects: Checkoff::Projects.new(config: config,
@@ -32,8 +41,13 @@ module Checkoff
32
41
  end
33
42
 
34
43
  # Returns a list of Asana API section objects for a given project
44
+ # @param workspace_name [String]
45
+ # @param project_name [String, Symbol]
46
+ #
47
+ # @return [Array<Asana::Resources::Section>]
35
48
  def sections_or_raise(workspace_name, project_name)
36
49
  project = project_or_raise(workspace_name, project_name)
50
+ # @sg-ignore
37
51
  client.sections.get_sections_for_project(project_gid: project.gid)
38
52
  end
39
53
 
@@ -55,6 +69,14 @@ module Checkoff
55
69
  # XXX: Rename to section_tasks
56
70
  #
57
71
  # Pulls task objects from a specified section
72
+ #
73
+ # @param workspace_name [String]
74
+ # @param project_name [String, Symbol]
75
+ # @param section_name [String, nil]
76
+ # @param only_uncompleted [Boolean]
77
+ # @param extra_fields [Array<String>]
78
+ #
79
+ # @return [Array<Asana::Resources::Task>]
58
80
  def tasks(workspace_name, project_name, section_name,
59
81
  only_uncompleted: true,
60
82
  extra_fields: [])
@@ -71,27 +93,35 @@ module Checkoff
71
93
  # @param workspace_name [String]
72
94
  # @param project_name [String, Symbol]
73
95
  # @param section_name [String, nil]
96
+ #
74
97
  # @return [Array<String>]
75
98
  def section_task_names(workspace_name, project_name, section_name)
76
- tasks = tasks(workspace_name, project_name, section_name)
77
- tasks.map(&:name)
99
+ task_array = tasks(workspace_name, project_name, section_name)
100
+ task_array.map(&:name)
78
101
  end
79
102
  cache_method :section_task_names, SHORT_CACHE_TIME
80
103
 
104
+ # @param workspace_name [String]
105
+ # @param project_name [String, Symbol]
106
+ # @param section_name [String, nil]
107
+ #
108
+ # @return [Asana::Resources::Section]
81
109
  def section_or_raise(workspace_name, project_name, section_name)
82
- section = section(workspace_name, project_name, section_name)
83
- if section.nil?
110
+ s = section(workspace_name, project_name, section_name)
111
+ if s.nil?
84
112
  valid_sections = sections_or_raise(workspace_name, project_name).map(&:name)
85
113
 
86
114
  raise "Could not find section #{section_name} under project #{project_name} " \
87
115
  "under workspace #{workspace_name}. Valid sections: #{valid_sections}"
88
116
  end
89
- section
117
+ s
90
118
  end
91
119
  cache_method :section_or_raise, LONG_CACHE_TIME
92
120
 
93
121
  private
94
122
 
123
+ # @!attribute [r] client
124
+ # @return [Asana::Client]
95
125
  attr_reader :client
96
126
 
97
127
  # Given a project object, pull all tasks, then provide a Hash of
@@ -117,6 +147,7 @@ module Checkoff
117
147
  # @return [Hash<[String,nil], Array<Asana::Resources::Task>>]
118
148
  def by_section(tasks, project_gid)
119
149
  by_section = {}
150
+ # @sg-ignore
120
151
  sections = client.sections.get_sections_for_project(project_gid: project_gid)
121
152
  sections.each { |section| by_section[section_key(section.name)] = [] }
122
153
  tasks.each { |task| file_task_by_section(by_section, task, project_gid) }
@@ -124,15 +155,25 @@ module Checkoff
124
155
  end
125
156
  cache_method :by_section, LONG_CACHE_TIME
126
157
 
158
+ # @param by_section [Hash{[String, nil] => Array<Asana::Resources::Task>}]
159
+ # @param task [Asana::Resources::Task]
160
+ # @param project_gid [String]
161
+ # @return [void]
127
162
  def file_task_by_section(by_section, task, project_gid)
163
+ # @type [Array<Hash>]
128
164
  membership = task.memberships.find { |m| m['project']['gid'] == project_gid }
129
165
  raise "Could not find task in project_gid #{project_gid}: #{task}" if membership.nil?
130
166
 
167
+ # @type [String, nil]
131
168
  current_section = section_key(membership['section']['name'])
132
169
 
170
+ # @sg-ignore
133
171
  by_section.fetch(current_section) << task
134
172
  end
135
173
 
174
+ # @param workspace_name [String]
175
+ # @param project_name [String, Symbol]
176
+ # @return [Asana::Resources::Project]
136
177
  def project_or_raise(workspace_name, project_name)
137
178
  project = projects.project(workspace_name, project_name)
138
179
  if project.nil?
@@ -64,13 +64,13 @@ module Checkoff
64
64
  end
65
65
 
66
66
  # Pull a specific task by name
67
+ # @param task_gid [String]
68
+ # @param extra_fields [Array<String>]
67
69
  # @return [Asana::Resources::Task, nil]
68
70
  def task_by_gid(task_gid,
69
- only_uncompleted: true,
70
71
  extra_fields: [])
71
- options = projects.task_options
72
- options[:options][:fields] += extra_fields
73
- options[:completed_since] = '9999-12-01' if only_uncompleted
72
+ options = projects.task_options.fetch(:options, {})
73
+ options[:fields] += extra_fields
74
74
  client.tasks.find_by_id(task_gid, options: options)
75
75
  end
76
76
 
@@ -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.39.1'
6
+ VERSION = '0.39.2'
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.39.1
4
+ version: 0.39.2
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-06-04 00:00:00.000000000 Z
11
+ date: 2023-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport