checkoff 0.223.0 → 0.226.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/checkoff.gemspec +10 -5
- data/lib/checkoff/attachments.rb +1 -1
- data/lib/checkoff/cli.rb +1 -1
- data/lib/checkoff/clients.rb +1 -1
- data/lib/checkoff/custom_fields.rb +1 -1
- data/lib/checkoff/events.rb +1 -1
- data/lib/checkoff/internal/config_loader.rb +2 -3
- data/lib/checkoff/internal/selector_classes/section/function_evaluator.rb +3 -2
- data/lib/checkoff/my_tasks.rb +1 -1
- data/lib/checkoff/portfolios.rb +11 -9
- data/lib/checkoff/projects.rb +1 -1
- data/lib/checkoff/sections.rb +4 -5
- data/lib/checkoff/tags.rb +66 -17
- data/lib/checkoff/tasks.rb +1 -1
- data/lib/checkoff/version.rb +1 -1
- data/lib/checkoff/workspaces.rb +1 -1
- data/rbi/checkoff.rbi +4529 -0
- data/sig/checkoff.rbs +3749 -0
- metadata +5 -211
- data/.circleci/config.yml +0 -291
- data/.envrc +0 -9
- data/.git-hooks/pre_commit/circle_ci.rb +0 -26
- data/.git-hooks/pre_commit/punchlist.rb +0 -52
- data/.git-hooks/pre_commit/solargraph_typecheck.rb +0 -77
- data/.gitattributes +0 -6
- data/.gitignore +0 -65
- data/.markdownlint_style.rb +0 -4
- data/.mdlrc +0 -1
- data/.overcommit.yml +0 -115
- data/.rubocop.yml +0 -143
- data/.rubocop_todo.yml +0 -90
- data/.solargraph.yml +0 -35
- data/.yamllint.yml +0 -8
- data/.yardopts +0 -2
- data/CODE_OF_CONDUCT.md +0 -133
- data/CONTRIBUTING.rst +0 -75
- data/DEVELOPMENT.md +0 -69
- data/GLOSSARY.md +0 -16
- data/Gemfile +0 -67
- data/Gemfile.lock +0 -351
- data/LICENSE +0 -21
- data/Makefile +0 -139
- data/bin/brakeman +0 -27
- data/bin/bump +0 -29
- data/bin/checkoff +0 -29
- data/bin/console +0 -15
- data/bin/overcommit +0 -29
- data/bin/overcommit_branch +0 -114
- data/bin/rake +0 -29
- data/bin/rubocop +0 -27
- data/bin/setup +0 -8
- data/bin/solargraph +0 -27
- data/bin/sord +0 -27
- data/bin/spoom +0 -27
- data/bin/srb +0 -27
- data/bin/srb-rbi +0 -27
- data/bin/tapioca +0 -27
- data/bin/yard +0 -27
- data/config/annotations_asana.rb +0 -253
- data/config/annotations_misc.rb +0 -68
- data/config/env.1p +0 -2
- data/docs/.gitignore +0 -3
- data/docs/cookiecutter_input.json +0 -17
- data/docs/example_project.png +0 -0
- data/fix.sh +0 -534
- data/metrics/bigfiles_high_water_mark +0 -1
- data/metrics/brakeman_high_water_mark +0 -1
- data/metrics/bundle-audit_high_water_mark +0 -1
- data/metrics/cane_high_water_mark +0 -1
- data/metrics/eslint_high_water_mark +0 -1
- data/metrics/flake8_high_water_mark +0 -1
- data/metrics/flay_high_water_mark +0 -1
- data/metrics/flog_high_water_mark +0 -1
- data/metrics/jscs_high_water_mark +0 -1
- data/metrics/mdl_high_water_mark +0 -1
- data/metrics/pep8_high_water_mark +0 -1
- data/metrics/punchlist_high_water_mark +0 -1
- data/metrics/pycodestyle_high_water_mark +0 -1
- data/metrics/rails_best_practices_high_water_mark +0 -1
- data/metrics/rubocop_high_water_mark +0 -1
- data/metrics/scalastyle_high_water_mark +0 -1
- data/metrics/shellcheck_high_water_mark +0 -1
- data/package.json +0 -9
- data/rakelib/citest.rake +0 -4
- data/rakelib/clear_metrics.rake +0 -9
- data/rakelib/console.rake +0 -15
- data/rakelib/default.rake +0 -4
- data/rakelib/doc.rake +0 -6
- data/rakelib/gem_tasks.rake +0 -3
- data/rakelib/localtest.rake +0 -4
- data/rakelib/overcommit.rake +0 -6
- data/rakelib/quality.rake +0 -4
- data/rakelib/repl.rake +0 -4
- data/rakelib/test.rake +0 -10
- data/rakelib/trigger_next_builds.rake +0 -7
- data/rakelib/undercover.rake +0 -8
- data/requirements_dev.txt +0 -2
- data/sorbet/config +0 -4
- data/sorbet/rbi/annotations/.gitattributes +0 -1
- data/sorbet/rbi/annotations/activesupport.rbi +0 -453
- data/sorbet/rbi/annotations/faraday.rbi +0 -17
- data/sorbet/rbi/annotations/minitest.rbi +0 -119
- data/sorbet/rbi/annotations/mocha.rbi +0 -34
- data/sorbet/rbi/annotations/rainbow.rbi +0 -269
- data/sorbet/rbi/annotations/webmock.rbi +0 -9
- data/sorbet/rbi/dsl/.gitattributes +0 -1
- data/sorbet/rbi/dsl/active_support/callbacks.rbi +0 -23
- data/sorbet/rbi/gems/.gitattributes +0 -1
- data/sorbet/rbi/gems/activesupport@7.1.5.rbi +0 -18746
- data/sorbet/rbi/gems/addressable@2.8.6.rbi +0 -1994
- data/sorbet/rbi/gems/ansi@1.5.0.rbi +0 -688
- data/sorbet/rbi/gems/asana@0.10.6-ab9393136d9ca59b75e42a661fdddc1c65c8f7c3.rbi +0 -6142
- data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -585
- data/sorbet/rbi/gems/backport@1.2.0.rbi +0 -523
- data/sorbet/rbi/gems/base64@0.2.0.rbi +0 -509
- data/sorbet/rbi/gems/benchmark@0.4.0.rbi +0 -618
- data/sorbet/rbi/gems/bigdecimal@3.1.5.rbi +0 -78
- data/sorbet/rbi/gems/brakeman@6.2.2.rbi +0 -222
- data/sorbet/rbi/gems/builder@3.2.4.rbi +0 -505
- data/sorbet/rbi/gems/bump@0.10.0.rbi +0 -169
- data/sorbet/rbi/gems/cache@0.4.1.rbi +0 -211
- data/sorbet/rbi/gems/cache_method@0.2.7.rbi +0 -293
- data/sorbet/rbi/gems/chef-utils@18.3.0.rbi +0 -9
- data/sorbet/rbi/gems/childprocess@5.1.0.rbi +0 -383
- data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -3427
- data/sorbet/rbi/gems/commander@4.6.0.rbi +0 -9
- data/sorbet/rbi/gems/concurrent-ruby@1.2.3.rbi +0 -11591
- data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +0 -9
- data/sorbet/rbi/gems/crack@0.4.5.rbi +0 -145
- data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +0 -969
- data/sorbet/rbi/gems/docile@1.4.0.rbi +0 -377
- data/sorbet/rbi/gems/drb@2.2.1.rbi +0 -1347
- data/sorbet/rbi/gems/e2mmap@0.1.0.rbi +0 -9
- data/sorbet/rbi/gems/erubi@1.13.0.rbi +0 -152
- data/sorbet/rbi/gems/faraday-em_http@1.0.0.rbi +0 -222
- data/sorbet/rbi/gems/faraday-em_synchrony@1.0.0.rbi +0 -126
- data/sorbet/rbi/gems/faraday-excon@1.1.0.rbi +0 -136
- data/sorbet/rbi/gems/faraday-httpclient@1.0.1.rbi +0 -145
- data/sorbet/rbi/gems/faraday-multipart@1.0.4.rbi +0 -259
- data/sorbet/rbi/gems/faraday-net_http@1.0.1.rbi +0 -142
- data/sorbet/rbi/gems/faraday-net_http_persistent@1.2.0.rbi +0 -118
- data/sorbet/rbi/gems/faraday-patron@1.0.0.rbi +0 -125
- data/sorbet/rbi/gems/faraday-rack@1.0.0.rbi +0 -133
- data/sorbet/rbi/gems/faraday-retry@1.0.3.rbi +0 -198
- data/sorbet/rbi/gems/faraday@1.10.3.rbi +0 -2729
- data/sorbet/rbi/gems/faraday_middleware-multi_json@0.0.6.rbi +0 -29
- data/sorbet/rbi/gems/faraday_middleware@1.2.0.rbi +0 -1004
- data/sorbet/rbi/gems/gli@2.22.0.rbi +0 -9
- data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +0 -351
- data/sorbet/rbi/gems/highline@2.0.3.rbi +0 -9
- data/sorbet/rbi/gems/i18n@1.14.6.rbi +0 -2359
- data/sorbet/rbi/gems/imagen@0.1.8.rbi +0 -340
- data/sorbet/rbi/gems/iniparse@1.5.0.rbi +0 -899
- data/sorbet/rbi/gems/jaro_winkler@1.6.0.rbi +0 -22
- data/sorbet/rbi/gems/json@2.7.1.rbi +0 -1562
- data/sorbet/rbi/gems/jwt@2.7.1.rbi +0 -1405
- data/sorbet/rbi/gems/kramdown-parser-gfm@1.1.0.rbi +0 -128
- data/sorbet/rbi/gems/kramdown@2.4.0.rbi +0 -3272
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +0 -14238
- data/sorbet/rbi/gems/logger@1.6.2.rbi +0 -923
- data/sorbet/rbi/gems/mdl@0.13.0.rbi +0 -445
- data/sorbet/rbi/gems/method_source@1.0.0.rbi +0 -273
- data/sorbet/rbi/gems/mime-types-data@3.2023.1205.rbi +0 -127
- data/sorbet/rbi/gems/mime-types@3.5.1.rbi +0 -1252
- data/sorbet/rbi/gems/minitest-profile@0.0.2.rbi +0 -136
- data/sorbet/rbi/gems/minitest-reporters@1.6.1.rbi +0 -1014
- data/sorbet/rbi/gems/minitest@5.21.1.rbi +0 -1539
- data/sorbet/rbi/gems/mixlib-cli@2.1.8.rbi +0 -314
- data/sorbet/rbi/gems/mixlib-config@3.0.27.rbi +0 -581
- data/sorbet/rbi/gems/mixlib-shellout@3.2.7.rbi +0 -629
- data/sorbet/rbi/gems/mocha@2.1.0.rbi +0 -12
- data/sorbet/rbi/gems/multi_json@1.15.0.rbi +0 -268
- data/sorbet/rbi/gems/multi_xml@0.6.0.rbi +0 -102
- data/sorbet/rbi/gems/multipart-post@2.3.0.rbi +0 -234
- data/sorbet/rbi/gems/mutex_m@0.3.0.rbi +0 -97
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +0 -159
- data/sorbet/rbi/gems/nokogiri@1.17.0.rbi +0 -8201
- data/sorbet/rbi/gems/oauth2@1.4.11.rbi +0 -833
- data/sorbet/rbi/gems/overcommit@0.64.1.rbi +0 -2400
- data/sorbet/rbi/gems/parallel@1.23.0.rbi +0 -274
- data/sorbet/rbi/gems/parlour@5.0.0.rbi +0 -3007
- data/sorbet/rbi/gems/parser@3.2.2.4.rbi +0 -7253
- data/sorbet/rbi/gems/prism@1.2.0.rbi +0 -39085
- data/sorbet/rbi/gems/pry@0.14.2.rbi +0 -10070
- data/sorbet/rbi/gems/public_suffix@5.0.4.rbi +0 -936
- data/sorbet/rbi/gems/punchlist@1.3.2.rbi +0 -173
- data/sorbet/rbi/gems/racc@1.8.1.rbi +0 -162
- data/sorbet/rbi/gems/rack@3.1.8.rbi +0 -4896
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +0 -403
- data/sorbet/rbi/gems/rake@13.1.0.rbi +0 -3022
- data/sorbet/rbi/gems/rbi@0.2.1.rbi +0 -4535
- data/sorbet/rbi/gems/rbs@2.8.4.rbi +0 -5613
- data/sorbet/rbi/gems/regexp_parser@2.8.3.rbi +0 -3750
- data/sorbet/rbi/gems/reverse_markdown@2.1.1.rbi +0 -390
- data/sorbet/rbi/gems/rexml@3.3.9.rbi +0 -4964
- data/sorbet/rbi/gems/rubocop-ast@1.30.0.rbi +0 -7127
- data/sorbet/rbi/gems/rubocop-minitest@0.34.5.rbi +0 -2577
- data/sorbet/rbi/gems/rubocop-performance@1.20.2.rbi +0 -3262
- data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +0 -329
- data/sorbet/rbi/gems/rubocop-rspec@3.0.0.rbi +0 -7546
- data/sorbet/rbi/gems/rubocop@1.59.0.rbi +0 -57238
- data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +0 -1318
- data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +0 -9
- data/sorbet/rbi/gems/rugged@1.6.3.rbi +0 -1577
- data/sorbet/rbi/gems/securerandom@0.4.0.rbi +0 -75
- data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +0 -217
- data/sorbet/rbi/gems/simplecov-lcov@0.8.0.rbi +0 -256
- data/sorbet/rbi/gems/simplecov@0.22.0.rbi +0 -2149
- data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +0 -9
- data/sorbet/rbi/gems/solargraph-rails@1.1.0-9dc37915bd4f3b169046e34db6fb32193ab347d8.rbi +0 -320
- data/sorbet/rbi/gems/solargraph@0.50.1-904b9304770a59fac393c5cc3cad481e5bdf0fd8.rbi +0 -9396
- data/sorbet/rbi/gems/sord@5.1.0.rbi +0 -820
- data/sorbet/rbi/gems/source_finder@3.2.1.rbi +0 -317
- data/sorbet/rbi/gems/spoom@1.5.0.rbi +0 -4932
- data/sorbet/rbi/gems/tapioca@0.16.5.rbi +0 -3617
- data/sorbet/rbi/gems/thor@1.3.2.rbi +0 -4378
- data/sorbet/rbi/gems/tilt@2.4.0.rbi +0 -933
- data/sorbet/rbi/gems/tomlrb@2.0.3.rbi +0 -9
- data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +0 -5918
- data/sorbet/rbi/gems/undercover@0.5.0.rbi +0 -433
- data/sorbet/rbi/gems/unicode-display_width@2.5.0.rbi +0 -66
- data/sorbet/rbi/gems/webmock@3.19.1.rbi +0 -1769
- data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +0 -435
- data/sorbet/rbi/gems/yard@0.9.37.rbi +0 -18406
- data/sorbet/rbi/todo.rbi +0 -11
- data/sorbet/tapioca/config.yml +0 -13
- data/sorbet/tapioca/require.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92a9e8e8ca22cbfa31d1d4b02c941c20826db8e3e831f626f96500a12bc306a3
|
4
|
+
data.tar.gz: be53367a968bbf2d4ca1b6b18aada517c7254765d35f9ca8b6f9b6058445eb85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbbf49ded9ca35770835d23ef89488fafff69e4500e91b2fa688b2b450df50178b827c50d2144e52fa58485bf71dde8762a014b1c3edee324b0d0600c613a828
|
7
|
+
data.tar.gz: bdc7f6e728ed13bdf96e9ab43448c8f201e5d42421f1d2141ba24c274667a22018b4e73dd145d267822ca7201767fe7fb78846bc35c7ba372147e6be9d66b0de
|
data/checkoff.gemspec
CHANGED
@@ -15,11 +15,16 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.license = 'MIT license'
|
16
16
|
spec.required_ruby_version = '>= 3.0'
|
17
17
|
|
18
|
-
spec.files
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
spec.files = Dir['README.md',
|
19
|
+
'Rakefile',
|
20
|
+
'lib/checkoff.rb',
|
21
|
+
'{lib}/**/*',
|
22
|
+
'sig/**/*.rbs',
|
23
|
+
'sig/*.rbs',
|
24
|
+
'rbi/**/*.rbi',
|
25
|
+
'rbi/*.rbi',
|
26
|
+
'{exe}/*',
|
27
|
+
'checkoff.gemspec']
|
23
28
|
spec.bindir = 'exe'
|
24
29
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
30
|
spec.require_paths = ['lib']
|
data/lib/checkoff/attachments.rb
CHANGED
@@ -165,7 +165,7 @@ module Checkoff
|
|
165
165
|
end
|
166
166
|
|
167
167
|
# https://github.com/Asana/ruby-asana/blob/master/lib/asana/resource_includes/response_helper.rb#L7
|
168
|
-
# @param response [
|
168
|
+
# @param response [Asana::HttpClient::Response]
|
169
169
|
#
|
170
170
|
# @return [Array<Hash, Hash>]
|
171
171
|
def parse(response)
|
data/lib/checkoff/cli.rb
CHANGED
data/lib/checkoff/clients.rb
CHANGED
@@ -19,7 +19,7 @@ module Checkoff
|
|
19
19
|
LONG_CACHE_TIME = MINUTE * 15
|
20
20
|
SHORT_CACHE_TIME = MINUTE
|
21
21
|
|
22
|
-
# @param config [
|
22
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
23
23
|
# @param asana_client_class [Class<Asana::Client>]
|
24
24
|
def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
|
25
25
|
asana_client_class: Asana::Client)
|
@@ -24,7 +24,7 @@ module Checkoff
|
|
24
24
|
LONG_CACHE_TIME = MINUTE * 15
|
25
25
|
SHORT_CACHE_TIME = MINUTE
|
26
26
|
|
27
|
-
# @param config [
|
27
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
28
28
|
# @param workspaces [Checkoff::Workspaces]
|
29
29
|
# @param clients [Checkoff::Clients]
|
30
30
|
# @param client [Asana::Client]
|
data/lib/checkoff/events.rb
CHANGED
@@ -33,7 +33,7 @@ module Checkoff
|
|
33
33
|
SHORT_CACHE_TIME = MINUTE
|
34
34
|
private_constant :SHORT_CACHE_TIME
|
35
35
|
|
36
|
-
# @param config [
|
36
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
37
37
|
# @param workspaces [Checkoff::Workspaces]
|
38
38
|
# @param tasks [Checkoff::Tasks]
|
39
39
|
# @param sections [Checkoff::Sections]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: true
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require 'yaml'
|
@@ -50,8 +50,7 @@ module Checkoff
|
|
50
50
|
# Load configuration file
|
51
51
|
class ConfigLoader
|
52
52
|
class << self
|
53
|
-
# @
|
54
|
-
# @return [Hash<Symbol, Object>]
|
53
|
+
# @return [EnvFallbackConfigLoader]
|
55
54
|
def load(sym)
|
56
55
|
yaml_result = load_yaml_file(sym)
|
57
56
|
EnvFallbackConfigLoader.new(yaml_result, sym, yaml_filename(sym))
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: true
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require_relative '../function_evaluator'
|
@@ -11,10 +11,11 @@ module Checkoff
|
|
11
11
|
# @param selector [Array<(Symbol, Array)>,String]
|
12
12
|
# @param client [Asana::Client]
|
13
13
|
# @param sections [Checkoff::Sections]
|
14
|
+
# @param kwargs [Hash]
|
14
15
|
def initialize(selector:,
|
15
16
|
sections:,
|
16
17
|
client:,
|
17
|
-
**)
|
18
|
+
**kwargs)
|
18
19
|
@selector = selector
|
19
20
|
@sections = sections
|
20
21
|
@client = client
|
data/lib/checkoff/my_tasks.rb
CHANGED
@@ -16,7 +16,7 @@ module Checkoff
|
|
16
16
|
# @return [Checkoff::Projects]
|
17
17
|
attr_reader :projects
|
18
18
|
|
19
|
-
# @param config [
|
19
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
20
20
|
# @param client [Asana::Client]
|
21
21
|
# @param projects [Checkoff::Projects]
|
22
22
|
def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
|
data/lib/checkoff/portfolios.rb
CHANGED
@@ -9,23 +9,25 @@ require_relative 'internal/config_loader'
|
|
9
9
|
require_relative 'workspaces'
|
10
10
|
require_relative 'clients'
|
11
11
|
require_relative 'projects'
|
12
|
+
require 'sorbet-runtime'
|
12
13
|
|
13
14
|
# https://developers.asana.com/reference/portfolios
|
14
15
|
|
15
16
|
module Checkoff
|
16
17
|
# Pull portfolios from Asana
|
17
18
|
class Portfolios
|
19
|
+
extend T::Sig
|
18
20
|
# @!parse
|
19
21
|
# extend CacheMethod::ClassMethods
|
20
22
|
|
21
23
|
MINUTE = 60
|
22
|
-
HOUR = MINUTE * 60
|
23
|
-
DAY = 24 * HOUR
|
24
|
-
REALLY_LONG_CACHE_TIME = HOUR * 1
|
25
|
-
LONG_CACHE_TIME = MINUTE * 15
|
26
|
-
SHORT_CACHE_TIME = MINUTE
|
24
|
+
HOUR = T.let(MINUTE * 60, Numeric)
|
25
|
+
DAY = T.let(24 * HOUR, Numeric)
|
26
|
+
REALLY_LONG_CACHE_TIME = T.let(HOUR * 1, Numeric)
|
27
|
+
LONG_CACHE_TIME = T.let(MINUTE * 15, Numeric)
|
28
|
+
SHORT_CACHE_TIME = T.let(MINUTE, Numeric)
|
27
29
|
|
28
|
-
# @param config [
|
30
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
29
31
|
# @param workspaces [Checkoff::Workspaces]
|
30
32
|
# @param clients [Checkoff::Clients]
|
31
33
|
# @param client [Asana::Client]
|
@@ -35,9 +37,9 @@ module Checkoff
|
|
35
37
|
client: clients.client,
|
36
38
|
projects: Checkoff::Projects.new(config: config, client: client),
|
37
39
|
workspaces: Checkoff::Workspaces.new(config: config, client: client))
|
38
|
-
@workspaces = workspaces
|
39
|
-
@client = client
|
40
|
-
@projects = projects
|
40
|
+
@workspaces = T.let(workspaces, Checkoff::Workspaces)
|
41
|
+
@client = T.let(client, Asana::Client)
|
42
|
+
@projects = T.let(projects, Checkoff::Projects)
|
41
43
|
end
|
42
44
|
|
43
45
|
# @param workspace_name [String]
|
data/lib/checkoff/projects.rb
CHANGED
@@ -33,7 +33,7 @@ module Checkoff
|
|
33
33
|
# @!parse
|
34
34
|
# extend CacheMethod::ClassMethods
|
35
35
|
|
36
|
-
# @param config [
|
36
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
37
37
|
# @param client [Asana::Client]
|
38
38
|
# @param workspaces [Checkoff::Workspaces]
|
39
39
|
# @param project_hashes [Checkoff::Internal::ProjectHashes]
|
data/lib/checkoff/sections.rb
CHANGED
@@ -34,7 +34,7 @@ module Checkoff
|
|
34
34
|
# @return [Checkoff::MyTasks]
|
35
35
|
attr_reader :my_tasks
|
36
36
|
|
37
|
-
# @param config [
|
37
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
38
38
|
# @param client [Asana::Client]
|
39
39
|
# @param projects [Checkoff::Projects]
|
40
40
|
# @param workspaces [Checkoff::Workspaces]
|
@@ -48,7 +48,8 @@ module Checkoff
|
|
48
48
|
time: Time)
|
49
49
|
@projects = projects
|
50
50
|
@workspaces = workspaces
|
51
|
-
@my_tasks = Checkoff::MyTasks
|
51
|
+
@my_tasks = Checkoff::MyTasks
|
52
|
+
.new(config: config, projects: projects, client: client)
|
52
53
|
@client = client
|
53
54
|
@time = time
|
54
55
|
end
|
@@ -112,8 +113,6 @@ module Checkoff
|
|
112
113
|
client.tasks.get_tasks(section: section_gid, **options)
|
113
114
|
end
|
114
115
|
|
115
|
-
# XXX: Rename to section_tasks
|
116
|
-
#
|
117
116
|
# Pulls task objects from a specified section
|
118
117
|
#
|
119
118
|
# @param workspace_name [String]
|
@@ -231,7 +230,7 @@ module Checkoff
|
|
231
230
|
include Logging
|
232
231
|
|
233
232
|
# https://github.com/Asana/ruby-asana/blob/master/lib/asana/resource_includes/response_helper.rb#L7
|
234
|
-
# @param response [
|
233
|
+
# @param response [Asana::HttpClient::Response]
|
235
234
|
#
|
236
235
|
# @return [Array<Hash, Hash>]
|
237
236
|
def parse(response)
|
data/lib/checkoff/tags.rb
CHANGED
@@ -14,50 +14,81 @@ require_relative 'clients'
|
|
14
14
|
module Checkoff
|
15
15
|
# Work with tags in Asana
|
16
16
|
class Tags
|
17
|
-
|
18
|
-
|
19
|
-
DAY = 24 * HOUR
|
20
|
-
REALLY_LONG_CACHE_TIME = HOUR * 1
|
21
|
-
LONG_CACHE_TIME = MINUTE * 15
|
22
|
-
SHORT_CACHE_TIME = MINUTE
|
17
|
+
# @!parse
|
18
|
+
# extend CacheMethod::ClassMethods
|
23
19
|
|
20
|
+
MINUTE = 60
|
21
|
+
HOUR = T.let(MINUTE * 60, Numeric)
|
22
|
+
DAY = T.let(24 * HOUR, Numeric)
|
23
|
+
REALLY_LONG_CACHE_TIME = T.let(HOUR * 1, Numeric)
|
24
|
+
LONG_CACHE_TIME = T.let(MINUTE * 15, Numeric)
|
25
|
+
SHORT_CACHE_TIME = T.let(MINUTE, Numeric)
|
26
|
+
|
27
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
28
|
+
# @param clients [Checkoff::Clients]
|
29
|
+
# @param client [Asana::Client]
|
30
|
+
# @param projects [Checkoff::Projects]
|
31
|
+
# @param workspaces [Checkoff::Workspaces]
|
24
32
|
def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
|
25
33
|
clients: Checkoff::Clients.new(config: config),
|
26
34
|
client: clients.client,
|
27
35
|
projects: Checkoff::Projects.new(config: config, client: client),
|
28
36
|
workspaces: Checkoff::Workspaces.new(config: config, client: client))
|
29
|
-
@workspaces = workspaces
|
30
|
-
@projects = projects
|
31
|
-
@client = client
|
37
|
+
@workspaces = T.let(workspaces, Checkoff::Workspaces)
|
38
|
+
@projects = T.let(projects, Checkoff::Projects)
|
39
|
+
@client = T.let(client, Asana::Client)
|
32
40
|
end
|
33
41
|
|
42
|
+
# @param workspace_name [String]
|
43
|
+
# @param tag_name [String]
|
44
|
+
# @param only_uncompleted [Boolean]
|
45
|
+
# @param extra_fields [Array<String>]
|
46
|
+
#
|
34
47
|
# @return [Enumerable<Asana::Resources::Task>]
|
35
48
|
def tasks(workspace_name, tag_name,
|
36
49
|
only_uncompleted: true,
|
37
50
|
extra_fields: [])
|
38
51
|
tag = tag_or_raise(workspace_name, tag_name)
|
52
|
+
tag_gid = tag.gid
|
39
53
|
|
54
|
+
tasks_by_tag_gid(workspace_name, tag_gid,
|
55
|
+
only_uncompleted: only_uncompleted, extra_fields: extra_fields)
|
56
|
+
end
|
57
|
+
|
58
|
+
# @param workspace_name [String]
|
59
|
+
# @param tag_gid [String]
|
60
|
+
# @param only_uncompleted [Boolean]
|
61
|
+
# @param extra_fields [Array<String>]
|
62
|
+
#
|
63
|
+
# @return [Enumerable<Asana::Resources::Task>]
|
64
|
+
def tasks_by_tag_gid(workspace_name, tag_gid, only_uncompleted: true, extra_fields: [])
|
40
65
|
options = projects.task_options(extra_fields: extra_fields,
|
41
66
|
only_uncompleted: only_uncompleted)
|
42
|
-
|
43
67
|
params = build_params(options)
|
44
|
-
|
45
|
-
Asana::Resources::Collection.new(parse(client.get("/tags/#{tag.gid}/tasks",
|
68
|
+
Asana::Resources::Collection.new(parse(client.get("/tags/#{tag_gid}/tasks",
|
46
69
|
params: params, options: options[:options])),
|
47
70
|
type: Asana::Resources::Task,
|
48
71
|
client: client)
|
49
72
|
end
|
50
73
|
|
74
|
+
# @param workspace_name [String]
|
75
|
+
# @param tag_name [String]
|
76
|
+
#
|
51
77
|
# @return [Asana::Resources::Tag]
|
52
78
|
def tag_or_raise(workspace_name, tag_name)
|
53
|
-
|
54
|
-
raise "Could not find tag #{tag_name} under workspace #{workspace_name}." if tag.nil?
|
79
|
+
t = tag(workspace_name, tag_name)
|
55
80
|
|
56
|
-
tag
|
81
|
+
raise "Could not find tag #{tag_name} under workspace #{workspace_name}." if t.nil?
|
82
|
+
|
83
|
+
t
|
57
84
|
end
|
58
85
|
cache_method :tag_or_raise, LONG_CACHE_TIME
|
59
86
|
|
87
|
+
# @param workspace_name [String]
|
88
|
+
# @param tag_name [String]
|
89
|
+
#
|
60
90
|
# @return [Asana::Resources::Tag,nil]
|
91
|
+
# @sg-ignore
|
61
92
|
def tag(workspace_name, tag_name)
|
62
93
|
workspace = workspaces.workspace_or_raise(workspace_name)
|
63
94
|
tags = client.tags.get_tags_for_workspace(workspace_gid: workspace.gid)
|
@@ -67,8 +98,17 @@ module Checkoff
|
|
67
98
|
|
68
99
|
private
|
69
100
|
|
70
|
-
|
71
|
-
|
101
|
+
# @return [Checkoff::Workspaces]
|
102
|
+
attr_reader :workspaces
|
103
|
+
# @return [Checkoff::Projects]
|
104
|
+
attr_reader :projects
|
105
|
+
# @return [Asana::Client]
|
106
|
+
attr_reader :client
|
107
|
+
|
108
|
+
# @param options [Hash<Symbol, Object>]
|
109
|
+
#
|
110
|
+
# @sg-ignore
|
111
|
+
# @return [Hash<Symbol, Object>]
|
72
112
|
def build_params(options)
|
73
113
|
{ limit: options[:per_page], completed_since: options[:completed_since] }.reject do |_, v|
|
74
114
|
v.nil? || Array(v).empty?
|
@@ -76,6 +116,10 @@ module Checkoff
|
|
76
116
|
end
|
77
117
|
|
78
118
|
# https://github.com/Asana/ruby-asana/blob/master/lib/asana/resource_includes/response_helper.rb#L7
|
119
|
+
#
|
120
|
+
# @param response [Asana::HttpClient::Response]
|
121
|
+
#
|
122
|
+
# @return [Array<Hash, Hash>]
|
79
123
|
def parse(response)
|
80
124
|
data = response.body.fetch('data')
|
81
125
|
extra = response.body.except('data')
|
@@ -85,8 +129,13 @@ module Checkoff
|
|
85
129
|
# bundle exec ./tags.rb
|
86
130
|
# :nocov:
|
87
131
|
class << self
|
132
|
+
# @return [void]
|
88
133
|
def run
|
134
|
+
# @sg-ignore
|
135
|
+
# @type [String]
|
89
136
|
workspace_name = ARGV[0] || raise('Please pass workspace name as first argument')
|
137
|
+
# @sg-ignore
|
138
|
+
# @type [String]
|
90
139
|
tag_name = ARGV[1] || raise('Please pass tag name as second argument')
|
91
140
|
tags = Checkoff::Tags.new
|
92
141
|
tag = tags.tag_or_raise(workspace_name, tag_name)
|
data/lib/checkoff/tasks.rb
CHANGED
@@ -32,7 +32,7 @@ module Checkoff
|
|
32
32
|
LONG_CACHE_TIME = MINUTE * 15
|
33
33
|
SHORT_CACHE_TIME = MINUTE * 5
|
34
34
|
|
35
|
-
# @param config [
|
35
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
36
36
|
# @param client [Asana::Client]
|
37
37
|
# @param workspaces [Checkoff::Workspaces]
|
38
38
|
# @param sections [Checkoff::Sections]
|
data/lib/checkoff/version.rb
CHANGED
data/lib/checkoff/workspaces.rb
CHANGED
@@ -22,7 +22,7 @@ module Checkoff
|
|
22
22
|
# @!parse
|
23
23
|
# extend CacheMethod::ClassMethods
|
24
24
|
|
25
|
-
# @param config [
|
25
|
+
# @param config [Checkoff::Internal::EnvFallbackConfigLoader]
|
26
26
|
# @param client [Asana::Client]
|
27
27
|
# @param asana_workspace [Class<Asana::Resources::Workspace>]
|
28
28
|
def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
|