diff options
Diffstat (limited to 'uri')
-rwxr-xr-x | uri | 52 |
1 files changed, 52 insertions, 0 deletions
@@ -0,0 +1,52 @@ +#!/usr/bin/env perl + +use warnings; +use strict; +use URI; +use URI::QueryParam; +use feature 'say'; + +die "Usage: $0 COMMAND [URIs]" unless @ARGV >= 1; + +my $command = shift; + +sub make_uri { + my $uri = shift; + my @opts = map { s/^--//; [split /=/, $_, 2] } @ARGV; + for (@opts) { + my ($k, $v) = @$_; + if ($k =~ /^query-param-(.+)$/) { + $uri->query_param($1 => $v); + } else { + $uri->$k($v); + } + } + say $uri->as_string; +} + +sub take_it { + chomp; + my $uri = URI->new($_); + die "Invalid command for $_: $command" unless $uri->can($command); + my $val = $uri->$command; + + if (defined $val) { + exit !$val if $val =~ /^[01]$/; + say $val; + } else { + say "undefined"; + exit 1; + } +} + +if ($command eq 'create') { + make_uri(URI->new); +} elsif ($command eq 'change') { + make_uri(URI->new($_)) while <STDIN>; +} else { + if (@ARGV) { + take_it for @ARGV; + } else { + take_it while <STDIN>; + } +} |