ruby-lsp-rake 0.2.0 → 0.3.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: 5eecc86f8a92c3d2f81d686d722f17d22af64985b63ca6ef2db1ca8fc604d773
4
- data.tar.gz: 4f15df1db846b1f43063cffc2a32326ea515073993d3497160a21cd9a7f15571
3
+ metadata.gz: 8847926c5182d4db9694d07d0372074c238b9e5f4529efeb287fbc5b52a99031
4
+ data.tar.gz: 8cddf883be530d635bdad6a3d663c44afcfa61554c44e86628fb8f296838f74c
5
5
  SHA512:
6
- metadata.gz: d9d2bf49d58f3f86bbb9c64617f62b4b982c9d39dff124b3d82b2ffdd0647ae6a7ac47d2b7d13cca9bd5179308d64bed8e0c3df07b644990af0573ab2c6a16b9
7
- data.tar.gz: 4a8c7bce406a07a7641f98efb9b73ea516cc33bf38278253f2674f3fc68381b101e6572eb32ffb3067935c59470f5bd44b62e4952b32adfb7717079f33ac53e6
6
+ metadata.gz: 338cda3f5766301836692dd8122756c77725714052686d5d2fed232cc2aa0e9ad2efc2e0ad5b570b04355959fb393208d37c4b10b482aa995b5a146c140e77eb
7
+ data.tar.gz: d26821cfb522050d68cbc4be6c78577d7f269695ff47c99e2ec6e99c47c6d7adf4ae1abb700a414a3be5828d3824d3926ac85942776f50871cb20c903c3266f7
data/.rubocop.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 3.0
3
+ NewCops: disable
3
4
 
4
5
  Style/StringLiterals:
5
6
  EnforcedStyle: double_quotes
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ require "rubocop/rake_task"
9
9
 
10
10
  RuboCop::RakeTask.new
11
11
 
12
- task default: %i[test rubocop]
12
+ task default: %i[test rubocop srb:tc]
13
13
 
14
14
  namespace :srb do
15
15
  desc "Run sorbet type check"
@@ -5,6 +5,7 @@ require "ruby_lsp/addon"
5
5
  require_relative "indexing_enhancement"
6
6
  require_relative "hover"
7
7
  require_relative "definition"
8
+ require_relative "code_lens"
8
9
 
9
10
  module RubyLsp
10
11
  module Rake
@@ -54,6 +55,17 @@ module RubyLsp
54
55
  def create_definition_listener(response_builder, _uri, node_context, dispatcher)
55
56
  Definition.new(response_builder, node_context, @index, dispatcher)
56
57
  end
58
+
59
+ sig do
60
+ override.params(
61
+ response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::CodeLens],
62
+ uri: URI::Generic,
63
+ dispatcher: Prism::Dispatcher
64
+ ).void
65
+ end
66
+ def create_code_lens_listener(response_builder, uri, dispatcher)
67
+ CodeLens.new(response_builder, uri, dispatcher)
68
+ end
57
69
  end
58
70
  end
59
71
  end
@@ -0,0 +1,89 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module RubyLsp
5
+ module Rake
6
+ class CodeLens # rubocop:disable Style/Documentation
7
+ extend T::Sig
8
+ include Requests::Support::Common
9
+
10
+ sig do
11
+ params(
12
+ response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::CodeLens],
13
+ uri: URI::Generic,
14
+ dispatcher: Prism::Dispatcher
15
+ ).void
16
+ end
17
+ def initialize(response_builder, uri, dispatcher)
18
+ @response_builder = response_builder
19
+ @path = T.let(T.unsafe(uri).to_standardized_path, T.nilable(String))
20
+ @namespace_stack = []
21
+
22
+ dispatcher.register(self, :on_call_node_enter, :on_call_node_leave)
23
+ end
24
+
25
+ sig { params(node: Prism::CallNode).void }
26
+ def on_call_node_enter(node) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
27
+ return unless node.receiver.nil?
28
+ return unless node.name == :task || node.name == :namespace
29
+
30
+ arguments = node.arguments&.arguments
31
+ return unless arguments
32
+
33
+ arg = arguments.first
34
+ name = case arg
35
+ when Prism::StringNode
36
+ arg.content
37
+ when Prism::SymbolNode
38
+ arg.value
39
+ when Prism::KeywordHashNode
40
+ kh = arg.child_nodes.first
41
+ case kh
42
+ when Prism::AssocNode
43
+ k = kh.key
44
+ case k
45
+ when Prism::StringNode
46
+ k.content
47
+ when Prism::SymbolNode
48
+ k.value
49
+ end
50
+ end
51
+ end
52
+
53
+ return if name.nil?
54
+
55
+ if node.name == :namespace
56
+ @namespace_stack << name
57
+ return
58
+ end
59
+
60
+ task_name = [*@namespace_stack, name].join(":")
61
+
62
+ @response_builder << create_code_lens(
63
+ node,
64
+ title: "▶ Run In Terminal",
65
+ command_name: "rubyLsp.runTestInTerminal",
66
+ arguments: [
67
+ @path,
68
+ task_name,
69
+ "rake #{task_name}",
70
+ {
71
+ start_line: node.location.start_line - 1,
72
+ start_column: node.location.start_column,
73
+ end_line: node.location.end_line - 1,
74
+ end_column: node.location.end_column
75
+ }
76
+ ],
77
+ data: { type: "rake" }
78
+ )
79
+ end
80
+
81
+ sig { params(node: Prism::CallNode).void }
82
+ def on_call_node_leave(node)
83
+ return unless node.name == :namespace
84
+
85
+ @namespace_stack.pop
86
+ end
87
+ end
88
+ end
89
+ end
@@ -78,7 +78,7 @@ module RubyLsp
78
78
  task_name = "task:#{name}"
79
79
  return unless @index.indexed? task_name
80
80
 
81
- entries = @index[task_name]
81
+ entries = T.must(@index[task_name])
82
82
 
83
83
  # refer to: https://github.com/Shopify/ruby-lsp-rails/blob/b7791290fb59b06dc99e28a991ee0607e3931a1e/lib/ruby_lsp/ruby_lsp_rails/definition.rb#L141-L152
84
84
  entries.each do |entry|
@@ -3,6 +3,6 @@
3
3
 
4
4
  module RubyLsp
5
5
  module Rake
6
- VERSION = "0.2.0"
6
+ VERSION = "0.3.0"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lsp-rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koji NAKAMURA
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-01-22 00:00:00.000000000 Z
10
+ date: 2025-01-27 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ruby-lsp
@@ -36,6 +36,7 @@ files:
36
36
  - Rakefile
37
37
  - img/dependency_task_links_on_hover.png
38
38
  - lib/ruby_lsp/ruby_lsp_rake/addon.rb
39
+ - lib/ruby_lsp/ruby_lsp_rake/code_lens.rb
39
40
  - lib/ruby_lsp/ruby_lsp_rake/definition.rb
40
41
  - lib/ruby_lsp/ruby_lsp_rake/hover.rb
41
42
  - lib/ruby_lsp/ruby_lsp_rake/indexing_enhancement.rb