checkoff 0.237.0 → 0.239.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3721e81c2b0e616139f7377d6cacc03a772f64c33ec479ebcbb5ecd653e2fe22
4
- data.tar.gz: 8695cd726cb363ba564283c5f93cbb931e8f2016bcd6f6f02822cf776b97fc80
3
+ metadata.gz: e177ea313fddc6637c1ab235adc8ed49bea54e2b7354ffcac1581060fc7ff368
4
+ data.tar.gz: 1d2422cf08be7c7f9fe7bda6646668e4b8a9667b479e27b2026686a8f5d9cb5a
5
5
  SHA512:
6
- metadata.gz: 19ab21f6d036a0a3fb78cbdc74553f5b877406b4bd9c4332c10a0638e780ac9ae835f26faa05d73d2d92051a99622e8a86cac8935181265007d41b26f7dad1a3
7
- data.tar.gz: 0de250ef8a7c625631bdf84442cdee2f0b4df5329a56536715e10179661c07788d2eedcde69e489ad3ba1814369a6c41fa089736133af20ee039c62616852af3
6
+ metadata.gz: 8aaaeca047ade43bfea728e9ed9bb282d40a7adebb1fba3603eb9fc4075aced473e7e775a79c3c69cee8e3eccc7e19e774665088c1b058e4a688e0d2f95d60f4
7
+ data.tar.gz: 354e20a3293c6ff74c378117680bef05c588d8a78c37401e93576c817382ee37415540adde4ef524c6cf1751fa3d5edb3e9cd088a05cdf63842cf5185b3848c2
data/checkoff.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.summary = 'Command-line and gem client for Asana (unofficial)'
14
14
  spec.homepage = 'https://github.com/apiology/checkoff'
15
15
  spec.license = 'MIT license'
16
- spec.required_ruby_version = '>= 3.2'
16
+ spec.required_ruby_version = '>= 3.3'
17
17
 
18
18
  spec.files = Dir['README.md',
19
19
  'Rakefile',
@@ -1,19 +1,17 @@
1
- # typed: false
1
+ # typed: true
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'logger'
5
5
 
6
6
  # include this to add ability to log at different levels
7
7
  module Logging
8
- # @sg-ignore
9
8
  # @return [::Logger]
10
9
  def logger
11
10
  # @type [::Logger]
12
- # @sg-ignore
13
- @logger ||= if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger
14
- # @sg-ignore
15
- # @type [::Logger]
16
- Rails.logger
11
+ @logger ||= if Object.const_defined?(:Rails)
12
+ rails = Object.const_get(:Rails)
13
+ rails_logger = rails.respond_to?(:logger) ? rails.logger : nil
14
+ rails_logger || ::Logger.new($stdout, level: log_level)
17
15
  else
18
16
  ::Logger.new($stdout, level: log_level)
19
17
  end
@@ -58,10 +56,10 @@ module Logging
58
56
 
59
57
  private
60
58
 
61
- # @sg-ignore
62
59
  # @return [Symbol]
63
60
  def log_level
64
- # @sg-ignore
65
- ENV.fetch('LOG_LEVEL', 'INFO').downcase.to_sym
61
+ # rubocop:disable Style/RedundantFetchBlock
62
+ ENV.fetch('LOG_LEVEL') { 'INFO' }.downcase.to_sym
63
+ # rubocop:enable Style/RedundantFetchBlock
66
64
  end
67
65
  end
@@ -182,6 +182,18 @@ module Checkoff
182
182
  end
183
183
  end
184
184
 
185
+ # Handle 'approval' search url param
186
+ class Approval < SimpleParam
187
+ # @return [Array<String>]
188
+ def convert
189
+ return %w[resource_subtype approval] if single_value == 'is_approval'
190
+
191
+ return %w[resource_subtype default_task] if single_value == 'is_not_approval'
192
+
193
+ raise "Teach me how to handle #{key} = #{values}"
194
+ end
195
+ end
196
+
185
197
  # Handle 'searched_type' search url param
186
198
  class SearchedType < SimpleParam
187
199
  # @return [Array<String>]
@@ -198,6 +210,8 @@ module Checkoff
198
210
  def convert
199
211
  return [] if single_value == 'anywhere'
200
212
 
213
+ return [] if single_value == 'inAnyOfTheseProjects'
214
+
201
215
  raise "Teach me how to handle #{key} = #{values}"
202
216
  end
203
217
  end
@@ -243,6 +257,7 @@ module Checkoff
243
257
  'subtask' => SimpleParam::Subtask,
244
258
  'sort' => SimpleParam::Sort,
245
259
  'milestone' => SimpleParam::Milestone,
260
+ 'approval' => SimpleParam::Approval,
246
261
  'searched_type' => SimpleParam::SearchedType,
247
262
  'locatedIn' => SimpleParam::LocatedIn,
248
263
  }.freeze
