Class: SwarmSDK::V3::Tools::Grep

Inherits:
Base
  • Object
show all
Defined in:
lib/swarm_sdk/v3/tools/grep.rb

Overview

Grep tool for searching file contents using ripgrep

Powerful search with regex support, context lines, and file filtering.

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#name

Constructor Details

#initialize(directory:) ⇒ Grep

Returns a new instance of Grep.

Parameters:

  • directory (String)

    Working directory for searches



85
86
87
88
# File 'lib/swarm_sdk/v3/tools/grep.rb', line 85

def initialize(directory:)
  super()
  @directory = File.expand_path(directory)
end

Class Method Details

.creation_requirementsArray<Symbol>

Returns Constructor requirements.

Returns:

  • (Array<Symbol>)

    Constructor requirements



12
13
14
# File 'lib/swarm_sdk/v3/tools/grep.rb', line 12

def creation_requirements
  [:directory]
end

Instance Method Details

#execute(pattern:, path: nil, glob: nil, type: nil, output_mode: "files_with_matches", case_insensitive: false, multiline: false, context_before: nil, context_after: nil, context: nil, show_line_numbers: false, head_limit: nil) ⇒ String

Execute content search

Returns:

  • (String)

    Search results or error



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/swarm_sdk/v3/tools/grep.rb', line 93

def execute(
  pattern:,
  path: nil,
  glob: nil,
  type: nil,
  output_mode: "files_with_matches",
  case_insensitive: false,
  multiline: false,
  context_before: nil,
  context_after: nil,
  context: nil,
  show_line_numbers: false,
  head_limit: nil
)
  return validation_error("pattern is required") if pattern.nil? || pattern.empty?

  search_path = resolve_search_path(path)

  valid_modes = ["content", "files_with_matches", "count"]
  return validation_error("output_mode must be one of: #{valid_modes.join(", ")}") unless valid_modes.include?(output_mode)

  cmd = build_command(
    pattern: pattern,
    path: search_path,
    glob: glob,
    type: type,
    output_mode: output_mode,
    case_insensitive: case_insensitive,
    multiline: multiline,
    context_before: context_before,
    context_after: context_after,
    context: context,
    show_line_numbers: show_line_numbers,
  )

  run_ripgrep(cmd, pattern, head_limit)
rescue StandardError => e
  error("Unexpected error: #{e.class.name} - #{e.message}")
end