ipt 1.0.1 → 2.1.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.
Files changed (235) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +41 -0
  3. data/.gitignore +0 -1
  4. data/Gemfile.lock +318 -0
  5. data/README.md +1 -1
  6. data/bin/tapioca +29 -0
  7. data/ipt.gemspec +15 -8
  8. data/lib/pt.rb +8 -9
  9. data/lib/pt/action.rb +42 -24
  10. data/lib/pt/cli.rb +1 -1
  11. data/lib/pt/client.rb +2 -3
  12. data/lib/pt/configuration.rb +1 -1
  13. data/lib/pt/data_row.rb +1 -0
  14. data/lib/pt/data_table.rb +1 -2
  15. data/lib/pt/io.rb +16 -7
  16. data/lib/pt/version.rb +2 -1
  17. data/sorbet/config +3 -0
  18. data/sorbet/rbi/gems/activesupport.rbi +671 -0
  19. data/sorbet/rbi/gems/activesupport@6.1.3.2.rbi +63 -0
  20. data/sorbet/rbi/gems/addressable.rbi +147 -0
  21. data/sorbet/rbi/gems/addressable@2.7.0.rbi +8 -0
  22. data/sorbet/rbi/gems/anyway_config.rbi +197 -0
  23. data/sorbet/rbi/gems/anyway_config@2.1.0.rbi +8 -0
  24. data/sorbet/rbi/gems/aruba.rbi +917 -0
  25. data/sorbet/rbi/gems/aruba@0.14.14.rbi +1342 -0
  26. data/sorbet/rbi/gems/ast.rbi +49 -0
  27. data/sorbet/rbi/gems/ast@2.4.2.rbi +54 -0
  28. data/sorbet/rbi/gems/axiom-types@0.1.1.rbi +8 -0
  29. data/sorbet/rbi/gems/builder@3.2.4.rbi +15 -0
  30. data/sorbet/rbi/gems/childprocess.rbi +107 -0
  31. data/sorbet/rbi/gems/childprocess@3.0.0.rbi +135 -0
  32. data/sorbet/rbi/gems/coderay.rbi +285 -0
  33. data/sorbet/rbi/gems/coderay@1.1.3.rbi +1005 -0
  34. data/sorbet/rbi/gems/coercible@1.0.0.rbi +8 -0
  35. data/sorbet/rbi/gems/colorize.rbi +82 -0
  36. data/sorbet/rbi/gems/colorize@0.8.1.rbi +39 -0
  37. data/sorbet/rbi/gems/commander@4.6.0.rbi +8 -0
  38. data/sorbet/rbi/gems/concurrent-ruby.rbi +1590 -0
  39. data/sorbet/rbi/gems/concurrent-ruby@1.1.8.rbi +8 -0
  40. data/sorbet/rbi/gems/config.rbi +124 -0
  41. data/sorbet/rbi/gems/config@3.1.0.rbi +8 -0
  42. data/sorbet/rbi/gems/contracts.rbi +391 -0
  43. data/sorbet/rbi/gems/contracts@0.16.1.rbi +592 -0
  44. data/sorbet/rbi/gems/cucumber-core.rbi +628 -0
  45. data/sorbet/rbi/gems/cucumber-core@9.0.0.rbi +8 -0
  46. data/sorbet/rbi/gems/cucumber-create-meta.rbi +27 -0
  47. data/sorbet/rbi/gems/cucumber-create-meta@4.0.0.rbi +8 -0
  48. data/sorbet/rbi/gems/cucumber-cucumber-expressions.rbi +216 -0
  49. data/sorbet/rbi/gems/cucumber-cucumber-expressions@12.1.1.rbi +8 -0
  50. data/sorbet/rbi/gems/cucumber-gherkin.rbi +289 -0
  51. data/sorbet/rbi/gems/cucumber-gherkin@18.1.1.rbi +8 -0
  52. data/sorbet/rbi/gems/cucumber-html-formatter@13.0.0.rbi +8 -0
  53. data/sorbet/rbi/gems/cucumber-messages.rbi +872 -0
  54. data/sorbet/rbi/gems/cucumber-messages@15.0.0.rbi +8 -0
  55. data/sorbet/rbi/gems/cucumber-tag-expressions.rbi +53 -0
  56. data/sorbet/rbi/gems/cucumber-tag-expressions@3.0.1.rbi +8 -0
  57. data/sorbet/rbi/gems/cucumber-wire.rbi +161 -0
  58. data/sorbet/rbi/gems/cucumber-wire@5.0.0.rbi +8 -0
  59. data/sorbet/rbi/gems/cucumber.rbi +1876 -0
  60. data/sorbet/rbi/gems/cucumber@6.0.0.rbi +8 -0
  61. data/sorbet/rbi/gems/declarative.rbi +75 -0
  62. data/sorbet/rbi/gems/declarative@0.0.20.rbi +8 -0
  63. data/sorbet/rbi/gems/deep_merge.rbi +26 -0
  64. data/sorbet/rbi/gems/deep_merge@1.2.1.rbi +8 -0
  65. data/sorbet/rbi/gems/descendants_tracker@0.0.4.rbi +8 -0
  66. data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +8 -0
  67. data/sorbet/rbi/gems/dry-configurable@0.12.1.rbi +8 -0
  68. data/sorbet/rbi/gems/dry-container@0.7.2.rbi +8 -0
  69. data/sorbet/rbi/gems/dry-core@0.5.0.rbi +8 -0
  70. data/sorbet/rbi/gems/dry-equalizer@0.3.0.rbi +8 -0
  71. data/sorbet/rbi/gems/dry-inflector@0.2.0.rbi +8 -0
  72. data/sorbet/rbi/gems/dry-initializer@3.0.4.rbi +8 -0
  73. data/sorbet/rbi/gems/dry-logic@1.2.0.rbi +8 -0
  74. data/sorbet/rbi/gems/dry-schema@1.6.2.rbi +8 -0
  75. data/sorbet/rbi/gems/dry-types@1.5.1.rbi +8 -0
  76. data/sorbet/rbi/gems/dry-validation@1.6.0.rbi +8 -0
  77. data/sorbet/rbi/gems/equalizer.rbi +23 -0
  78. data/sorbet/rbi/gems/equalizer@0.0.11.rbi +8 -0
  79. data/sorbet/rbi/gems/equatable.rbi +26 -0
  80. data/sorbet/rbi/gems/equatable@0.5.0.rbi +8 -0
  81. data/sorbet/rbi/gems/excon.rbi +378 -0
  82. data/sorbet/rbi/gems/excon@0.81.0.rbi +8 -0
  83. data/sorbet/rbi/gems/faraday-excon.rbi +28 -0
  84. data/sorbet/rbi/gems/faraday-excon@1.1.0.rbi +8 -0
  85. data/sorbet/rbi/gems/faraday-net_http.rbi +32 -0
  86. data/sorbet/rbi/gems/faraday-net_http@1.0.1.rbi +8 -0
  87. data/sorbet/rbi/gems/faraday-net_http_persistent.rbi +24 -0
  88. data/sorbet/rbi/gems/faraday-net_http_persistent@1.1.0.rbi +8 -0
  89. data/sorbet/rbi/gems/faraday.rbi +606 -0
  90. data/sorbet/rbi/gems/faraday@1.4.1.rbi +8 -0
  91. data/sorbet/rbi/gems/faraday_middleware.rbi +19 -0
  92. data/sorbet/rbi/gems/faraday_middleware@1.0.0.rbi +8 -0
  93. data/sorbet/rbi/gems/ffi.rbi +560 -0
  94. data/sorbet/rbi/gems/ffi@1.15.0.rbi +849 -0
  95. data/sorbet/rbi/gems/formatador.rbi +52 -0
  96. data/sorbet/rbi/gems/formatador@0.2.5.rbi +8 -0
  97. data/sorbet/rbi/gems/guard-compat@1.2.1.rbi +49 -0
  98. data/sorbet/rbi/gems/guard-rspec@4.7.3.rbi +233 -0
  99. data/sorbet/rbi/gems/guard.rbi +397 -0
  100. data/sorbet/rbi/gems/guard@2.16.2.rbi +615 -0
  101. data/sorbet/rbi/gems/highline.rbi +567 -0
  102. data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
  103. data/sorbet/rbi/gems/i18n.rbi +133 -0
  104. data/sorbet/rbi/gems/i18n@1.8.10.rbi +8 -0
  105. data/sorbet/rbi/gems/ice_nine@0.11.2.rbi +8 -0
  106. data/sorbet/rbi/gems/listen.rbi +301 -0
  107. data/sorbet/rbi/gems/listen@3.5.1.rbi +476 -0
  108. data/sorbet/rbi/gems/lumberjack.rbi +299 -0
  109. data/sorbet/rbi/gems/lumberjack@1.2.8.rbi +431 -0
  110. data/sorbet/rbi/gems/method_source.rbi +64 -0
  111. data/sorbet/rbi/gems/method_source@1.0.0.rbi +72 -0
  112. data/sorbet/rbi/gems/middleware.rbi +32 -0
  113. data/sorbet/rbi/gems/middleware@0.1.0.rbi +8 -0
  114. data/sorbet/rbi/gems/mime-types-data.rbi +17 -0
  115. data/sorbet/rbi/gems/mime-types-data@3.2021.0225.rbi +8 -0
  116. data/sorbet/rbi/gems/mime-types.rbi +218 -0
  117. data/sorbet/rbi/gems/mime-types@3.3.1.rbi +8 -0
  118. data/sorbet/rbi/gems/mini_mime.rbi +52 -0
  119. data/sorbet/rbi/gems/mini_mime@1.1.0.rbi +8 -0
  120. data/sorbet/rbi/gems/minitest@5.14.4.rbi +8 -0
  121. data/sorbet/rbi/gems/multi_json.rbi +62 -0
  122. data/sorbet/rbi/gems/multi_json@1.15.0.rbi +8 -0
  123. data/sorbet/rbi/gems/multi_test.rbi +28 -0
  124. data/sorbet/rbi/gems/multi_test@0.1.2.rbi +8 -0
  125. data/sorbet/rbi/gems/multipart-post.rbi +53 -0
  126. data/sorbet/rbi/gems/multipart-post@2.1.1.rbi +8 -0
  127. data/sorbet/rbi/gems/necromancer.rbi +135 -0
  128. data/sorbet/rbi/gems/necromancer@0.3.0.rbi +8 -0
  129. data/sorbet/rbi/gems/nenv.rbi +60 -0
  130. data/sorbet/rbi/gems/nenv@0.3.0.rbi +88 -0
  131. data/sorbet/rbi/gems/notiffany.rbi +215 -0
  132. data/sorbet/rbi/gems/notiffany@0.1.3.rbi +323 -0
  133. data/sorbet/rbi/gems/paint.rbi +31 -0
  134. data/sorbet/rbi/gems/paint@2.2.1.rbi +8 -0
  135. data/sorbet/rbi/gems/parlour.rbi +840 -0
  136. data/sorbet/rbi/gems/parlour@6.0.0.rbi +1610 -0
  137. data/sorbet/rbi/gems/parser.rbi +1517 -0
  138. data/sorbet/rbi/gems/parser@3.0.1.1.rbi +1726 -0
  139. data/sorbet/rbi/gems/pastel.rbi +128 -0
  140. data/sorbet/rbi/gems/pastel@0.6.1.rbi +8 -0
  141. data/sorbet/rbi/gems/protobuf-cucumber.rbi +1520 -0
  142. data/sorbet/rbi/gems/protobuf-cucumber@3.10.8.rbi +8 -0
  143. data/sorbet/rbi/gems/pry.rbi +1898 -0
  144. data/sorbet/rbi/gems/pry@0.14.1.rbi +2486 -0
  145. data/sorbet/rbi/gems/public_suffix.rbi +104 -0
  146. data/sorbet/rbi/gems/public_suffix@4.0.6.rbi +8 -0
  147. data/sorbet/rbi/gems/rainbow.rbi +118 -0
  148. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +153 -0
  149. data/sorbet/rbi/gems/rake.rbi +647 -0
  150. data/sorbet/rbi/gems/rake@10.5.0.rbi +805 -0
  151. data/sorbet/rbi/gems/rb-fsevent@0.11.0.rbi +8 -0
  152. data/sorbet/rbi/gems/rb-inotify@0.10.1.rbi +8 -0
  153. data/sorbet/rbi/gems/representable.rbi +227 -0
  154. data/sorbet/rbi/gems/representable@3.1.1.rbi +8 -0
  155. data/sorbet/rbi/gems/rspec-core.rbi +1932 -0
  156. data/sorbet/rbi/gems/rspec-core@3.10.1.rbi +2455 -0
  157. data/sorbet/rbi/gems/rspec-expectations.rbi +1151 -0
  158. data/sorbet/rbi/gems/rspec-expectations@3.10.1.rbi +1652 -0
  159. data/sorbet/rbi/gems/rspec-mocks.rbi +1100 -0
  160. data/sorbet/rbi/gems/rspec-mocks@3.10.2.rbi +1462 -0
  161. data/sorbet/rbi/gems/rspec-support.rbi +280 -0
  162. data/sorbet/rbi/gems/rspec-support@3.10.2.rbi +509 -0
  163. data/sorbet/rbi/gems/rspec.rbi +15 -0
  164. data/sorbet/rbi/gems/rspec@3.10.0.rbi +38 -0
  165. data/sorbet/rbi/gems/ruby-next-core.rbi +76 -0
  166. data/sorbet/rbi/gems/ruby-next-core@0.12.0.rbi +7 -0
  167. data/sorbet/rbi/gems/ruby2_keywords@0.0.4.rbi +8 -0
  168. data/sorbet/rbi/gems/shellany.rbi +29 -0
  169. data/sorbet/rbi/gems/shellany@0.0.1.rbi +28 -0
  170. data/sorbet/rbi/gems/spoom.rbi +872 -0
  171. data/sorbet/rbi/gems/spoom@1.1.1.rbi +1193 -0
  172. data/sorbet/rbi/gems/sys-uname.rbi +66 -0
  173. data/sorbet/rbi/gems/sys-uname@1.2.2.rbi +8 -0
  174. data/sorbet/rbi/gems/tapioca.rbi +39 -0
  175. data/sorbet/rbi/gems/tapioca@0.4.23.rbi +1230 -0
  176. data/sorbet/rbi/gems/terminal-table.rbi +166 -0
  177. data/sorbet/rbi/gems/terminal-table@3.0.0.rbi +8 -0
  178. data/sorbet/rbi/gems/thor.rbi +537 -0
  179. data/sorbet/rbi/gems/thor@1.1.0.rbi +838 -0
  180. data/sorbet/rbi/gems/thread_safe@0.3.6.rbi +8 -0
  181. data/sorbet/rbi/gems/tracker_api.rbi +33 -0
  182. data/sorbet/rbi/gems/tracker_api@1.13.0.rbi +21 -0
  183. data/sorbet/rbi/gems/trailblazer-option.rbi +22 -0
  184. data/sorbet/rbi/gems/trailblazer-option@0.1.1.rbi +8 -0
  185. data/sorbet/rbi/gems/tty-color.rbi +41 -0
  186. data/sorbet/rbi/gems/tty-color@0.3.0.rbi +8 -0
  187. data/sorbet/rbi/gems/tty-command@0.1.0.rbi +8 -0
  188. data/sorbet/rbi/gems/tty-cursor@0.3.0.rbi +8 -0
  189. data/sorbet/rbi/gems/tty-pager.rbi +41 -0
  190. data/sorbet/rbi/gems/tty-pager@0.4.0.rbi +8 -0
  191. data/sorbet/rbi/gems/tty-platform.rbi +36 -0
  192. data/sorbet/rbi/gems/tty-platform@0.1.0.rbi +8 -0
  193. data/sorbet/rbi/gems/tty-progressbar.rbi +164 -0
  194. data/sorbet/rbi/gems/tty-progressbar@0.9.0.rbi +8 -0
  195. data/sorbet/rbi/gems/tty-prompt@0.6.0.rbi +8 -0
  196. data/sorbet/rbi/gems/tty-screen.rbi +40 -0
  197. data/sorbet/rbi/gems/tty-screen@0.5.1.rbi +8 -0
  198. data/sorbet/rbi/gems/tty-spinner.rbi +40 -0
  199. data/sorbet/rbi/gems/tty-spinner@0.2.0.rbi +8 -0
  200. data/sorbet/rbi/gems/tty-table.rbi +417 -0
  201. data/sorbet/rbi/gems/tty-table@0.5.0.rbi +8 -0
  202. data/sorbet/rbi/gems/tty-which.rbi +22 -0
  203. data/sorbet/rbi/gems/tty-which@0.1.0.rbi +8 -0
  204. data/sorbet/rbi/gems/tty.rbi +126 -0
  205. data/sorbet/rbi/gems/tty@0.5.0.rbi +8 -0
  206. data/sorbet/rbi/gems/tzinfo.rbi +588 -0
  207. data/sorbet/rbi/gems/tzinfo@2.0.4.rbi +8 -0
  208. data/sorbet/rbi/gems/uber.rbi +18 -0
  209. data/sorbet/rbi/gems/uber@0.1.0.rbi +8 -0
  210. data/sorbet/rbi/gems/unicode-display_width.rbi +17 -0
  211. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +8 -0
  212. data/sorbet/rbi/gems/unicode_utils.rbi +171 -0
  213. data/sorbet/rbi/gems/unicode_utils@1.4.0.rbi +8 -0
  214. data/sorbet/rbi/gems/vcr.rbi +582 -0
  215. data/sorbet/rbi/gems/vcr@6.0.0.rbi +782 -0
  216. data/sorbet/rbi/gems/verse.rbi +87 -0
  217. data/sorbet/rbi/gems/verse@0.4.0.rbi +8 -0
  218. data/sorbet/rbi/gems/virtus@1.0.5.rbi +8 -0
  219. data/sorbet/rbi/gems/wisper@1.6.1.rbi +8 -0
  220. data/sorbet/rbi/gems/zeitwerk.rbi +139 -0
  221. data/sorbet/rbi/gems/zeitwerk@2.4.2.rbi +8 -0
  222. data/sorbet/rbi/hidden-definitions/errors.txt +8695 -0
  223. data/sorbet/rbi/hidden-definitions/hidden.rbi +18529 -0
  224. data/sorbet/rbi/sorbet-typed/lib/activesupport/>=6/activesupport.rbi +37 -0
  225. data/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +1850 -0
  226. data/sorbet/rbi/sorbet-typed/lib/faraday/all/faraday.rbi +756 -0
  227. data/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +108 -0
  228. data/sorbet/rbi/sorbet-typed/lib/parlour/6.0.0/parlour.rbi +1903 -0
  229. data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +276 -0
  230. data/sorbet/rbi/sorbet-typed/lib/rake/all/rake.rbi +645 -0
  231. data/sorbet/rbi/sorbet-typed/lib/rspec-core/all/rspec-core.rbi +1891 -0
  232. data/sorbet/rbi/sorbet-typed/lib/thor/all/thor.rbi +905 -0
  233. data/sorbet/rbi/todo.rbi +23 -0
  234. data/sorbet/tapioca/require.rb +4 -0
  235. metadata +341 -23