@@ -4,5 +4,5 @@
4
4
  # Command-line and gem client for Asana (unofficial)
5
5
  module Checkoff
6
6
  # Version of library
7
- VERSION = '0.237.0'
7
+ VERSION = '0.239.0'
8
8
  end
data/rbi/checkoff.rbi CHANGED
@@ -57,7 +57,7 @@ module Overcommit
57
57
  end
58
58
 
59
59
  module Checkoff
60
- VERSION = '0.237.0'
60
+ VERSION = '0.239.0'
61
61
 
62
62
  class Attachments
63
63
  include Logging
@@ -1900,6 +1900,11 @@ module Checkoff
1900
1900
  def convert; end
1901
1901
  end
1902
1902
 
1903
+ class Approval < SimpleParam
1904
+ sig { returns(T.untyped) }
1905
+ def convert; end
1906
+ end
1907
+
1903
1908
  class SearchedType < SimpleParam
1904
1909
  sig { returns(T.untyped) }
1905
1910
  def convert; end
@@ -1923,6 +1928,7 @@ module Checkoff
1923
1928
  'subtask' => SimpleParam::Subtask,
1924
1929
  'sort' => SimpleParam::Sort,
1925
1930
  'milestone' => SimpleParam::Milestone,
1931
+ 'approval' => SimpleParam::Approval,
1926
1932
  'searched_type' => SimpleParam::SearchedType,
1927
1933
  'locatedIn' => SimpleParam::LocatedIn,
1928
1934
  }.freeze
@@ -2409,7 +2415,7 @@ end
2409
2415
  # typed: ignore
2410
2416
  # Command-line and gem client for Asana (unofficial)
2411
2417
  module Checkoff
2412
- VERSION = T.let('0.237.0', T.untyped)
2418
+ VERSION = T.let('0.239.0', T.untyped)
2413
2419
 
2414
2420
  # Move tasks from one place to another
2415
2421
  class MvSubcommand
@@ -3059,7 +3065,6 @@ module Checkoff
3059
3065
  sig { returns(String) }
3060
3066
  def default_assignee_gid; end
3061
3067
 
3062
- # @sg-ignore
3063
3068
  sig { returns(::Logger) }
3064
3069
  def logger; end
3065
3070
 
@@ -3083,7 +3088,6 @@ module Checkoff
3083
3088
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3084
3089
  def finer(message = nil, &block); end
3085
3090
 
3086
- # @sg-ignore
3087
3091
  sig { returns(Symbol) }
3088
3092
  def log_level; end
3089
3093
 
@@ -3168,7 +3172,6 @@ module Checkoff
3168
3172
  sig { void }
3169
3173
  def self.run; end
3170
3174
 
3171
- # @sg-ignore
3172
3175
  sig { returns(::Logger) }
3173
3176
  def logger; end
3174
3177
 
@@ -3192,7 +3195,6 @@ module Checkoff
3192
3195
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3193
3196
  def finer(message = nil, &block); end
3194
3197
 
3195
- # @sg-ignore
3196
3198
  sig { returns(Symbol) }
3197
3199
  def log_level; end
3198
3200
 
@@ -3316,7 +3318,6 @@ module Checkoff
3316
3318
  sig { void }
3317
3319
  def self.run; end
3318
3320
 
3319
- # @sg-ignore
3320
3321
  sig { returns(::Logger) }
3321
3322
  def logger; end
3322
3323
 
@@ -3340,7 +3341,6 @@ module Checkoff
3340
3341
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3341
3342
  def finer(message = nil, &block); end
3342
3343
 
3343
- # @sg-ignore
3344
3344
  sig { returns(Symbol) }
3345
3345
  def log_level; end
3346
3346
  end
@@ -3588,7 +3588,6 @@ module Checkoff
3588
3588
  sig { params(workspace_name: String).returns(Asana::Resources::Project) }
3589
3589
  def my_tasks(workspace_name); end
3590
3590
 
3591
- # @sg-ignore
3592
3591
  sig { returns(::Logger) }
3593
3592
  def logger; end
3594
3593
 
@@ -3612,7 +3611,6 @@ module Checkoff
3612
3611
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3613
3612
  def finer(message = nil, &block); end
