Sha256: 87c24086c4bf38ccd4bfba905a1886442d619580da1a1fbfd3de1f32d0f56cdd

Contents?: true

Size: 1.7 KB

Versions: 4

Compression:

Stored size: 1.7 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

# for dev purposes
require 'bundler/setup' if ENV['VERIFY_URLS_GEM_DEV']
require 'verify_urls'
require 'verify_urls/cli'

options = VerifyUrls::CLI.parse(argv: ARGV)

file_path = options.fetch(:file) { raise(ArgumentError, '--file is required') }
file_format = options[:format]

helper = VerifyUrls::Helper
reader = UrlFinder.from_file(file_path, file_format)
urls = reader.urls

failed_urls = []
success_urls = []
skipped_urls = []
puts "Found #{urls.length} URLs in README.md"
urls.each do |url|
  unless helper.absolute_url?(url)
    # Consider validating internal links such as: "#license" and "LICENSE"
    puts "[Skipped]    #{url}.. not an absolute URL!"
    skipped_urls << url
    next
  end

  print "[Fetching]   #{url}.."
  response = helper.GET(url)
  if helper.response_success?(response)
    puts "#{response.code} #{response.reason}!"
    success_urls << url
  else
    puts "#{response&.code} #{response&.reason || 'error'}!"
    failed_urls << url
  end
end

if file_path = options[:output]
  csv_string = CSV.generate do |csv|
    csv << %w[success failed checked skipped url]
    failed_urls.each { |url| csv << [false, true, true, false, url] }
    success_urls.each { |url| csv << [true, false, true, false, url] }
    skipped_urls.each { |url| csv << [false, false, false, true, url] }
  end
  File.write(file_path, csv_string)
end

puts
puts '[Finished]'
puts "Found       #{urls.length}"
puts "Checked     #{failed_urls.length + success_urls.length}"
puts "Skipped     #{skipped_urls.length}"
puts "Failed      #{failed_urls.length}"

if options.fetch(:error_failed, false) && failed_urls.length > 0
  puts
  puts "[ERROR] #{failed_urls} URL(s) failed!"
  exit 1
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
verify_urls-0.3.2 exe/verify_urls
verify_urls-0.3.1 exe/verify_urls
verify_urls-0.3.0 exe/verify_urls
verify_urls-0.2.0 exe/verify_urls