data/lib/pt.rb CHANGED
@@ -1,13 +1,12 @@
1
+ # typed: strict
1
2
  require 'tracker_api'
2
- require "pt/version"
3
- require 'pt/client'
4
- require 'pt/data_row'
5
- require 'pt/data_table'
6
- require 'pt/action'
7
- require 'pt/io'
8
- require 'pt/configuration'
9
- require 'pt/cli'
3
+ require "zeitwerk"
4
+
5
+ loader = Zeitwerk::Loader.for_gem
6
+ loader.inflector.inflect("pt" => "PT", "io" => "IO", "cli"=> "CLI")
7
+ loader.setup
10
8
 
11
9
  module PT
12
- # Your code goes here...
13
10
  end
11
+
12
+ loader.eager_load
data/lib/pt/action.rb CHANGED
@@ -1,5 +1,24 @@
1
+ # typed: false
2
+
3
+ require "tty-editor"
4
+ require "tty-prompt"
5
+
1
6
  module PT
2
7
  module Action
8
+ def prompt
9
+ @prompt ||= TTY::Prompt
10
+ .new
11
+ .on(:keypress) do |event|
12
+ if event.value == "j"
13
+ prompt.trigger(:keydown)
14
+ end
15
+
16
+ if event.value == "k"
17
+ prompt.trigger(:keyup)
18
+ end
19
+ end
20
+ end
21
+
3
22
  def show_story(story)