3614
3613
 
3615
- # @sg-ignore
3616
3614
  sig { returns(Symbol) }
3617
3615
  def log_level; end
3618
3616
 
@@ -3853,7 +3851,6 @@ module Checkoff
3853
3851
  sig { params(workspace_name: String, project_name: T.any(String, Symbol)).returns(Asana::Resources::Project) }
3854
3852
  def project_or_raise(workspace_name, project_name); end
3855
3853
 
3856
- # @sg-ignore
3857
3854
  sig { returns(::Logger) }
3858
3855
  def logger; end
3859
3856
 
@@ -3877,7 +3874,6 @@ module Checkoff
3877
3874
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3878
3875
  def finer(message = nil, &block); end
3879
3876
 
3880
- # @sg-ignore
3881
3877
  sig { returns(Symbol) }
3882
3878
  def log_level; end
3883
3879
 
@@ -4386,7 +4382,6 @@ module Checkoff
4386
4382
  sig { void }
4387
4383
  def self.run; end
4388
4384
 
4389
- # @sg-ignore
4390
4385
  sig { returns(::Logger) }
4391
4386
  def logger; end
4392
4387
 
@@ -4410,7 +4405,6 @@ module Checkoff
4410
4405
  sig { params(message: T.nilable(Object), block: T.untyped).void }
4411
4406
  def finer(message = nil, &block); end
4412
4407
 
4413
- # @sg-ignore
4414
4408
  sig { returns(Symbol) }
4415
4409
  def log_level; end
4416
4410
 
@@ -4663,7 +4657,6 @@ module Checkoff
4663
4657
  sig { void }
4664
4658
  def self.run; end
4665
4659
 
4666
- # @sg-ignore
4667
4660
  sig { returns(::Logger) }
4668
4661
  def logger; end
4669
4662
 
@@ -4687,7 +4680,6 @@ module Checkoff
4687
4680
  sig { params(message: T.nilable(Object), block: T.untyped).void }
4688
4681
  def finer(message = nil, &block); end
4689
4682
 
4690
- # @sg-ignore
4691
4683
  sig { returns(Symbol) }
4692
4684
  def log_level; end
4693
4685
 
@@ -5427,6 +5419,12 @@ module Checkoff
5427
5419
  def convert; end
5428
5420
  end
5429
5421
 
5422
+ # Handle 'approval' search url param
5423
+ class Approval < Checkoff::Internal::SearchUrl::SimpleParam::SimpleParam
5424
+ sig { returns(T::Array[String]) }
5425
+ def convert; end
5426
+ end
5427
+
5430
5428
  # Handle 'searched_type' search url param
5431
5429
  class SearchedType < Checkoff::Internal::SearchUrl::SimpleParam::SimpleParam
5432
5430
  sig { returns(T::Array[String]) }
@@ -5454,6 +5452,7 @@ module Checkoff
5454
5452
  'subtask' => SimpleParam::Subtask,
5455
5453
  'sort' => SimpleParam::Sort,
5456
5454
  'milestone' => SimpleParam::Milestone,
5455
+ 'approval' => SimpleParam::Approval,
5457
5456
  'searched_type' => SimpleParam::SearchedType,
5458
5457
  'locatedIn' => SimpleParam::LocatedIn,
5459
5458
  }.freeze, T.untyped)
@@ -5588,7 +5587,6 @@ module Checkoff
5588
5587
  sig { params(key: String, asana_event: T::Hash[T.untyped, T.untyped], fields: T::Array[String]).returns(T.nilable(Asana::Resources::Task)) }
5589
5588
  def uncached_fetch_task(key, asana_event, fields); end
5590
5589
 
5591
- # @sg-ignore
5592
5590
  sig { returns(::Logger) }
5593
5591
  def logger; end
5594
5592
 
@@ -5612,7 +5610,6 @@ module Checkoff
5612
5610
  sig { params(message: T.nilable(Object), block: T.untyped).void }
5613
5611
  def finer(message = nil, &block); end
5614
5612
 
5615
- # @sg-ignore
5616
5613
  sig { returns(Symbol) }
5617
5614
  def log_level; end
5618
5615
  end
@@ -5702,7 +5699,6 @@ module Checkoff
5702
5699
  sig { params(asana_event: T::Hash[T.untyped, T::Hash[T.untyped, T.untyped]]).void }
5703
5700
  def enrich_event_resource!(asana_event); end
5704
5701
 
5705
- # @sg-ignore
5706
5702
  sig { returns(::Logger) }
