NAME CTK - Command-line ToolKit library (CTKlib) VERSION Version 2.03 NOTE The 2.00+ versions of this library is not compatible with earlier versions SYNOPSIS use CTK; my $ctk = new CTK; my $ctk = new CTK ( project => 'MyApp', configfile => '/path/to/conf/file.conf', logfile => '/path/to/log/file.log', ); DESCRIPTION CTKlib - is library that provides "extended-features" (utilities) for your robots written on Perl. Most of the functions and methods this module written very simple language and easy to understand. To work with CTKlib, you just need to start using it! new my $ctk = new CTK; my $ctk = new CTK ( project => 'MyApp', configfile => '/path/to/conf/file.conf', logfile => '/path/to/log/file.log', ); Main constructor. All the params are optional configfile configfile => '/etc/myapp/myapp.conf' Path to the configuration file of the your project Default: /etc//.conf datadir datadir => '/path/to/your/data/dir' Directory for application data storing Default: (current directory) debug debug => 1 debug => 'on' debug => 'yes' Debug mode Default: 0 ident ident => "test" Ident string for logs and debugging Default: "" log log => 1 log => 'on' log => 'yes' Log mode Default: 0 logdir logdir => '/var/log/myapp' Log directory of project Default: /var/log/ logfile logfile => '/var/log/myapp/myapp.log' Full path to the log file Default: /var/log//.log options options => {foo => 'bar'} Command-line options, hash-ref structure. See Getopt::Long Default: {} plugins plugins => [qw/ test /] plugins => "test" Array ref of plugin list or plugin name as scalar: Default: [] prefix prefix => "myapp" Prefix of the Your project Default: lc() project project => "MyApp" name => "MyApp" Project name Default: $FindBin::Script without file extension root root => "/etc/myapp" Root dir of project Default: /etc/ suffix suffix => "devel" suffix => "alpha" suffix => "beta" suffix => ".dev" Suffix of the your project. Can use in plugins Default: "" tempdir tempdir => "/tmp/myapp" Temp directory of project Default: /tmp/ tempfile tempfile => "/tmp/myapp/myapp.tmp" Temp file of project Default: /tmp//.tmp test test => 1 test => 'on' test => 'yes' Test mode Default: 0 verbose verbose => 1 verbose => 'on' verbose => 'yes' Verbose mode Default: 0 again For internal use only (plugins). Please not call this function configfile my $configfile = $ctk->configfile; $ctk->configfile("/path/to/config/file.conf"); Gets and sets configfile value datadir my $datadir = $ctk->datadir; $ctk->datadir("/path/to/data/dir"); Gets and sets datadir value debug $ctk->debug( "Message" ); Prints debug information on STDOUT if is set debug mode. Also sends message to log if log mode is enabled debugmode $ctk->debugmode; Returns debug flag. 1 - on, 0 - off error my $error = $ctk->error; Returns error string if occurred any errors while creating the object $ctk->error("error text"); Sets new error message and returns it. Also prints message on STDERR if is set debug mode and sends message to log if log mode is enabled exedir my $exedir = $ctk->exedir; Gets exedir value load $ctk->load("My::Foo::Package"); Internal method for loading modules. Returns loading status: 0 - was not loaded; 1 - was loaded load_plugins my $summary_status = $self->load_plugins( @plugins ); Loads list of plugins and returns summary status logdir my $logdir = $ctk->logdir; $ctk->logdir("/path/to/log/dir"); Gets and sets logdir value logfile my $logfile = $ctk->logfile; $ctk->logfile("/path/to/log/file.log"); Gets and sets logfile value logmode $ctk->logmode; Returns log flag. 1 - on, 0 - off origin my $args = $ctk->origin(); Returns hash-ref structure to all origin arguments option my $value = $ctk->option("key"); Returns option value by key my $options = $ctk->option; Returns hash-ref structure to all options See "options" project, prefix, suffix my $project_name = $ctk->projtct; my $prefix = $ctk->prefix; my $suffix = $ctk->suffix; Returns project, prefix and suffix values revision my $revision = $ctk->revision; Returns revision value root my $my_root = $ctk->root; # /etc/ Gets my root dir value silentmode $ctk->silentmode; Returns the verbose flag in the opposite value. 0 - verbose, 1 - silent. See "verbosemode" status my $status = $ctk->status; Returns boolean status of creating and using the object my $status = $ctk->status( 1 ); Sets new status and just returns it tempfile my $tempfile = $ctk->tempfile; $ctk->tempfile("/path/to/temp/file.tmp"); Gets and sets tempfile value tempdir my $tempdir = $ctk->tempdir; $ctk->tempdir("/path/to/temp/dir"); Gets and sets tempdir value testmode $ctk->testmode; Returns test flag. 1 - on, 0 - off tms print $ctk->tms; # +0.0080 sec Returns formatted timestamp print $ctk->tms(1); # 0.008000 Returns NOT formatted timestamp verbosemode $ctk->verbosemode; Returns verbose flag. 1 - on, 0 - off See "silentmode" VARIABLES use CTK qw/ WIN NULL TONULL ERR2OUT PREFIX /; use CTK qw/ :constants / ERR2OUT Returns string: 2>&1 NULL Returns NULL device path or name for Windows platforms %PLUGIN_ALIAS_MAP This hash is using for sets aliases of plugins, e.g.: use CTK qw/ %PLUGIN_ALIAS_MAP /; $PLUGIN_ALIAS_MAP{myplugin} = "My::Custom::Plugin::Module"; PREFIX Return default prefix: ctk TONULL Returns string: >/dev/null 2>&1 WIN Returns 1 if Windows platform TAGS :constants Will be exported following variables: WIN, NULL, TONULL, ERR2OUT, PREFIX :variables Will be exported following variables: %PLUGIN_ALIAS_MAP HISTORY 1.00 / 18.06.2012 Init version 2.00 Mon Apr 29 10:36:06 MSK 2019 New edition of the library See Changes file DEPENDENCIES Class::C3::Adopt::NEXT, Config::General, DBI, ExtUtils::MakeMaker, File::Copy, File::Path, File::Pid, File::Spec, File::Temp, IO, IO::String, IPC::Open3, JSON, List::Util, MIME::Base64, MIME::Lite, MRO::Compat, Net::FTP, Perl::OSType, Sys::SigAction, Sys::Syslog Term::ANSIColor, Test::Simple, Text::SimpleTable, Time::HiRes, Time::Local, Try::Tiny, URI, XML::Simple, YAML::XS TO DO See TODO file BUGS * none noted SEE ALSO perl AUTHOR Serż Minus (Sergey Lepenkov) http://www.serzik.com COPYRIGHT Copyright (C) 1998-2019 D&D Corporation. All Rights Reserved LICENSE This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See LICENSE file and https://dev.perl.org/licenses