ruby-lsp-rake 0.2.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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