Class: Hedra::BaselineCLI
- Inherits:
-
Thor
- Object
- Thor
- Hedra::BaselineCLI
- Defined in:
- lib/hedra/cli.rb
Instance Method Summary collapse
Instance Method Details
#compare(name, target) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/hedra/cli.rb', line 64 def compare(name, target) baseline = Baseline.new urls = [:file] ? File.readlines(target).map(&:strip).reject(&:empty?) : [target] client = HttpClient.new analyzer = Analyzer.new current_results = [] urls.each do |url| response = client.get(url) result = analyzer.analyze(url, response.headers.to_h) current_results << result rescue StandardError => e warn "Failed to scan #{url}: #{e.message}" end comparisons = baseline.compare(name, current_results) print_comparisons(comparisons) if [:output] File.write([:output], JSON.pretty_generate(comparisons)) puts "Comparison saved to #{options[:output]}" end rescue StandardError => e warn "Comparison failed: #{e.message}" exit 1 end |
#delete(name) ⇒ Object
93 94 95 96 97 98 99 100 |
# File 'lib/hedra/cli.rb', line 93 def delete(name) baseline = Baseline.new baseline.delete(name) puts "Baseline deleted: #{name}" rescue StandardError => e warn "Failed to delete baseline: #{e.message}" exit 1 end |
#list ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/hedra/cli.rb', line 47 def list baseline = Baseline.new baselines = baseline.list if baselines.empty? puts 'No baselines saved.' else puts 'Saved baselines:' baselines.each do |b| puts " - #{b[:name]} (#{b[:url_count]} URLs, created: #{b[:created_at]})" end end end |