5707
5703
  def logger; end
5708
5704
 
@@ -5726,7 +5722,6 @@ module Checkoff
5726
5722
  sig { params(message: T.nilable(Object), block: T.untyped).void }
5727
5723
  def finer(message = nil, &block); end
5728
5724
 
5729
- # @sg-ignore
5730
5725
  sig { returns(Symbol) }
5731
5726
  def log_level; end
5732
5727
 
@@ -6516,7 +6511,6 @@ module Checkoff
6516
6511
  sig { params(object: Object, fn_name: Symbol).returns(T::Boolean) }
6517
6512
  def fn?(object, fn_name); end
6518
6513
 
6519
- # @sg-ignore
6520
6514
  sig { returns(::Logger) }
6521
6515
  def logger; end
6522
6516
 
@@ -6540,7 +6534,6 @@ module Checkoff
6540
6534
  sig { params(message: T.nilable(Object), block: T.untyped).void }
6541
6535
  def finer(message = nil, &block); end
6542
6536
 
6543
- # @sg-ignore
6544
6537
  sig { returns(Symbol) }
6545
6538
  def log_level; end
6546
6539
  end
@@ -6710,7 +6703,6 @@ end
6710
6703
 
6711
6704
  # include this to add ability to log at different levels
6712
6705
  module Logging
6713
- # @sg-ignore
6714
6706
  sig { returns(::Logger) }
6715
6707
  def logger; end
6716
6708
 
@@ -6734,7 +6726,6 @@ module Logging
6734
6726
  sig { params(message: T.nilable(Object), block: T.untyped).void }
6735
6727
  def finer(message = nil, &block); end
6736
6728
 
6737
- # @sg-ignore
6738
6729
  sig { returns(Symbol) }
6739
6730
  def log_level; end
6740
6731
  end
@@ -8527,6 +8518,26 @@ class TestTaskSelectors < ClassTest
8527
8518
  def class_under_test; end
8528
8519
  end
8529
8520
 
8521
+ class TestLogging < Minitest::Test
8522
+ sig { returns(T.untyped) }
8523
+ def test_logger_defaults_without_rails; end
8524
+
8525
+ sig { returns(T.untyped) }
8526
+ def test_logger_uses_rails_logger_when_available; end
8527
+
8528
+ sig { returns(T.untyped) }
8529
+ def test_logger_falls_back_when_rails_has_no_logger; end
8530
+
8531
+ sig { returns(T.untyped) }
8532
+ def build_logger_owner; end
8533
+
8534
+ sig { returns(T.untyped) }
8535
+ def with_removed_rails; end
8536
+
8537
+ sig { params(rails_const: T.untyped).returns(T.untyped) }
8538
+ def with_temporary_rails(rails_const); end
8539
+ end
8540
+
8530
8541
  class TestProjectSelectors < ClassTest
8531
8542
  extend Forwardable
8532
8543
 
@@ -8959,6 +8970,15 @@ class TestSearchUrlParser < ClassTest
8959
8970
  sig { void }
8960
8971
  def test_convert_params_45; end
8961
8972
 
8973
+ sig { void }
8974
+ def test_convert_params_46; end
8975
+
8976
+ sig { void }
8977
+ def test_convert_params_47; end
8978
+
8979
+ sig { void }
8980
+ def test_convert_params_48; end
8981
+
8962
8982
  sig { returns(T.class_of(Checkoff::Internal::SearchUrl::Parser)) }
8963
8983
  def class_under_test; end
8964
8984
  end
data/sig/checkoff.rbs CHANGED
@@ -554,7 +554,6 @@ module Checkoff
554
554
  # @sg-ignore
555
555
  def default_assignee_gid: () -> String
556
556
 
557
- # @sg-ignore
558
557
  def logger: () -> ::Logger
559
558
 
560
559
  # _@param_ `message`
@@ -572,7 +571,6 @@ module Checkoff
572
571
  # _@param_ `message`
573
572
  def finer: (?Object? message) -> void
574
573
 
575
- # @sg-ignore
576
574
  def log_level: () -> Symbol
577
575
 
578
576
  # sord warn - Asana::Client wasn't able to be resolved to a constant in this project
@@ -645,7 +643,6 @@ module Checkoff
645
643
 
646
644
  def self.run: () -> void
647
645
 
648
- # @sg-ignore
649
646
  def logger: () -> ::Logger
650
647
 
651
648
  # _@param_ `message`
@@ -663,7 +660,6 @@ module Checkoff
663
660
  # _@param_ `message`
