#!/usr/bin/env ruby
#
# Eric Radman <ericshane@eradman.com> 2019
#
# Alter individual components of a URL

require 'uri'

@components = %i[scheme userinfo host port path query fragment]

def usage
  warn 'usage: urlsed [component=value ...] < url'
  warn "components: #{@components.join(' ')}"
  exit 1
end

usage if $stdin.isatty

uri = URI($stdin.gets.strip)

ARGV.each do |arg|
  k, v = arg.split('=', 2)
  usage unless @components.include? k.to_sym
  if k == 'port' && v.to_i.positive?
    uri.send("#{k}=", v.to_i)
  else
    uri.send("#{k}=", v)
  end
end
puts uri
