App-PrettyRes

 view release on metacpan or  search on metacpan

bin/pretty-res  view on Meta::CPAN

#!perl

our $DATE = '2016-03-10'; # DATE
our $VERSION = '0.03'; # VERSION

use 5.010001;
use strict;
use warnings;

my %Opts = (
    input  => 'json',
    output => 'text',
);
my $Input;
my @Output;

sub parse_cmdline {
    require Getopt::Long;

    my $res = Getopt::Long::GetOptions(
        'input|i=s'  => \$Opts{input},
        'output|o=s' => \$Opts{output},
        'version|v'  => sub {
            say "pretty-res version ", ($main::VERSION // '?');
            exit 0;
        },
        'help|h'     => sub {
            print <<USAGE;
Usage:
  pretty-res [OPTIONS] < INPUT
  pretty-res --version
  pretty-res --help
Examples:
  pretty-res -o yaml data.json
Options:
  --input=s, -i   Input format (json, yaml, perl; default is json).
  --output=s, -o  Output format (text, text-pretty, text-simple, yaml, json,
                  json-pretty, ruby, perl, php).
Consult manpage/documentation for more details.
USAGE
            exit 0;
        },
    );
    exit 99 if !$res;
}

sub get_input {
    require Perinci::Result::Util;

    local $/;
    if ($Opts{input} eq 'json') {
        require JSON::MaybeXS;
        $Input = JSON::MaybeXS->new->allow_nonref->decode(~~<>);
    } elsif ($Opts{input} eq 'yaml') {
        require YAML::Syck;
        $Input = YAML::Syck::Load(~~<>);
    } elsif ($Opts{input} eq 'perl') {
        $Input = eval(~~<>);
    } else {
        warn "Unknown input format, ".
            "refer to documentation for available formats\n";
        exit 99;
    }

    unless (Perinci::Result::Util::is_env_res($Input)) {
        $Input = [200, "OK (enveloped added by pretty-res)", $Input];
    }
}

sub show_output {
    require Perinci::Result::Format;
    print Perinci::Result::Format::format($Input, $Opts{output});
}

# MAIN

parse_cmdline();
get_input();
show_output();

1;
# ABSTRACT: Format enveloped result prettily
# PODNAME: pretty-res



( run in 1.744 second using v1.01-cache-2.11-cpan-ff9377addf4 )