664
661
  def finer: (?Object? message) -> void
665
662
 
666
- # @sg-ignore
667
663
  def log_level: () -> Symbol
668
664
 
669
665
  attr_reader projects: Checkoff::Projects
@@ -757,7 +753,6 @@ module Checkoff
757
753
 
758
754
  def self.run: () -> void
759
755
 
760
- # @sg-ignore
761
756
  def logger: () -> ::Logger
762
757
 
763
758
  # _@param_ `message`
@@ -775,7 +770,6 @@ module Checkoff
775
770
  # _@param_ `message`
776
771
  def finer: (?Object? message) -> void
777
772
 
778
- # @sg-ignore
779
773
  def log_level: () -> Symbol
780
774
  end
781
775
 
@@ -991,7 +985,6 @@ module Checkoff
991
985
  # _@param_ `workspace_name`
992
986
  def my_tasks: (String workspace_name) -> Asana::Resources::Project
993
987
 
994
- # @sg-ignore
995
988
  def logger: () -> ::Logger
996
989
 
997
990
  # _@param_ `message`
@@ -1009,7 +1002,6 @@ module Checkoff
1009
1002
  # _@param_ `message`
1010
1003
  def finer: (?Object? message) -> void
1011
1004
 
1012
- # @sg-ignore
1013
1005
  def log_level: () -> Symbol
1014
1006
 
1015
1007
  attr_reader timing: Checkoff::Timing
@@ -1215,7 +1207,6 @@ module Checkoff
1215
1207
  # _@param_ `project_name`
1216
1208
  def project_or_raise: (String workspace_name, (String | Symbol) project_name) -> Asana::Resources::Project
1217
1209
 
1218
- # @sg-ignore
1219
1210
  def logger: () -> ::Logger
1220
1211
 
1221
1212
  # _@param_ `message`
@@ -1233,7 +1224,6 @@ module Checkoff
1233
1224
  # _@param_ `message`
1234
1225
  def finer: (?Object? message) -> void
1235
1226
 
1236
- # @sg-ignore
1237
1227
  def log_level: () -> Symbol
1238
1228
 
1239
1229
  attr_reader projects: Checkoff::Projects
@@ -1670,7 +1660,6 @@ module Checkoff
1670
1660
 
1671
1661
  def self.run: () -> void
1672
1662
 
1673
- # @sg-ignore
1674
1663
  def logger: () -> ::Logger
1675
1664
 
1676
1665
  # _@param_ `message`
@@ -1688,7 +1677,6 @@ module Checkoff
1688
1677
  # _@param_ `message`
1689
1678
  def finer: (?Object? message) -> void
1690
1679
 
1691
- # @sg-ignore
1692
1680
  def log_level: () -> Symbol
1693
1681
 
1694
1682
  attr_reader workspaces: Checkoff::Workspaces
@@ -1910,7 +1898,6 @@ module Checkoff
1910
1898
 
1911
1899
  def self.run: () -> void
1912
1900
 
1913
- # @sg-ignore
1914
1901
  def logger: () -> ::Logger
1915
1902
 
1916
1903
  # _@param_ `message`
@@ -1928,7 +1915,6 @@ module Checkoff
1928
1915
  # _@param_ `message`
1929
1916
  def finer: (?Object? message) -> void
1930
1917
 
1931
- # @sg-ignore
1932
1918
  def log_level: () -> Symbol
1933
1919
 
1934
1920
  attr_reader task_selectors: Checkoff::TaskSelectors
@@ -2540,6 +2526,11 @@ module Checkoff
2540
2526
  def convert: () -> ::Array[String]
2541
2527
  end
2542
2528
 
2529
+ # Handle 'approval' search url param
2530
+ class Approval < Checkoff::Internal::SearchUrl::SimpleParam::SimpleParam
2531
+ def convert: () -> ::Array[String]
2532
+ end
2533
+
2543
2534
  # Handle 'searched_type' search url param
2544
2535
  class SearchedType < Checkoff::Internal::SearchUrl::SimpleParam::SimpleParam
2545
2536
  def convert: () -> ::Array[String]
@@ -2658,7 +2649,6 @@ module Checkoff
2658
2649
  # _@param_ `fields`
2659
2650
  def uncached_fetch_task: (String key, ::Hash[untyped, untyped] asana_event, ::Array[String] fields) -> Asana::Resources::Task?
2660
2651
 
2661
- # @sg-ignore
2662
2652
  def logger: () -> ::Logger