4
23
  clear
5
24
  title('========================================='.red)
@@ -171,33 +190,39 @@ module PT
171
190
  # set title
172
191
  title = ask("Name for the new task:")
173
192
 
193
+ owners = []
174
194
  # set owner
175
- if ask('Do you want to assign it now? (y/n)').downcase == 'y'
195
+ if prompt.yes?('Do you want to assign it now? (y/n)')
176
196
  members = @client.get_members
177
- table = PersonsTable.new(members.map(&:person))
178
- owner = select("Please select a member to assign him the task.", table)
179
- owner_id = owner.id
197
+ member_choices = members.map(&:person).map do |p|
198
+ {
199
+ name: "[#{p.initials}] #{p.name}",
200
+ value: p
201
+ }
202
+ end
203
+ owners = prompt.multi_select("Select member?", member_choices, min: 1)
180
204
  end
181
205
 
182
206
  # set story type
183
- type = HighLine.new.choose do |menu|
184
- menu.prompt = 'Please set type of story:'
185
- menu.choice(:feature)
186
- menu.choice(:bug)
187
- menu.choice(:chore)
188
- menu.choice(:release)
189
- menu.default = :feature
207
+ type = prompt.select("Please set type of story:") do |menu|
208
+ menu.enum "."
209
+ menu.choice("feature")
210
+ menu.choice("bug")
211
+ menu.choice("chore")
212
+ menu.choice("release")
213
+ menu.default("feature")
190
214
  end
