checkoff 0.5.1 → 0.6.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/.rubocop.yml +127 -2
- data/.travis.yml +7 -2
- data/checkoff.gemspec +4 -4
- data/coverage/.last_run.json +1 -1
- data/lib/checkoff/cli.rb +13 -9
- data/lib/checkoff/config_loader.rb +0 -1
- data/lib/checkoff/projects.rb +5 -6
- data/lib/checkoff/sections.rb +10 -9
- data/lib/checkoff/tasks.rb +1 -1
- data/lib/checkoff/version.rb +1 -1
- data/lib/tasks/quality.rake +2 -2
- data/metrics/bigfiles_high_water_mark +1 -1
- data/metrics/rubocop_high_water_mark +1 -1
- metadata +9 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5ed54aed7a0c5a533627bc50c187c1a0d0a289a0132d63549914b9e024dde68e
|
|
4
|
+
data.tar.gz: 531ed220ec4d4fcbfc20413d1571ada5074fe745ba81df81dd66cea81e1da5ed
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e2a700a5ca4b8ea76977b0d8fdcd1e1b72dd50dbcfc8020d5a8d6193cf809c6c0d7be1011f21d15389163aec348f85d8c73b01295c01fd91b3e12a75e40183f6
|
|
7
|
+
data.tar.gz: 7c263678ca6533ed555cd69655f66eac149124b932c63c10320ab87b4546c57de0cf9728f5b8d166eedea3d36cfab6e3d0f85f408626c768b304afa9ca0da7ac
|
data/.rubocop.yml
CHANGED
|
@@ -67,9 +67,134 @@ Style/StringLiterals:
|
|
|
67
67
|
- double_quotes
|
|
68
68
|
ConsistentQuotesInMultiline: true
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
Layout/BeginEndAlignment: # (new in 0.91)
|
|
71
|
+
Enabled: true
|
|
72
|
+
Layout/EmptyLinesAroundAttributeAccessor: # (new in 0.83)
|
|
73
|
+
Enabled: true
|
|
74
|
+
Layout/SpaceAroundMethodCallOperator: # (new in 0.82)
|
|
75
|
+
Enabled: true
|
|
76
|
+
Lint/BinaryOperatorWithIdenticalOperands: # (new in 0.89)
|
|
77
|
+
Enabled: true
|
|
78
|
+
Lint/ConstantDefinitionInBlock: # (new in 0.91)
|
|
79
|
+
Enabled: true
|
|
80
|
+
Lint/DeprecatedOpenSSLConstant: # (new in 0.84)
|
|
81
|
+
Enabled: true
|
|
82
|
+
Lint/DuplicateElsifCondition: # (new in 0.88)
|
|
83
|
+
Enabled: true
|
|
84
|
+
Lint/DuplicateRequire: # (new in 0.90)
|
|
85
|
+
Enabled: true
|
|
86
|
+
Lint/DuplicateRescueException: # (new in 0.89)
|
|
87
|
+
Enabled: true
|
|
88
|
+
Lint/EmptyConditionalBody: # (new in 0.89)
|
|
89
|
+
Enabled: true
|
|
90
|
+
Lint/EmptyFile: # (new in 0.90)
|
|
91
|
+
Enabled: true
|
|
92
|
+
Lint/FloatComparison: # (new in 0.89)
|
|
93
|
+
Enabled: true
|
|
94
|
+
Lint/IdentityComparison: # (new in 0.91)
|
|
95
|
+
Enabled: true
|
|
96
|
+
Lint/MissingSuper: # (new in 0.89)
|
|
97
|
+
Enabled: true
|
|
98
|
+
Lint/MixedRegexpCaptureTypes: # (new in 0.85)
|
|
99
|
+
Enabled: true
|
|
100
|
+
Lint/OutOfRangeRegexpRef: # (new in 0.89)
|
|
101
|
+
Enabled: true
|
|
102
|
+
Lint/RaiseException: # (new in 0.81)
|
|
103
|
+
Enabled: true
|
|
104
|
+
Lint/SelfAssignment: # (new in 0.89)
|
|
105
|
+
Enabled: true
|
|
106
|
+
Lint/StructNewOverride: # (new in 0.81)
|
|
107
|
+
Enabled: true
|
|
108
|
+
Lint/TopLevelReturnWithArgument: # (new in 0.89)
|
|
109
|
+
Enabled: true
|
|
110
|
+
Lint/TrailingCommaInAttributeDeclaration: # (new in 0.90)
|
|
111
|
+
Enabled: true
|
|
112
|
+
Lint/UnreachableLoop: # (new in 0.89)
|
|
113
|
+
Enabled: true
|
|
114
|
+
Lint/UselessMethodDefinition: # (new in 0.90)
|
|
115
|
+
Enabled: true
|
|
116
|
+
Lint/UselessTimes: # (new in 0.91)
|
|
117
|
+
Enabled: true
|
|
118
|
+
Style/AccessorGrouping: # (new in 0.87)
|
|
119
|
+
Enabled: true
|
|
120
|
+
Style/BisectedAttrAccessor: # (new in 0.87)
|
|
121
|
+
Enabled: true
|
|
122
|
+
Style/CaseLikeIf: # (new in 0.88)
|
|
123
|
+
Enabled: true
|
|
124
|
+
Style/CombinableLoops: # (new in 0.90)
|
|
125
|
+
Enabled: true
|
|
126
|
+
Style/ExplicitBlockArgument: # (new in 0.89)
|
|
127
|
+
Enabled: true
|
|
128
|
+
Style/ExponentialNotation: # (new in 0.82)
|
|
129
|
+
Enabled: true
|
|
130
|
+
Style/GlobalStdStream: # (new in 0.89)
|
|
131
|
+
Enabled: true
|
|
132
|
+
Style/HashAsLastArrayItem: # (new in 0.88)
|
|
133
|
+
Enabled: true
|
|
134
|
+
Style/HashEachMethods: # (new in 0.80)
|
|
135
|
+
Enabled: true
|
|
136
|
+
Style/HashLikeCase: # (new in 0.88)
|
|
137
|
+
Enabled: true
|
|
138
|
+
Style/HashTransformKeys: # (new in 0.80)
|
|
139
|
+
Enabled: true
|
|
140
|
+
Style/HashTransformValues: # (new in 0.80)
|
|
141
|
+
Enabled: true
|
|
142
|
+
Style/KeywordParametersOrder: # (new in 0.90)
|
|
143
|
+
Enabled: true
|
|
144
|
+
Style/OptionalBooleanParameter: # (new in 0.89)
|
|
145
|
+
Enabled: true
|
|
146
|
+
Style/RedundantAssignment: # (new in 0.87)
|
|
147
|
+
Enabled: true
|
|
148
|
+
Style/RedundantFetchBlock: # (new in 0.86)
|
|
149
|
+
Enabled: true
|
|
150
|
+
Style/RedundantFileExtensionInRequire: # (new in 0.88)
|
|
151
|
+
Enabled: true
|
|
152
|
+
Style/RedundantRegexpCharacterClass: # (new in 0.85)
|
|
153
|
+
Enabled: true
|
|
154
|
+
Style/RedundantRegexpEscape: # (new in 0.85)
|
|
155
|
+
Enabled: true
|
|
156
|
+
Style/RedundantSelfAssignment: # (new in 0.90)
|
|
157
|
+
Enabled: true
|
|
158
|
+
Style/SingleArgumentDig: # (new in 0.89)
|
|
159
|
+
Enabled: true
|
|
160
|
+
Style/SlicingWithRange: # (new in 0.83)
|
|
161
|
+
Enabled: true
|
|
162
|
+
Style/SoleNestedConditional: # (new in 0.89)
|
|
163
|
+
Enabled: true
|
|
164
|
+
Style/StringConcatenation: # (new in 0.89)
|
|
165
|
+
Enabled: true
|
|
166
|
+
Minitest/AssertInDelta: # (new in 0.10)
|
|
167
|
+
Enabled: true
|
|
168
|
+
Minitest/AssertionInLifecycleHook: # (new in 0.10)
|
|
169
|
+
Enabled: true
|
|
170
|
+
Minitest/AssertKindOf: # (new in 0.10)
|
|
171
|
+
Enabled: true
|
|
172
|
+
Minitest/AssertOutput: # (new in 0.10)
|
|
173
|
+
Enabled: true
|
|
174
|
+
Minitest/AssertPathExists: # (new in 0.10)
|
|
175
|
+
Enabled: true
|
|
176
|
+
Minitest/AssertSilent: # (new in 0.10)
|
|
177
|
+
Enabled: true
|
|
178
|
+
Minitest/LiteralAsActualArgument: # (new in 0.10)
|
|
179
|
+
Enabled: true
|
|
180
|
+
Minitest/MultipleAssertions: # (new in 0.10)
|
|
181
|
+
Enabled: true
|
|
182
|
+
Minitest/RefuteInDelta: # (new in 0.10)
|
|
183
|
+
Enabled: true
|
|
184
|
+
Minitest/RefuteKindOf: # (new in 0.10)
|
|
185
|
+
Enabled: true
|
|
186
|
+
Minitest/RefutePathExists: # (new in 0.10)
|
|
187
|
+
Enabled: true
|
|
188
|
+
Minitest/TestMethodName: # (new in 0.10)
|
|
189
|
+
# This gives false positives when non-test methods exist...
|
|
190
|
+
Enabled: false
|
|
191
|
+
Minitest/UnspecifiedException: # (new in 0.10)
|
|
192
|
+
Enabled: true
|
|
193
|
+
RSpec/StubbedMock: # (new in 1.44)
|
|
194
|
+
Enabled: true
|
|
72
195
|
|
|
196
|
+
AllCops:
|
|
197
|
+
TargetRubyVersion: 2.5
|
|
73
198
|
|
|
74
199
|
require:
|
|
75
200
|
- rubocop-rspec
|
data/.travis.yml
CHANGED
|
@@ -10,8 +10,13 @@ rvm:
|
|
|
10
10
|
# checking for main() in -lstdc++... RuntimeError: The compiler failed to generate
|
|
11
11
|
# https://travis-ci.com/apiology/pronto-punchlist/jobs/264907931
|
|
12
12
|
# - jruby-head
|
|
13
|
-
|
|
13
|
+
|
|
14
|
+
# These are currently pending ruby-asana fixes:
|
|
15
|
+
#
|
|
16
|
+
# https://github.com/Asana/ruby-asana/pull/99
|
|
17
|
+
#
|
|
18
|
+
# - ruby-head
|
|
19
|
+
# - ruby-3.0
|
|
14
20
|
- ruby-2.7
|
|
15
21
|
- ruby-2.6
|
|
16
22
|
- ruby-2.5
|
|
17
|
-
- ruby-2.4
|
data/checkoff.gemspec
CHANGED
|
@@ -10,12 +10,12 @@ Gem::Specification.new do |spec|
|
|
|
10
10
|
spec.version = Checkoff::VERSION
|
|
11
11
|
spec.authors = ['Vince Broz']
|
|
12
12
|
spec.email = ['vince@broz.cc']
|
|
13
|
-
|
|
14
13
|
spec.summary = 'Command-line and gem client for Asana (unofficial)'
|
|
15
14
|
spec.homepage = 'http://github.com/apiology/checkoff'
|
|
16
15
|
spec.license = 'MIT'
|
|
16
|
+
spec.required_ruby_version = '>= 2.5'
|
|
17
17
|
|
|
18
|
-
spec.files
|
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
19
19
|
f.match(%r{^(test|spec|features)/})
|
|
20
20
|
end
|
|
21
21
|
spec.bindir = 'exe'
|
|
@@ -23,14 +23,14 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
spec.require_paths = ['lib']
|
|
24
24
|
|
|
25
25
|
spec.add_runtime_dependency 'activesupport'
|
|
26
|
-
spec.add_runtime_dependency 'asana'
|
|
26
|
+
spec.add_runtime_dependency 'asana', '>0.10.0'
|
|
27
27
|
spec.add_runtime_dependency 'cache_method'
|
|
28
28
|
spec.add_runtime_dependency 'dalli'
|
|
29
29
|
|
|
30
30
|
spec.add_development_dependency 'bundler'
|
|
31
31
|
spec.add_development_dependency 'minitest-profile'
|
|
32
32
|
spec.add_development_dependency 'mocha'
|
|
33
|
-
spec.add_development_dependency 'quality', '~>
|
|
33
|
+
spec.add_development_dependency 'quality', '~> 38'
|
|
34
34
|
spec.add_development_dependency 'rake', '~> 13.0'
|
|
35
35
|
spec.add_development_dependency 'rspec', '>=3.4'
|
|
36
36
|
spec.add_development_dependency 'simplecov'
|
data/coverage/.last_run.json
CHANGED
data/lib/checkoff/cli.rb
CHANGED
|
@@ -15,11 +15,13 @@ module Checkoff
|
|
|
15
15
|
class CLI
|
|
16
16
|
attr_reader :sections, :stderr
|
|
17
17
|
|
|
18
|
-
def initialize(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
def initialize(config: Checkoff::ConfigLoader.load(:asana),
|
|
19
|
+
workspaces: Checkoff::Workspaces.new(config: config),
|
|
20
|
+
projects: Checkoff::Projects.new(config: config),
|
|
21
|
+
sections: Checkoff::Sections.new(config: config,
|
|
22
|
+
projects: projects),
|
|
23
|
+
tasks: Checkoff::Tasks.new(config: config),
|
|
24
|
+
stderr: $stderr,
|
|
23
25
|
kernel: Kernel)
|
|
24
26
|
@workspaces = workspaces
|
|
25
27
|
@projects = projects
|
|
@@ -87,9 +89,10 @@ module Checkoff
|
|
|
87
89
|
def parse_args(args)
|
|
88
90
|
mode = args[0]
|
|
89
91
|
subargs = OpenStruct.new
|
|
90
|
-
|
|
92
|
+
case mode
|
|
93
|
+
when 'view'
|
|
91
94
|
parse_view_args(subargs, args)
|
|
92
|
-
|
|
95
|
+
when 'quickadd'
|
|
93
96
|
parse_quickadd_args(subargs, args)
|
|
94
97
|
else
|
|
95
98
|
raise
|
|
@@ -118,9 +121,10 @@ module Checkoff
|
|
|
118
121
|
def run(args)
|
|
119
122
|
validate_args!(args)
|
|
120
123
|
command, subargs = parse_args(args)
|
|
121
|
-
|
|
124
|
+
case command
|
|
125
|
+
when 'view'
|
|
122
126
|
view(subargs.workspace, subargs.project, subargs.section)
|
|
123
|
-
|
|
127
|
+
when 'quickadd'
|
|
124
128
|
quickadd(subargs.workspace, subargs.task_name)
|
|
125
129
|
else
|
|
126
130
|
raise
|
data/lib/checkoff/projects.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative 'config_loader'
|
|
2
4
|
|
|
3
|
-
# frozen_string_literal: true
|
|
4
5
|
require 'cache_method'
|
|
5
6
|
require 'asana'
|
|
6
7
|
|
|
@@ -25,7 +26,7 @@ module Checkoff
|
|
|
25
26
|
|
|
26
27
|
def initialize(config: Checkoff::ConfigLoader.load(:asana),
|
|
27
28
|
asana_client: Asana::Client,
|
|
28
|
-
workspaces: Checkoff::Workspaces.new)
|
|
29
|
+
workspaces: Checkoff::Workspaces.new(config: config))
|
|
29
30
|
@config = config
|
|
30
31
|
@asana_client = asana_client
|
|
31
32
|
@workspaces = workspaces
|
|
@@ -50,9 +51,7 @@ module Checkoff
|
|
|
50
51
|
def my_tasks(workspace_name)
|
|
51
52
|
my_tasks = @config[:my_tasks]
|
|
52
53
|
gid = @config[:my_tasks][workspace_name] unless my_tasks.nil?
|
|
53
|
-
if my_tasks.nil? || gid.nil?
|
|
54
|
-
raise "Please define [:my_tasks][#{workspace_name}] in config file"
|
|
55
|
-
end
|
|
54
|
+
raise "Please define [:my_tasks][#{workspace_name}] in config file" if my_tasks.nil? || gid.nil?
|
|
56
55
|
|
|
57
56
|
projects.find_by_id(gid)
|
|
58
57
|
end
|
|
@@ -78,7 +77,7 @@ module Checkoff
|
|
|
78
77
|
per_page: 100,
|
|
79
78
|
options: {
|
|
80
79
|
fields: %w[name completed_at due_at due_on assignee_status tags
|
|
81
|
-
memberships.project.gid memberships.section.name],
|
|
80
|
+
memberships.project.gid memberships.section.name dependencies],
|
|
82
81
|
},
|
|
83
82
|
}
|
|
84
83
|
end
|
data/lib/checkoff/sections.rb
CHANGED
|
@@ -13,7 +13,8 @@ module Checkoff
|
|
|
13
13
|
|
|
14
14
|
attr_reader :projects, :time
|
|
15
15
|
|
|
16
|
-
def initialize(
|
|
16
|
+
def initialize(config: Checkoff::ConfigLoader.load(:asana),
|
|
17
|
+
projects: Checkoff::Projects.new(config: config),
|
|
17
18
|
time: Time)
|
|
18
19
|
@projects = projects
|
|
19
20
|
@time = time
|
|
@@ -22,12 +23,11 @@ module Checkoff
|
|
|
22
23
|
def_delegators :@projects, :client
|
|
23
24
|
|
|
24
25
|
def file_task_by_section(by_section, task, project_gid)
|
|
25
|
-
membership = task.memberships.find { |m| m
|
|
26
|
-
if membership.nil?
|
|
27
|
-
raise "Could not find task in project_gid #{project_gid}: #{task}"
|
|
28
|
-
end
|
|
26
|
+
membership = task.memberships.find { |m| m['project']['gid'] == project_gid }
|
|
27
|
+
raise "Could not find task in project_gid #{project_gid}: #{task}" if membership.nil?
|
|
29
28
|
|
|
30
|
-
current_section = membership
|
|
29
|
+
current_section = membership['section']['name']
|
|
30
|
+
current_section = nil if current_section == '(no section)'
|
|
31
31
|
by_section[current_section] ||= []
|
|
32
32
|
by_section[current_section] << task
|
|
33
33
|
end
|
|
@@ -89,11 +89,12 @@ module Checkoff
|
|
|
89
89
|
|
|
90
90
|
def tasks_by_section(workspace_name, project_name)
|
|
91
91
|
project = project_or_raise(workspace_name, project_name)
|
|
92
|
-
|
|
92
|
+
case project_name
|
|
93
|
+
when :my_tasks_new
|
|
93
94
|
tasks_by_section_for_project_and_assignee_status(project, 'inbox')
|
|
94
|
-
|
|
95
|
+
when :my_tasks_today
|
|
95
96
|
tasks_by_section_for_project_and_assignee_status(project, 'today')
|
|
96
|
-
|
|
97
|
+
when :my_tasks_upcoming
|
|
97
98
|
tasks_by_section_for_project_and_assignee_status(project, 'upcoming')
|
|
98
99
|
else
|
|
99
100
|
tasks_by_section_for_project(project)
|
data/lib/checkoff/tasks.rb
CHANGED
|
@@ -15,7 +15,7 @@ module Checkoff
|
|
|
15
15
|
SHORT_CACHE_TIME = MINUTE * 5
|
|
16
16
|
|
|
17
17
|
def initialize(config: Checkoff::ConfigLoader.load(:asana),
|
|
18
|
-
sections: Checkoff::Sections.new,
|
|
18
|
+
sections: Checkoff::Sections.new(config: config),
|
|
19
19
|
asana_task: Asana::Resources::Task)
|
|
20
20
|
@config = config
|
|
21
21
|
@sections = sections
|
data/lib/checkoff/version.rb
CHANGED
data/lib/tasks/quality.rake
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
require 'quality/rake/task'
|
|
4
4
|
|
|
5
5
|
Quality::Rake::Task.new do |task|
|
|
6
|
-
task.skip_tools = [
|
|
6
|
+
task.skip_tools = %w[reek cane eslint jscs pycodestyle rails_best_practices flake8]
|
|
7
7
|
task.output_dir = 'metrics'
|
|
8
|
-
task.exclude_files = ['docs/example_project.png']
|
|
8
|
+
task.exclude_files = ['docs/example_project.png', '.rubocop.yml']
|
|
9
9
|
end
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
414
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4
|
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.6.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:
|
|
11
|
+
date: 2021-01-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -28,16 +28,16 @@ dependencies:
|
|
|
28
28
|
name: asana
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - ">"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 0.10.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - ">"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 0.10.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: cache_method
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -114,14 +114,14 @@ dependencies:
|
|
|
114
114
|
requirements:
|
|
115
115
|
- - "~>"
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
117
|
+
version: '38'
|
|
118
118
|
type: :development
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
122
|
- - "~>"
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '
|
|
124
|
+
version: '38'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: rake
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -235,7 +235,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
235
235
|
requirements:
|
|
236
236
|
- - ">="
|
|
237
237
|
- !ruby/object:Gem::Version
|
|
238
|
-
version: '
|
|
238
|
+
version: '2.5'
|
|
239
239
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
240
240
|
requirements:
|
|
241
241
|
- - ">="
|