2663
2653
 
2664
2654
  # _@param_ `message`
@@ -2676,7 +2666,6 @@ module Checkoff
2676
2666
  # _@param_ `message`
2677
2667
  def finer: (?Object? message) -> void
2678
2668
 
2679
- # @sg-ignore
2680
2669
  def log_level: () -> Symbol
2681
2670
  end
2682
2671
 
@@ -2753,7 +2742,6 @@ module Checkoff
2753
2742
  # _@param_ `asana_event`
2754
2743
  def enrich_event_resource!: (::Hash[untyped, ::Hash[untyped, untyped]] asana_event) -> void
2755
2744
 
2756
- # @sg-ignore
2757
2745
  def logger: () -> ::Logger
2758
2746
 
2759
2747
  # _@param_ `message`
@@ -2771,7 +2759,6 @@ module Checkoff
2771
2759
  # _@param_ `message`
2772
2760
  def finer: (?Object? message) -> void
2773
2761
 
2774
- # @sg-ignore
2775
2762
  def log_level: () -> Symbol
2776
2763
 
2777
2764
  attr_reader projects: Checkoff::Projects
@@ -3440,7 +3427,6 @@ module Checkoff
3440
3427
  # _@param_ `fn_name`
3441
3428
  def fn?: (Object object, Symbol fn_name) -> bool
3442
3429
 
3443
- # @sg-ignore
3444
3430
  def logger: () -> ::Logger
3445
3431
 
3446
3432
  # _@param_ `message`
@@ -3458,7 +3444,6 @@ module Checkoff
3458
3444
  # _@param_ `message`
3459
3445
  def finer: (?Object? message) -> void
3460
3446
 
3461
- # @sg-ignore
3462
3447
  def log_level: () -> Symbol
3463
3448
  end
3464
3449
  end
@@ -3586,7 +3571,6 @@ end
3586
3571
 
3587
3572
  # include this to add ability to log at different levels
3588
3573
  module Logging
3589
- # @sg-ignore
3590
3574
  def logger: () -> ::Logger
3591
3575
 
3592
3576
  # _@param_ `message`
@@ -3604,7 +3588,6 @@ module Logging
3604
3588
  # _@param_ `message`
3605
3589
  def finer: (?Object? message) -> void
3606
3590
 
3607
- # @sg-ignore
3608
3591
  def log_level: () -> Symbol
3609
3592
  end
3610
3593
 
@@ -4796,6 +4779,20 @@ class TestTaskSelectors < ClassTest
4796
4779
  def class_under_test: () -> singleton(Checkoff::TaskSelectors)
4797
4780
  end
4798
4781
 
4782
+ class TestLogging < Minitest::Test
4783
+ def test_logger_defaults_without_rails: () -> untyped
4784
+
4785
+ def test_logger_uses_rails_logger_when_available: () -> untyped
4786
+
4787
+ def test_logger_falls_back_when_rails_has_no_logger: () -> untyped
4788
+
4789
+ def build_logger_owner: () -> untyped
4790
+
4791
+ def with_removed_rails: () -> untyped
4792
+
4793
+ def with_temporary_rails: (untyped rails_const) -> untyped
4794
+ end
4795
+
4799
4796
  class TestProjectSelectors < ClassTest
4800
4797
  extend Forwardable
4801
4798
 
@@ -5020,6 +5017,12 @@ class TestSearchUrlParser < ClassTest
5020
5017
 
5021
5018
  def test_convert_params_45: () -> void
5022
5019
 
5020
+ def test_convert_params_46: () -> void
5021
+
5022
+ def test_convert_params_47: () -> void
5023
+
5024
+ def test_convert_params_48: () -> void
5025
+
5023
5026
  def class_under_test: () -> singleton(Checkoff::Internal::SearchUrl::Parser)
5024
5027
  end
5025
5028
 
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.237.0
4
+ version: 0.239.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: 2025-12-13 00:00:00.000000000 Z
11
+ date: 2026-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -175,14 +175,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
175
175
  requirements:
176
176
  - - ">="
177
177
  - !ruby/object:Gem::Version
178
- version: '3.2'
178
+ version: '3.3'
179
179
  required_rubygems_version: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - ">="
182
182
  - !ruby/object:Gem::Version
183
183
  version: '0'
184
184
  requirements: []
185
- rubygems_version: 3.4.19
185
+ rubygems_version: 3.5.22
186
186
  signing_key:
187
187
  specification_version: 4
188
188
  summary: Command-line and gem client for Asana (unofficial)