191
215
 
192
- description = edit_using_editor if ask('Do you want to write description now?(y/n)') == 'y'
193
- story = @client.create_story(
216
+ description = edit_using_editor if prompt.yes?('Do you want to write description now?(y/n)')
217
+ story_args = {
194
218
  name: title,
195
- owner_ids: [owner_id],
219
+ owner_ids: owners.map(&:id),
196
220
  requested_by_id: Settings[:user_id],
197
221
  story_type: type,
198
222
  description: description
199
- )
200
- congrats("#{type} #{(' for ' + owner.name ) if owner} has been created \n #{story.url}")
223
+ }
224
+ story = @client.create_story(story_args)
225
+ congrats("#{type.capitalize} has been created \n #{story.url}")
201
226
  story
202
227
  end
203
228
 
@@ -250,15 +275,8 @@ module PT
250
275
  def edit_using_editor(content=nil)
251
276
  editor = ENV.fetch('EDITOR') { 'vi' }
252
277
  temp_path = "/tmp/editor-#{ Process.pid }.txt"
278
+ TTY::Editor.open(temp_path, text: content)
253
279
  File.write(temp_path, content) if content
254
- system "#{ editor } #{ temp_path }"
255
- begin
256
- content = File.read(temp_path)
257
- File.delete(temp_path)
258
- content
259
- rescue
260
- ""
261
- end
262
280
  end
263
281
 
264
282
  def choose_person
data/lib/pt/cli.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  require 'yaml'
2
3
  require 'highline'
3
4
  require 'tempfile'
@@ -27,7 +28,6 @@ module PT
27
28
 
28
29
  def initialize(*args)
29
30
  super
30
- @io = HighLine.new
31
31
  @config = PT::Configuration.new
32
32
  @client = @config.client || Client.new
33
33
  @project = @client.project
data/lib/pt/client.rb CHANGED
@@ -1,8 +1,9 @@
1
+ # typed: false
1
2
  require 'uri'
2
3
  require 'tracker_api'
3
4
 
4
5
  module PT
5
- class Client < SimpleDelegator
6
+ class Client
6
7
 
7
8
  STORY_FIELDS=':default,requested_by(initials),owners(initials),tasks(complete,description),comments(text,file_attachment_ids,person(initials))'
8
9
 
@@ -10,7 +11,6 @@ module PT
10
11
 
11
12
  def initialize
12
13
  @client = TrackerApi::Client.new(token: Settings[:pivotal_api_key])
13
- self.__setobj__(@client)
14
14
  @limit = Settings[:limit] || 10
15
15
  end
16
16
 
@@ -128,6 +128,5 @@ module PT
128
128
  def create_story(args)
129
129
  project.create_story(args)
130
130
  end
131
-
132
131
  end
133
132
  end
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  require 'config'
2
3
  module PT
3
4
  class Configuration
@@ -60,6 +61,5 @@ module PT
60
61
  def stringify(hash)
61
62
  hash.inject({}) { |memo, (k,v)| memo[k.to_s] = v; memo }
62
63
  end
63
-
64
64
  end
65
65
  end
data/lib/pt/data_row.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  require 'iconv' unless "older_ruby?".respond_to?(:force_encoding)
2
3
 
3
4
  module PT
data/lib/pt/data_table.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # require 'hirb'
2
3
  # require 'hirb-unicode'
3
4
  require 'terminal-table'
@@ -6,8 +7,6 @@ module PT
6
7
 
7
8
  class DataTable
8
9
 
9
- # extend ::Hirb::Console
10
-
11
10
  def initialize(dataset, title=nil)
12
11
  @title = title
13
12
  @rows = dataset.map{ |row| DataRow.new(row, dataset) }
data/lib/pt/io.rb CHANGED
@@ -1,4 +1,9 @@
1
- require 'highline'
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require "tty-prompt"
5
+ require "tty-markdown"
6
+
2
7
  module PT
3
8
  module IO
4
9
 
@@ -22,7 +27,7 @@ module PT
22
27
  end
23
28
 
24
29
  def compact_message(*msg)
25
- puts "#{split_lines(msg)}"
30
+ TTY::Markdown.parse "#{split_lines(msg)}"
26
31
  end
27
32
 
28
33
  def error(*msg)
@@ -34,12 +39,16 @@ module PT
34
39
  exit
35
40
  end
36
41
 
42
+ def prompt
43
+ @prompt ||= TTY::Prompt.new
44
+ end
45
+
37
46
  def ask(msg)
38
- HighLine.new.ask(msg)
47
+ prompt.ask(msg)
39
48
  end
40
49
 
41
50
  def ask_secret(msg)
42
- HighLine.new.ask("#{msg.bold}"){ |q| q.echo = '*' }
51
+ prompt.mask(msg)
43
52
  end
44
53
 
45
54
  def user_s
@@ -90,7 +99,7 @@ module PT
90
99
  end
91
100
 
92
101
  def select_story_from_paginated_table(options={}, &block)
93
- prompt = "Please select a story"
102
+ prompt_message = "Please select a story"
94
103
  page = 0
95
104
  no_request = false
96
105
  begin
@@ -101,12 +110,12 @@ module PT
101
110
  title = (options[:title] || 'Stories').to_s + " [#{current_page}/#{total_page}]"
102
111
  table = TasksTable.new(stories, title)
103
112
  clear
104
- say "Pivotal Tracker Command Line v#{PT::VERSION}".magenta
113
+ prompt.say "Pivotal Tracker Command Line v#{PT::VERSION}".magenta
105
114
  say '========================================================================================='.green
106
115
  help = "[num]: select | [f]ilter | #{'[n]ext |' if current_page < total_page} #{'[p]revious |' if current_page > 1} [c]reate | [r]efresh | [q]uit"
107
116
  say help.green
108
117
  say '========================================================================================='.green
