slk 0.5.0 → 0.7.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.
data/lib/slk.rb CHANGED
@@ -11,7 +11,46 @@ require 'io/console'
11
11
  # Slack CLI - A command-line interface for Slack
12
12
  module Slk
13
13
  class Error < StandardError; end
14
- class ApiError < Error; end
14
+
15
+ # The invocation itself was wrong (a flag with no value, an unparseable
16
+ # time). The message is written for the user and is printed verbatim, with
17
+ # no "Error type:" label, because there is no internal fault to report.
18
+ class UsageError < Error; end
19
+
20
+ # A time or range the user typed that cannot be understood. Separate from
21
+ # UsageError so callers can rescue *only* malformed input: a blanket
22
+ # `rescue ArgumentError` around a parse call also swallows arity and range
23
+ # errors from the code itself and presents them as if the user mistyped.
24
+ class TimeFormatError < UsageError; end
25
+
26
+ # Errors from any Slack-API-shaped failure: HTTP errors, network errors,
27
+ # logical Slack errors (user_not_found, missing_scope, etc.), JSON parse
28
+ # failures. The optional `code` symbol lets callers match specific cases
29
+ # (e.g. `e.code == :user_not_found`) without parsing message strings.
30
+ #
31
+ # Codes used:
32
+ # :network_error, :http_error, :unauthorized, :invalid_json,
33
+ # :ratelimited, plus any literal Slack `error` value (`:user_not_found`,
34
+ # `:missing_scope`, `:account_inactive`, etc.).
35
+ class ApiError < Error
36
+ attr_reader :code
37
+
38
+ def initialize(message, code: nil)
39
+ super(message)
40
+ @code = code
41
+ end
42
+ end
43
+
44
+ # Slack rate-limit error. Carries Retry-After in seconds when present.
45
+ class RateLimitError < ApiError
46
+ attr_reader :retry_after
47
+
48
+ def initialize(message, retry_after: nil)
49
+ super(message, code: :ratelimited)
50
+ @retry_after = retry_after
51
+ end
52
+ end
53
+
15
54
  class ConfigError < Error; end
16
55
  class EncryptionError < Error; end
17
56
  class TokenStoreError < Error; end
@@ -27,6 +66,7 @@ module Slk
27
66
  autoload :Duration, 'slk/models/duration'
28
67
  autoload :Workspace, 'slk/models/workspace'
29
68
  autoload :Status, 'slk/models/status'
69
+ autoload :ScheduledStatus, 'slk/models/scheduled_status'
30
70
  autoload :Message, 'slk/models/message'
31
71
  autoload :Reaction, 'slk/models/reaction'
32
72
  autoload :User, 'slk/models/user'
@@ -34,6 +74,8 @@ module Slk
34
74
  autoload :Preset, 'slk/models/preset'
35
75
  autoload :SearchResult, 'slk/models/search_result'
36
76
  autoload :SavedItem, 'slk/models/saved_item'
77
+ autoload :Profile, 'slk/models/profile'
78
+ autoload :ProfileField, 'slk/models/profile_field'
37
79
  end
38
80
 
39
81
  # Application services for configuration, caching, and API communication
@@ -56,7 +98,13 @@ module Slk
56
98
  autoload :TargetResolver, 'slk/services/target_resolver'
57
99
  autoload :SetupWizard, 'slk/services/setup_wizard'
58
100
  autoload :UserLookup, 'slk/services/user_lookup'
101
+ autoload :UserMatcher, 'slk/services/user_matcher'
102
+ autoload :UserPicker, 'slk/services/user_picker'
103
+ autoload :WhoTargetResolver, 'slk/services/who_target_resolver'
59
104
  autoload :MessageResolver, 'slk/services/message_resolver'
105
+ autoload :ProfileBuilder, 'slk/services/profile_builder'
106
+ autoload :ProfileResolver, 'slk/services/profile_resolver'
107
+ autoload :MetaCache, 'slk/services/meta_cache'
60
108
  end
61
109
 
62
110
  # Output formatters for messages, durations, and emoji
@@ -75,6 +123,9 @@ module Slk
75
123
  autoload :SearchFormatter, 'slk/formatters/search_formatter'
76
124
  autoload :SavedItemFormatter, 'slk/formatters/saved_item_formatter'
77
125
  autoload :TextProcessor, 'slk/formatters/text_processor'
126
+ autoload :ProfileFormatter, 'slk/formatters/profile_formatter'
127
+ autoload :ProfileFieldRenderer, 'slk/formatters/profile_field_renderer'
128
+ autoload :ProfileRows, 'slk/formatters/profile_rows'
78
129
  end
79
130
 
80
131
  # CLI commands implementing user-facing functionality
@@ -96,6 +147,9 @@ module Slk
96
147
  autoload :Config, 'slk/commands/config'
97
148
  autoload :Help, 'slk/commands/help'
98
149
  autoload :Later, 'slk/commands/later'
150
+ autoload :Debug, 'slk/commands/debug'
151
+ autoload :Who, 'slk/commands/who'
152
+ autoload :Org, 'slk/commands/org'
99
153
  end
100
154
 
101
155
  # Thin wrappers around Slack API endpoints
@@ -111,6 +165,8 @@ module Slk
111
165
  autoload :Activity, 'slk/api/activity'
112
166
  autoload :Search, 'slk/api/search'
113
167
  autoload :Saved, 'slk/api/saved'
168
+ autoload :CustomStatus, 'slk/api/custom_status'
169
+ autoload :Team, 'slk/api/team'
114
170
  end
115
171
 
