ruby-lsp-rake 0.2.0 → 0.3.1

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: 8884fa3b25b2b2f0a66a3866682fd37e30d238515d5856d4e2fc045115634193
4
+ data.tar.gz: 2bc155583d814d4362109e7345a651e914c36e9e127dc8d3a73127eaf26bedb2
5
5
  SHA512:
6
- metadata.gz: d9d2bf49d58f3f86bbb9c64617f62b4b982c9d39dff124b3d82b2ffdd0647ae6a7ac47d2b7d13cca9bd5179308d64bed8e0c3df07b644990af0573ab2c6a16b9
7
- data.tar.gz: 4a8c7bce406a07a7641f98efb9b73ea516cc33bf38278253f2674f3fc68381b101e6572eb32ffb3067935c59470f5bd44b62e4952b32adfb7717079f33ac53e6
6
+ metadata.gz: 788c3316edf11ea8e8c99d280690e18f43a17888916fcdefaec5566db2f97f8ef6f946bd46352e0041b4724315d2f79f1f747e47a76252956bc315672e4f3774
7
+ data.tar.gz: 94f04a49c5a281dbe8d92d248f7bea0cc1c7e5121862e84234fe95110ecf335b9b59a7fb7088010402f2dd18f7779967de4d0e016d293d3892210c633cbd735e
data/.rubocop.yml CHANGED
@@ -1,8 +1,13 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 3.0
3
+ NewCops: disable
3
4
 
4
5
  Style/StringLiterals:
5
6
  EnforcedStyle: double_quotes
6
7
 
7
8
  Style/StringLiteralsInInterpolation:
8
9
  EnforcedStyle: double_quotes
10
+
11
+ Naming/FileName:
12
+ Exclude:
13
+ - "lib/ruby-lsp-rake.rb"
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"
@@ -0,0 +1,4 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "ruby_lsp_rake/version"
@@ -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.1"
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.1
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-29 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ruby-lsp
@@ -35,7 +35,9 @@ files:
35
35
  - README.md
36
36
  - Rakefile
37
37
  - img/dependency_task_links_on_hover.png
38
+ - lib/ruby-lsp-rake.rb
38
39
  - lib/ruby_lsp/ruby_lsp_rake/addon.rb
40
+ - lib/ruby_lsp/ruby_lsp_rake/code_lens.rb
39
41
  - lib/ruby_lsp/ruby_lsp_rake/definition.rb
40
42
  - lib/ruby_lsp/ruby_lsp_rake/hover.rb
41
43
  - lib/ruby_lsp/ruby_lsp_rake/indexing_enhancement.rb