109
- case story = select(prompt, table)
118
+ case story = select(prompt_message, table)
110
119
  when TrackerApi::Resources::Story
111
120
  say "Action for >> '#{story.name.green}'[#{story.story_type}]"
112
121
  action = (options[:default_action] ? send("#{options[:default_action]}_story", story) : choose_action(story))
data/lib/pt/version.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  module PT
2
- VERSION = '1.0.1'
3
+ VERSION = '2.1.0'
3
4
  end
data/sorbet/config ADDED
@@ -0,0 +1,3 @@
1
+ --dir
2
+ .
3
+ --ignore=/vendor/bundle
@@ -0,0 +1,671 @@
1
+ # This file is autogenerated. Do not edit it by hand. Regenerate it with:
2
+ # srb rbi gems
3
+
4
+ # typed: ignore
5
+ #
6
+ # If you would like to make changes to this file, great! Please create the gem's shim here:
7
+ #
8
+ # https://github.com/sorbet/sorbet-typed/new/master?filename=lib/activesupport/all/activesupport.rbi
9
+ #
10
+ # activesupport-6.1.3.2
11
+
12
+ class Hash
13
+ def _deep_transform_keys_in_object!(object, &block); end
14
+ def _deep_transform_keys_in_object(object, &block); end
15
+ def as_json(options = nil); end
16
+ def assert_valid_keys(*valid_keys); end
17
+ def blank?; end
18
+ def deep_merge!(other_hash, &block); end
19
+ def deep_merge(other_hash, &block); end
20
+ def deep_stringify_keys!; end
21
+ def deep_stringify_keys; end
22
+ def deep_symbolize_keys!; end
23
+ def deep_symbolize_keys; end
24
+ def deep_transform_keys!(&block); end
25
+ def deep_transform_keys(&block); end
26
+ def except!(*keys); end
27
+ def except(*keys); end
28
+ def extract!(*keys); end
29
+ def extractable_options?; end
30
+ def nested_under_indifferent_access; end
31
+ def reverse_merge!(other_hash); end
32
+ def reverse_merge(other_hash); end
33
+ def reverse_update(other_hash); end
34
+ def slice!(*keys); end
35
+ def stringify_keys!; end
36
+ def stringify_keys; end
37
+ def symbolize_keys!; end
38
+ def symbolize_keys; end
39
+ def to_options!; end
40
+ def to_options; end
41
+ def with_defaults!(other_hash); end
42
+ def with_defaults(other_hash); end
43
+ def with_indifferent_access; end
44
+ end
45
+ module ActiveSupport
46
+ def parse_json_times; end
47
+ def parse_json_times=(val); end
48
+ def self.escape_html_entities_in_json(**, &&); end
49
+ def self.escape_html_entities_in_json=(arg); end
50
+ def self.json_encoder(**, &&); end
51
+ def self.json_encoder=(arg); end
52
+ def self.parse_json_times; end
53
+ def self.parse_json_times=(val); end
54
+ def self.time_precision(**, &&); end
55
+ def self.time_precision=(arg); end
56
+ def self.use_standard_json_time_format(**, &&); end
57
+ def self.use_standard_json_time_format=(arg); end
58
+ extend ActiveSupport::LazyLoadHooks
59
+ end
60
+ class ActiveSupport::HashWithIndifferentAccess < Hash
61
+ def [](key); end
62
+ def []=(key, value); end
63
+ def assoc(key); end
64
+ def compact; end
65
+ def convert_key(key); end
66
+ def convert_value(value, conversion: nil); end
67
+ def deep_stringify_keys!; end
68
+ def deep_stringify_keys; end
69
+ def deep_symbolize_keys; end
70
+ def default(*args); end
71
+ def delete(key); end
72
+ def dig(*args); end
73
+ def dup; end
74
+ def except(*keys); end
75
+ def extractable_options?; end
76
+ def fetch(key, *extras); end
77
+ def fetch_values(*indices, &block); end
78
+ def has_key?(key); end
79
+ def include?(key); end
80
+ def initialize(constructor = nil); end
81
+ def key?(key); end
82
+ def member?(key); end
83
+ def merge!(*other_hashes, &block); end
84
+ def merge(*hashes, &block); end
85
+ def nested_under_indifferent_access; end
86
+ def regular_update(*arg0); end
87
+ def regular_writer(arg0, arg1); end
88
+ def reject(*args, &block); end
89
+ def replace(other_hash); end
90
+ def reverse_merge!(other_hash); end
91
+ def reverse_merge(other_hash); end
92
+ def select(*args, &block); end
93
+ def self.[](*args); end
94
+ def set_defaults(target); end
95
+ def slice!(*keys); end
96
+ def slice(*keys); end
97
+ def store(key, value); end
98
+ def stringify_keys!; end
99
+ def stringify_keys; end
100
+ def symbolize_keys; end
101
+ def to_hash; end
102
+ def to_options!; end
103
+ def to_options; end
104
+ def transform_keys!; end
105
+ def transform_keys(*args, &block); end
106
+ def transform_values(*args, &block); end
107
+ def update(*other_hashes, &block); end
108
+ def update_with_single_argument(other_hash, block); end
109
+ def values_at(*keys); end
110
+ def with_defaults!(other_hash); end
111
+ def with_defaults(other_hash); end
112
+ def with_indifferent_access; end
113
+ def without(*keys); end
114
+ end
115
+ class Object < BasicObject
116
+ def as_json(options = nil); end
117
+ def blank?; end
118
+ def instance_values; end
119
+ def instance_variable_names; end
120
+ def presence; end
121
+ def present?; end
122
+ include ActiveSupport::Tryable
123
+ end
124
+ class NilClass
125
+ def as_json(options = nil); end
126
+ def blank?; end
127
+ def try!(_method_name = nil, *arg1); end
128
+ def try(_method_name = nil, *arg1); end
129
+ end
130
+ class FalseClass
131
+ def as_json(options = nil); end
132
+ def blank?; end
133
+ end
134
+ class TrueClass
135
+ def as_json(options = nil); end
136
+ def blank?; end
137
+ end
138
+ class Array
139
+ def as_json(options = nil); end
140
+ def blank?; end
141
+ def extract_options!; end
142
+ end
143
+ class String
144
+ def as_json(options = nil); end
145
+ def blank?; end
146
+ def camelcase(first_letter = nil); end
147
+ def camelize(first_letter = nil); end
148
+ def classify; end
149
+ def constantize; end
150
+ def dasherize; end
151
+ def deconstantize; end
152
+ def demodulize; end
153
+ def foreign_key(separate_class_name_and_id_with_underscore = nil); end
154
+ def humanize(capitalize: nil, keep_id_suffix: nil); end
155
+ def is_utf8?; end
156
+ def mb_chars; end
157
+ def parameterize(separator: nil, preserve_case: nil, locale: nil); end
158
+ def pluralize(count = nil, locale = nil); end
159
+ def safe_constantize; end
160
+ def singularize(locale = nil); end
161
+ def tableize; end
162
+ def titlecase(keep_id_suffix: nil); end
163
+ def titleize(keep_id_suffix: nil); end
164
+ def underscore; end
165
+ def upcase_first; end
166
+ end
167
+ class Numeric
168
+ def as_json(options = nil); end
169
+ def blank?; end
170
+ end
171
+ class Time
172
+ def as_json(options = nil); end
173
+ def blank?; end
174
+ def formatted_offset(colon = nil, alternate_utc_string = nil); end
175
+ def rfc3339(fraction_digits = nil); end
176
+ def to_default_s; end
177
+ def to_formatted_s(format = nil); end
178
+ end
179
+ module ActiveSupport::Tryable
180
+ def try!(method_name = nil, *args, &b); end
181
+ def try(method_name = nil, *args, &b); end
182
+ end
183
+ class Delegator < BasicObject
184
+ include ActiveSupport::Tryable
185
+ end
186
+ module ActiveSupport::LazyLoadHooks
187
+ def execute_hook(name, base, options, block); end
188
+ def on_load(name, options = nil, &block); end
189
+ def run_load_hooks(name, base = nil); end
190
+ def self.extended(base); end
191
+ def with_execution_control(name, block, once); end
192
+ end
193
+ module ActiveSupport::Inflector
194
+ def apply_inflections(word, rules, locale = nil); end
195
+ def camelize(term, uppercase_first_letter = nil); end
196
+ def classify(table_name); end
197
+ def const_regexp(camel_cased_word); end
198
+ def constantize(camel_cased_word); end
199
+ def dasherize(underscored_word); end
200
+ def deconstantize(path); end
201
+ def demodulize(path); end
202
+ def foreign_key(class_name, separate_class_name_and_id_with_underscore = nil); end
203
+ def humanize(lower_case_and_underscored_word, capitalize: nil, keep_id_suffix: nil); end
204
+ def inflections(locale = nil); end
205
+ def ordinal(number); end
206
+ def ordinalize(number); end
207
+ def parameterize(string, separator: nil, preserve_case: nil, locale: nil); end
208
+ def pluralize(word, locale = nil); end
209
+ def safe_constantize(camel_cased_word); end
210
+ def singularize(word, locale = nil); end
211
+ def tableize(class_name); end
212
+ def titleize(word, keep_id_suffix: nil); end
213
+ def transliterate(string, replacement = nil, locale: nil); end
214
+ def underscore(camel_cased_word); end
215
+ def upcase_first(string); end
216
+ extend ActiveSupport::Inflector
217
+ extend ActiveSupport::Inflector
218
+ end
219
+ class ActiveSupport::Inflector::Inflections
220
+ def acronym(word); end
221
+ def acronyms; end
222
+ def acronyms_camelize_regex; end
223
+ def acronyms_underscore_regex; end
224
+ def clear(scope = nil); end
225
+ def define_acronym_regex_patterns; end
226
+ def human(rule, replacement); end
227
+ def humans; end
228
+ def initialize; end
229
+ def initialize_dup(orig); end
230
+ def irregular(singular, plural); end
231
+ def plural(rule, replacement); end
232
+ def plurals; end
233
+ def self.instance(locale = nil); end
234
+ def singular(rule, replacement); end
235
+ def singulars; end
236
+ def uncountable(*words); end
237
+ def uncountables; end
238
+ end
239
+ class ActiveSupport::Inflector::Inflections::Uncountables < Array
240
+ def <<(*word); end
241
+ def add(words); end
242
+ def delete(entry); end
243
+ def initialize; end
244
+ def to_regex(string); end
245
+ def uncountable?(str); end
246
+ end
247
+ module ActiveSupport::Multibyte
248
+ def self.proxy_class; end
249
+ def self.proxy_class=(klass); end
250
+ end
251
+ class Module
252
+ def cattr_accessor(*syms, instance_reader: nil, instance_writer: nil, instance_accessor: nil, default: nil, &blk); end
253
+ def cattr_reader(*syms, instance_reader: nil, instance_accessor: nil, default: nil, location: nil); end
254
+ def cattr_writer(*syms, instance_writer: nil, instance_accessor: nil, default: nil, location: nil); end
255
+ def delegate(*methods, to: nil, prefix: nil, allow_nil: nil, private: nil); end
256
+ def delegate_missing_to(target, allow_nil: nil); end
257
+ def deprecate(*method_names); end
258
+ def mattr_accessor(*syms, instance_reader: nil, instance_writer: nil, instance_accessor: nil, default: nil, &blk); end
259
+ def mattr_reader(*syms, instance_reader: nil, instance_accessor: nil, default: nil, location: nil); end
260
+ def mattr_writer(*syms, instance_writer: nil, instance_accessor: nil, default: nil, location: nil); end
261
+ def method_visibility(method); end
262
+ def redefine_method(method, &block); end
263
+ def redefine_singleton_method(method, &block); end
264
+ def silence_redefinition_of_method(method); end
265
+ end
266
+ class Module::DelegationError < NoMethodError
267
+ end
268
+ module ActiveSupport::JSON
269
+ def self.convert_dates_from(data); end
270
+ def self.decode(json); end
271
+ def self.encode(value, options = nil); end
272
+ def self.parse_error; end
273
+ end
274
+ module ActiveSupport::BigDecimalWithDefaultFormat
275
+ def to_s(format = nil); end
276
+ end
277
+ class ActiveSupport::TimeZone
278
+ def <=>(zone); end
279
+ def =~(re); end
280
+ def at(*args); end
281
+ def encode_with(coder); end
282
+ def formatted_offset(colon = nil, alternate_utc_string = nil); end
283
+ def init_with(coder); end
284
+ def initialize(name, utc_offset = nil, tzinfo = nil); end
285
+ def iso8601(str); end
286
+ def local(*args); end
287
+ def local_to_utc(time, dst = nil); end
288
+ def match?(re); end
289
+ def name; end
290
+ def now; end
291
+ def parse(str, now = nil); end
292
+ def parts_to_time(parts, now); end
293
+ def period_for_local(time, dst = nil); end
294
+ def period_for_utc(time); end
295
+ def periods_for_local(time); end
296
+ def rfc3339(str); end
297
+ def self.[](arg); end
298
+ def self.all; end
299
+ def self.clear; end
300
+ def self.country_zones(country_code); end
301
+ def self.create(*arg0); end
302
+ def self.find_tzinfo(name); end
303
+ def self.load_country_zones(code); end
304
+ def self.new(name); end
305
+ def self.seconds_to_utc_offset(seconds, colon = nil); end
306
+ def self.us_zones; end
307
+ def self.zones_map; end
308
+ def strptime(str, format, now = nil); end
309
+ def time_now; end
310
+ def to_s; end
311
+ def today; end
312
+ def tomorrow; end
313
+ def tzinfo; end
314
+ def utc_offset; end
315
+ def utc_to_local(time); end
316
+ def yesterday; end
317
+ include Comparable
318
+ end
319
+ class DateTime < Date
320
+ def <=>(other); end
321
+ def advance(options); end
322
+ def ago(seconds); end
323
+ def as_json(options = nil); end
324
+ def at_beginning_of_day; end
325
+ def at_beginning_of_hour; end
326
+ def at_beginning_of_minute; end
327
+ def at_end_of_day; end
328
+ def at_end_of_hour; end
329
+ def at_end_of_minute; end
330
+ def at_midday; end
331
+ def at_middle_of_day; end
332
+ def at_midnight; end
333
+ def at_noon; end
334
+ def beginning_of_day; end
335
+ def beginning_of_hour; end
336
+ def beginning_of_minute; end
337
+ def change(options); end
338
+ def default_inspect; end
339
+ def end_of_day; end
340
+ def end_of_hour; end
341
+ def end_of_minute; end
342
+ def formatted_offset(colon = nil, alternate_utc_string = nil); end
343
+ def getgm; end
344
+ def getlocal(utc_offset = nil); end
345
+ def getutc; end
346
+ def gmtime; end
347
+ def in(seconds); end
348
+ def inspect; end
349
+ def localtime(utc_offset = nil); end
350
+ def midday; end
351
+ def middle_of_day; end
352
+ def midnight; end
353
+ def noon; end
354
+ def nsec; end
355
+ def offset_in_seconds; end
356
+ def readable_inspect; end
357
+ def seconds_since_midnight; end
358
+ def seconds_since_unix_epoch; end
359
+ def seconds_until_end_of_day; end
360
+ def self.civil_from_format(utc_or_local, year, month = nil, day = nil, hour = nil, min = nil, sec = nil); end
361
+ def self.current; end
362
+ def since(seconds); end
363
+ def subsec; end
364
+ def to_default_s; end
365
+ def to_f; end
366
+ def to_formatted_s(format = nil); end
367
+ def to_i; end
368
+ def usec; end
369
+ def utc; end
370
+ def utc?; end
371
+ def utc_offset; end
372
+ end
373
+ module DateAndTime
374
+ end
375
+ module DateAndTime::Zones
376
+ def in_time_zone(zone = nil); end
377
+ def time_with_zone(time, zone); end
378
+ end
379
+ class Date
380
+ def as_json(options = nil); end
381
+ def default_inspect; end
382
+ def readable_inspect; end
383
+ def to_default_s; end
384
+ def to_formatted_s(format = nil); end
385
+ include DateAndTime::Zones
386
+ end
387
+ module ActiveSupport::ToJsonWithActiveSupportEncoder
388
+ def to_json(options = nil); end
389
+ end
390
+ class Struct
391
+ def as_json(options = nil); end
392
+ end
393
+ class Symbol
394
+ def as_json(options = nil); end
395
+ end
396
+ class Float < Numeric
397
+ def as_json(options = nil); end
398
+ end
399
+ class BigDecimal < Numeric
400
+ def as_json(options = nil); end
401
+ end
402
+ class Regexp
403
+ def as_json(options = nil); end
404
+ end
405
+ module Enumerable
406
+ def as_json(options = nil); end
407
+ end
408
+ class IO
409
+ def as_json(options = nil); end
410
+ end
411
+ class Range
412
+ def as_json(options = nil); end
413
+ end
414
+ class URI::Generic
415
+ def as_json(options = nil); end
416
+ end
417
+ class Pathname
418
+ def as_json(options = nil); end
419
+ end
420
+ class IPAddr
421
+ def as_json(options = nil); end
422
+ end
423
+ class Process::Status
424
+ def as_json(options = nil); end
425
+ end
426
+ class Exception
427
+ def as_json(options = nil); end
428
+ end
429
+ module ActiveSupport::JSON::Encoding
430
+ def self.escape_html_entities_in_json; end
431
+ def self.escape_html_entities_in_json=(arg0); end
432
+ def self.json_encoder; end
433
+ def self.json_encoder=(arg0); end
434
+ def self.time_precision; end
435
+ def self.time_precision=(arg0); end
436
+ def self.use_standard_json_time_format; end
437
+ def self.use_standard_json_time_format=(arg0); end
438
+ end
439
+ class ActiveSupport::JSON::Encoding::JSONGemEncoder
440
+ def encode(value); end
441
+ def initialize(options = nil); end
442
+ def jsonify(value); end
443
+ def options; end
444
+ def stringify(jsonified); end
445
+ end
446
+ class ActiveSupport::JSON::Encoding::JSONGemEncoder::EscapedString < String
447
+ def to_json(*arg0); end
448
+ def to_s; end
449
+ end
450
+ module ActiveSupport::Notifications
451
+ def self.instrument(name, payload = nil); end
452
+ def self.instrumenter; end
453
+ def self.monotonic_subscribe(pattern = nil, callback = nil, &block); end
454
+ def self.notifier; end
455
+ def self.notifier=(arg0); end
456
+ def self.publish(name, *args); end
457
+ def self.subscribe(pattern = nil, callback = nil, &block); end
458
+ def self.subscribed(callback, pattern = nil, monotonic: nil, &block); end
459
+ def self.unsubscribe(subscriber_or_name); end
460
+ end
461
+ class ActiveSupport::Notifications::Instrumenter
462
+ def finish(name, payload); end
463
+ def finish_with_state(listeners_state, name, payload); end
464
+ def id; end
465
+ def initialize(notifier); end
466
+ def instrument(name, payload = nil); end
467
+ def start(name, payload); end
468
+ def unique_id; end
469
+ end
470
+ class ActiveSupport::Notifications::Event
471
+ def <<(event); end
472
+ def allocations; end
473
+ def children; end
474
+ def cpu_time; end
475
+ def duration; end
476
+ def end; end
477
+ def finish!; end
478
+ def idle_time; end
479
+ def initialize(name, start, ending, transaction_id, payload); end
480
+ def name; end
481
+ def now; end
482
+ def now_allocations; end
483
+ def now_cpu; end
484
+ def parent_of?(event); end
485
+ def payload; end
486
+ def payload=(arg0); end
487
+ def start!; end
488
+ def time; end
489
+ def transaction_id; end
490
+ end
491
+ class ActiveSupport::Notifications::Fanout
492
+ def finish(name, id, payload, listeners = nil); end
493
+ def initialize; end
494
+ def listeners_for(name); end
495
+ def listening?(name); end
496
+ def lock; end
497
+ def locked?; end
498
+ def publish(name, *args); end
499
+ def start(name, id, payload); end
500
+ def subscribe(pattern = nil, callable = nil, monotonic: nil, &block); end
501
+ def synchronize(&block); end
502
+ def try_lock; end
503
+ def unlock; end
504
+ def unsubscribe(subscriber_or_name); end
505
+ def wait; end
506
+ include Mutex_m
507
+ end
508
+ module ActiveSupport::Notifications::Fanout::Subscribers
509
+ def self.new(pattern, listener, monotonic); end
510
+ def self.wrap_all(pattern, subscriber); end
511
+ end
512
+ class ActiveSupport::Notifications::Fanout::Subscribers::Matcher
513
+ def ===(name); end
514
+ def exclusions; end
515
+ def initialize(pattern); end
516
+ def pattern; end
517
+ def self.wrap(pattern); end
518
+ def unsubscribe!(name); end
519
+ end
520
+ class ActiveSupport::Notifications::Fanout::Subscribers::Evented
521
+ def finish(name, id, payload); end
522
+ def initialize(pattern, delegate); end
523
+ def matches?(name); end
524
+ def pattern; end
525
+ def publish(name, *args); end
526
+ def start(name, id, payload); end
527
+ def subscribed_to?(name); end
528
+ def unsubscribe!(name); end
529
+ end
530
+ class ActiveSupport::Notifications::Fanout::Subscribers::Timed < ActiveSupport::Notifications::Fanout::Subscribers::Evented
531
+ def finish(name, id, payload); end
532
+ def publish(name, *args); end
533
+ def start(name, id, payload); end
534
+ end
535
+ class ActiveSupport::Notifications::Fanout::Subscribers::MonotonicTimed < ActiveSupport::Notifications::Fanout::Subscribers::Evented
536
+ def finish(name, id, payload); end
537
+ def publish(name, *args); end
538
+ def start(name, id, payload); end
539
+ end
540
+ class ActiveSupport::Notifications::Fanout::Subscribers::EventObject < ActiveSupport::Notifications::Fanout::Subscribers::Evented
541
+ def build_event(name, id, payload); end
542
+ def finish(name, id, payload); end
543
+ def start(name, id, payload); end
544
+ end
545
+ class ActiveSupport::Notifications::Fanout::Subscribers::AllMessages
546
+ def finish(name, id, payload); end
547
+ def initialize(delegate); end
548
+ def matches?(arg0); end
549
+ def publish(name, *args); end
550
+ def start(name, id, payload); end
551
+ def subscribed_to?(name); end
552
+ def unsubscribe!(*arg0); end
553
+ end
554
+ module ActiveSupport::PerThreadRegistry
555
+ def instance; end
556
+ def method_missing(name, *args, &block); end
557
+ def self.extended(object); end
558
+ end
559
+ class ActiveSupport::Notifications::InstrumentationRegistry
560
+ def initialize; end
561
+ def instrumenter_for(notifier); end
562
+ extend ActiveSupport::PerThreadRegistry
563
+ end
564
+ class ActiveSupport::Deprecation
565
+ def self.allow(**, &&); end
566
+ def self.behavior(**, &&); end
567
+ def self.behavior=(arg); end
568
+ def self.debug(**, &&); end
569
+ def self.debug=(arg); end
570
+ def self.deprecate_methods(**, &&); end
571
+ def self.deprecation_horizon(**, &&); end
572
+ def self.deprecation_horizon=(arg); end
573
+ def self.deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil); end
574
+ def self.disallowed_behavior(**, &&); end
575
+ def self.disallowed_behavior=(arg); end
576
+ def self.disallowed_warnings(**, &&); end
577
+ def self.disallowed_warnings=(arg); end
578
+ def self.gem_name(**, &&); end
579
+ def self.gem_name=(arg); end
580
+ def self.initialize(**, &&); end
581
+ def self.silence(**, &&); end
582
+ def self.silenced(**, &&); end
583
+ def self.silenced=(arg); end
584
+ def self.warn(message = nil, callstack = nil); end
585
+ extend ActiveSupport::Deprecation::InstanceDelegator::ClassMethods
586
+ extend Singleton::SingletonClassMethods
587
+ include ActiveSupport::Deprecation::Behavior
588
+ include ActiveSupport::Deprecation::Disallowed
589
+ include ActiveSupport::Deprecation::InstanceDelegator
590
+ include ActiveSupport::Deprecation::MethodWrapper
591
+ include ActiveSupport::Deprecation::Reporting
592
+ include Singleton
593
+ end
594
+ module ActiveSupport::Deprecation::InstanceDelegator
595
+ def self.included(base); end
596
+ end
597
+ module ActiveSupport::Deprecation::InstanceDelegator::ClassMethods
598
+ def include(included_module); end
599
+ def method_added(method_name); end
600
+ end
601
+ module ActiveSupport::Deprecation::InstanceDelegator::OverrideDelegators
602
+ def deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil); end
603
+ def warn(message = nil, callstack = nil); end
604
+ end
605
+ class ActiveSupport::DeprecationException < StandardError
606
+ end
607
+ module ActiveSupport::Deprecation::Behavior
608
+ def arity_coerce(behavior); end
609
+ def behavior; end
610
+ def behavior=(behavior); end
611
+ def debug; end
612
+ def debug=(arg0); end
613
+ def disallowed_behavior; end
614
+ def disallowed_behavior=(behavior); end
615
+ end
616
+ module ActiveSupport::Deprecation::Reporting
617
+ def _extract_callstack(callstack); end
618
+ def allow(allowed_warnings = nil, if: nil, &block); end
619
+ def deprecated_method_warning(method_name, message = nil); end
620
+ def deprecation_caller_message(callstack); end
621
+ def deprecation_message(callstack, message = nil); end
622
+ def deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil); end
623
+ def extract_callstack(callstack); end
624
+ def gem_name; end
625
+ def gem_name=(arg0); end
626
+ def ignored_callstack(path); end
627
+ def silence(&block); end
628
+ def silenced; end
629
+ def silenced=(arg0); end
630
+ def warn(message = nil, callstack = nil); end
631
+ end
632
+ module ActiveSupport::Deprecation::Disallowed
633
+ def deprecation_disallowed?(message); end
634
+ def disallowed_warnings; end
635
+ def disallowed_warnings=(arg0); end
636
+ def explicitly_allowed?(message); end
637
+ end
638
+ module ActiveSupport::Deprecation::DeprecatedConstantAccessor
639
+ def self.included(base); end
640
+ end
641
+ module ActiveSupport::Deprecation::MethodWrapper
642
+ def deprecate_methods(target_module, *method_names); end
643
+ end
644
+ class ActiveSupport::Deprecation::DeprecationProxy
645
+ def inspect; end
646
+ def method_missing(called, *args, &block); end
647
+ def self.new(*args, &block); end
648
+ end
649
+ class ActiveSupport::Deprecation::DeprecatedObjectProxy < ActiveSupport::Deprecation::DeprecationProxy
650
+ def initialize(object, message, deprecator = nil); end
651
+ def target; end
652
+ def warn(callstack, called, args); end
653
+ end
654
+ class ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy < ActiveSupport::Deprecation::DeprecationProxy
655
+ def initialize(instance, method, var = nil, deprecator = nil); end
656
+ def target; end
657
+ def warn(callstack, called, args); end
658
+ end
659
+ class ActiveSupport::Deprecation::DeprecatedConstantProxy < Module
660
+ def class; end
661
+ def const_missing(name); end
662
+ def hash(**, &&); end
663
+ def initialize(old_const, new_const, deprecator = nil, message: nil); end
664
+ def inspect; end
665
+ def instance_methods(**, &&); end
666
+ def method_missing(called, *args, &block); end
667
+ def name(**, &&); end
668
+ def respond_to?(**, &&); end
669
+ def self.new(*args, **options, &block); end
670
+ def target; end
671
+ end