Mercurial > repos > cpt > cpt_psm_comparison_table
diff lib/CPT/Util.pm @ 1:f093e08f21f3 draft default tip
planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author | cpt |
---|---|
date | Mon, 05 Jun 2023 02:47:24 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/CPT/Util.pm Mon Jun 05 02:47:24 2023 +0000 @@ -0,0 +1,99 @@ +package CPT::Util; +use strict; +use warnings; +use Moose; + +#ABSTRACT: CPT convenience functions + + + +sub JSONYAMLopts { + my ( $self, %data ) = @_; + my %hash; + if ( $data{'file'} ) { + my $ext = substr($data{'file'}, rindex($data{'file'}, '.') + 1); + if ( lc $ext eq 'yaml' || lc $ext eq 'yml' ) { + require YAML::XS; + %hash = %{ YAML::XS::LoadFile( $data{'file'} ) }; + } + elsif ( lc $ext eq 'json' ) { + require JSON::XS; + require File::Slurp; + my $json = File::Slurp::read_file( $data{'file'} ); + %hash = %{ JSON::XS::decode_json($json) }; + } + else { + confess "Requested JSON/YAML file lacked a recognisable suffix $ext"; + } + } + else { + confess 'Error, no options provided'; + } + return \%hash; + +} + + + +sub untaint_path { + delete @ENV{ 'IFS', 'CDPATH', 'ENV', 'BASH_ENV' }; + $ENV{'PATH'} = '/bin:/usr/bin'; + my $path = $ENV{'PATH'}; + return 1; +} + + + +no Moose; +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +CPT::Util - CPT convenience functions + +=head1 VERSION + +version 1.99.4 + +=head1 FUNCTIONAL INTERFACE + + my $libCPT = CPT::CPT->new(); + +=head2 JSONYAMLopts + + my %colour_options = %{ + $libCPT->JSONYAMLopts( + 'file'=>$options{'optionsfile'}, + 'string'=> $options{'optionsstring'} + ) + }; + +Reads from a file or from a string passed to it describing additional options in JSON or YAML. (Should I support other options?) + +For scripts that require significant numbers of input parameters where they are often re-used, it isn't sensible to require people to specify ten flags on the command line. Offering a JSON/YAML file reader simplifies their life by providing re-usable config files. + +=head2 untaint_path + + $libCPT->untaint_path(); + +Convenience function + +=head1 AUTHOR + +Eric Rasche <rasche.eric@yandex.ru> + +=head1 COPYRIGHT AND LICENSE + +This software is Copyright (c) 2014 by Eric Rasche. + +This is free software, licensed under: + + The GNU General Public License, Version 3, June 2007 + +=cut