116
172
  # Utility classes for paths, parsing, and helpers
@@ -124,5 +180,7 @@ module Slk
124
180
  autoload :TextWrapper, 'slk/support/text_wrapper'
125
181
  autoload :InteractivePrompt, 'slk/support/interactive_prompt'
126
182
  autoload :DateParser, 'slk/support/date_parser'
183
+ autoload :TimeParser, 'slk/support/time_parser'
184
+ autoload :TimeRangeParser, 'slk/support/time_range_parser'
127
185
  end
128
186
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Boehs
@@ -30,10 +30,12 @@ files:
30
30
  - lib/slk/api/bots.rb
31
31
  - lib/slk/api/client.rb
32
32
  - lib/slk/api/conversations.rb
33
+ - lib/slk/api/custom_status.rb
33
34
  - lib/slk/api/dnd.rb
34
35
  - lib/slk/api/emoji.rb
35
36
  - lib/slk/api/saved.rb
36
37
  - lib/slk/api/search.rb
38
+ - lib/slk/api/team.rb
37
39
  - lib/slk/api/threads.rb
38
40
  - lib/slk/api/usergroups.rb
39
41
  - lib/slk/api/users.rb
@@ -43,11 +45,13 @@ files:
43
45
  - lib/slk/commands/cache.rb
44
46
  - lib/slk/commands/catchup.rb
45
47
  - lib/slk/commands/config.rb
48
+ - lib/slk/commands/debug.rb
46
49
  - lib/slk/commands/dnd.rb
47
50
  - lib/slk/commands/emoji.rb
48
51
  - lib/slk/commands/help.rb
49
52
  - lib/slk/commands/later.rb
50
53
  - lib/slk/commands/messages.rb
54
+ - lib/slk/commands/org.rb
51
55
  - lib/slk/commands/presence.rb
52
56
  - lib/slk/commands/preset.rb
53
57
  - lib/slk/commands/search.rb
@@ -55,6 +59,7 @@ files:
55
59
  - lib/slk/commands/status.rb
56
60
  - lib/slk/commands/thread.rb
57
61
  - lib/slk/commands/unread.rb
62
+ - lib/slk/commands/who.rb
58
63
  - lib/slk/commands/workspaces.rb
59
64
  - lib/slk/formatters/activity_formatter.rb
60
65
  - lib/slk/formatters/attachment_formatter.rb
@@ -66,6 +71,9 @@ files:
66
71
  - lib/slk/formatters/mention_replacer.rb
67
72
  - lib/slk/formatters/message_formatter.rb
68
73
  - lib/slk/formatters/output.rb
74
+ - lib/slk/formatters/profile_field_renderer.rb
75
+ - lib/slk/formatters/profile_formatter.rb
76
+ - lib/slk/formatters/profile_rows.rb
69
77
  - lib/slk/formatters/reaction_formatter.rb
70
78
  - lib/slk/formatters/saved_item_formatter.rb
71
79
  - lib/slk/formatters/search_formatter.rb
@@ -74,8 +82,11 @@ files:
74
82
  - lib/slk/models/duration.rb
75
83
  - lib/slk/models/message.rb
76
84
  - lib/slk/models/preset.rb
85
+ - lib/slk/models/profile.rb
86
+ - lib/slk/models/profile_field.rb
77
87
  - lib/slk/models/reaction.rb
78
88
  - lib/slk/models/saved_item.rb
89
+ - lib/slk/models/scheduled_status.rb
79
90
  - lib/slk/models/search_result.rb
80
91
  - lib/slk/models/status.rb
81
92
  - lib/slk/models/user.rb
@@ -91,7 +102,10 @@ files:
91
102
  - lib/slk/services/file_downloader.rb
92
103
  - lib/slk/services/gemoji_sync.rb
93
104
  - lib/slk/services/message_resolver.rb
105
+ - lib/slk/services/meta_cache.rb
94
106
  - lib/slk/services/preset_store.rb
107
+ - lib/slk/services/profile_builder.rb
108
+ - lib/slk/services/profile_resolver.rb
95
109
  - lib/slk/services/reaction_enricher.rb
96
110
  - lib/slk/services/setup_wizard.rb
97
111
  - lib/slk/services/target_resolver.rb
@@ -100,6 +114,9 @@ files:
100
114
  - lib/slk/services/token_store.rb
101
115
  - lib/slk/services/unread_marker.rb
102
116
  - lib/slk/services/user_lookup.rb
117
+ - lib/slk/services/user_matcher.rb
118
+ - lib/slk/services/user_picker.rb
119
+ - lib/slk/services/who_target_resolver.rb
103
120
  - lib/slk/support/date_parser.rb
104
121
  - lib/slk/support/error_logger.rb
105
122
  - lib/slk/support/help_formatter.rb
@@ -108,6 +125,8 @@ files:
108
125
  - lib/slk/support/platform.rb
109
126
  - lib/slk/support/slack_url_parser.rb
110
127
  - lib/slk/support/text_wrapper.rb
128
+ - lib/slk/support/time_parser.rb
129
+ - lib/slk/support/time_range_parser.rb
111
130
  - lib/slk/support/user_resolver.rb
112
131
  - lib/slk/support/xdg_paths.rb
113
132
  - lib/slk/version.rb
@@ -133,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
152
  - !ruby/object:Gem::Version
134
153
  version: '0'
135
154
  requirements: []
136
- rubygems_version: 4.0.10
155
+ rubygems_version: 4.0.13
137
156
  specification_version: 4
138
157
  summary: A command-line interface for Slack
139
158
  test_files: []