Commit ed15711

mo khan <mo@mokhan.ca>
2026-09-12 21:58:11
style: apply rubocop autocorrect
1 parent 7819e00
Changed files (5)
lib/elelem/mcp/client.rb
@@ -49,7 +49,7 @@ module Elelem
           file = File.expand_path(path)
           next unless File.exist?(file)
 
-          config = JSON.parse(IO.read(file))
+          config = JSON.parse(File.read(file))
           servers = config.fetch("mcpServers", {})
           merged["mcpServers"] = (merged["mcpServers"] || {}).merge(servers)
         end
@@ -92,10 +92,10 @@ module Elelem
 
       def handshake!
         request("initialize", {
-          protocolVersion: "2025-06-18",
-          capabilities: {},
-          clientInfo: { name: "elelem", version: Elelem::MCP::VERSION }
-        })
+                  protocolVersion: "2025-06-18",
+                  capabilities: {},
+                  clientInfo: { name: "elelem", version: Elelem::MCP::VERSION }
+                })
         notify("notifications/initialized")
       end
     end
@@ -105,7 +105,9 @@ module Elelem
 
       def initialize(command:, args: [], env: {})
         resolved_env = env.transform_values do |v|
-          v.gsub(/\$\{(\w+)\}/) { ENV[$1] || raise("Missing environment variable: #{$1}") }
+          v.gsub(/\$\{(\w+)\}/) do
+            ENV[::Regexp.last_match(1)] || raise("Missing environment variable: #{::Regexp.last_match(1)}")
+          end
         end
         @stdin, @stdout, @stderr, @wait = Open3.popen3(resolved_env, command, *args)
         @id = 0
@@ -172,7 +174,7 @@ module Elelem
       def resolve_headers(headers)
         headers.transform_values do |v|
           v.gsub(/\$\{(\w+)\}/) do
-            ENV[$1] || raise("Missing environment variable: #{$1}")
+            ENV[::Regexp.last_match(1)] || raise("Missing environment variable: #{::Regexp.last_match(1)}")
           end
         end
       end
lib/elelem/mcp/oauth.rb
@@ -3,8 +3,8 @@
 module Elelem
   module MCP
     class OAuth
-      CALLBACK_PORT = 18273
-      REDIRECT_URI = "http://127.0.0.1:#{CALLBACK_PORT}/callback"
+      CALLBACK_PORT = 18_273
+      REDIRECT_URI = "http://127.0.0.1:#{CALLBACK_PORT}/callback".freeze
 
       def initialize(resource_url, http: HttpAdapter.new)
         @resource_url = resource_url
@@ -138,11 +138,9 @@ module Elelem
       end
 
       def open_browser(url)
-        commands = ["xdg-open", "open", "start"]
-        commands.each do |cmd|
-          return if system(cmd, url, out: File::NULL, err: File::NULL)
-        end
-        warn "Open this URL in your browser: #{url}"
+        commands = %w[xdg-open open start]
+        opened = commands.any? { |cmd| system(cmd, url, out: File::NULL, err: File::NULL) }
+        warn "Open this URL in your browser: #{url}" unless opened
       end
 
       def wait_for_callback(expected_state)
lib/elelem/mcp.rb
@@ -33,7 +33,7 @@ Elelem.configure do |config|
           &tool[:fn]
         )
       end
-    rescue => e
+    rescue StandardError => e
       warn "MCP failed: #{e.message}"
     end
   end
spec/elelem/mcp/oauth_spec.rb
@@ -15,9 +15,9 @@ RSpec.describe Elelem::MCP::OAuth do
     context "with valid cached token" do
       it "returns cached access_token" do
         allow(storage).to receive(:load).with(resource_url).and_return({
-          access_token: "cached_token",
-          expires_at: Time.now.to_i + 3600
-        })
+                                                                         access_token: "cached_token",
+                                                                         expires_at: Time.now.to_i + 3600
+                                                                       })
 
         expect(subject.token).to eq("cached_token")
       end
@@ -34,14 +34,14 @@ RSpec.describe Elelem::MCP::OAuth do
 
       it "refreshes using refresh_token" do
         allow(storage).to receive(:load).with(resource_url).and_return({
-          access_token: "old_token",
-          refresh_token: "refresh_abc",
-          expires_at: Time.now.to_i - 100
-        })
+                                                                         access_token: "old_token",
+                                                                         refresh_token: "refresh_abc",
+                                                                         expires_at: Time.now.to_i - 100
+                                                                       })
 
         allow(storage).to receive(:load_client).with(resource_url).and_return({
-          client_id: "elelem-123"
-        })
+                                                                                client_id: "elelem-123"
+                                                                              })
 
         resource_response = double(body: { "authorization_servers" => ["https://auth.example.com"] }.to_json)
         auth_response = double(body: auth_metadata.to_json)
spec/elelem/mcp/token_storage_spec.rb
@@ -7,7 +7,11 @@ RSpec.describe Elelem::MCP::TokenStorage do
   let(:token_dir) { File.expand_path("~/.config/elelem/tokens") }
 
   after do
-    Dir.glob(File.join(token_dir, "*.json")).each { |f| File.delete(f) rescue nil }
+    Dir.glob(File.join(token_dir, "*.json")).each do |f|
+      File.delete(f)
+    rescue StandardError
+      nil
+    end
   end
 
   describe "#save and #load" do