From 40f17d1f4bd03c48cb89a6e70e9cd7a3259334c6 Mon Sep 17 00:00:00 2001 From: Nick Shipp Date: Sat, 3 Jun 2017 01:33:15 -0400 Subject: Initial commit --- uri | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 uri (limited to 'uri') diff --git a/uri b/uri new file mode 100755 index 0000000..9f77bbf --- /dev/null +++ b/uri @@ -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 ; +} else { + if (@ARGV) { + take_it for @ARGV; + } else { + take_it while ; + } +} -- cgit v1.2.3-70-g09d2