NAME
    CTKlib - Command-line ToolKit library (CTK). Command line interface (CLI)

VERSION
    Version 1.17
    
    $Id: README 184 2015-05-12 10:15:56Z minus $

SYNOPSIS
    
    use CTK;

    use CTK qw/ ...TAGS... /
    
    use CTK qw/ ...VARIABLES, FUNCTIONS AND PROCEDURES... /

ABSTRACT
     CTKlib         
    
    SVN: http://svn.serzik.ru/CTKlib/trunk
         svn co http://svn.serzik.ru/CTKlib/trunk CTKlib

DESCRIPTION

The project ... blah-blah-blah

,         . 
CTK        ,  ,   , 
  HTTP/FTP/SSH           
...  -  ,    ,    
   use CTK

CTK   2-  -   ()   ().  
      ,      .
      ,   ,     
  ,    ,       CTK::Util.

  ,   ,     
  : CTK::Arc (  ), CTK::File (  ), CTK::Net (  
)  ..         CTK: $c? :

    package main;
    use CTK qw/ $DATADIR /
    ...
    1;
    package my::mainlib;
    my $c = new CTK; #   
    ...
    $c->frm( -in => CTK::catfile($CTK::DATADIR,'in') );
    ...
    1;
    
       in    $CTK::DATADIR.

  $CTK::DATADIR           , :

    package my::mainlib;
    use CTK qw/ $DATADIR /
    my $c = new CTK; #   
    ...
    $c->frm( -in => CTK::catfile($DATADIR,'in') );
    ...
    1;

VARIABLES, FUNCTIONS AND PROCEDURES

     

    $TM        -  
    $EXEDIR    -     
    $DATADIR   -    ( )
    $CONFDIR   -   ( )
    $CONFFILE  -   
    $LOGDIR    -    
    $LOGFILE   -   
    %OPT       -    
    @OPTSYSDEF -    ,   
    
     
    
    say        -  say   perl 6
    debug      -  -       -ld  -d
    tms        - .   
    exception  -   
    testmode   -     ,    
    debugmode  -     ,     INT 
    logmode    -     ,    

TAGS
    
    ALL     -        
    
    BASE    -        
    
    VARS    -    
    
    FUNC, FUNCS, SUB, SUBS -    

OPTIONS

    ,     -   %OPT    ,
         ,         CTK
       .      
      :

        debug
        log
        signature
        testmode

          @OPTSYSDEF

   
    
    fextract -       :   .
    
       , ..    .   
        ,      .
    
                
          .
    
    #    
    $c->fextract(
            -in     => CTK::catfile($CTK::DATADIR,'in'),  #    
            -out    => CTK::catfile($CTK::DATADIR,'out'), #      
            -method => 'ext',           #       ,  
            -list   => qr/rar/,         #  ( )     IN
            -arcdef => $config->{arc},  #     , Hashref
        );
        
    #    
    $c->fextract(
            -in     => CTK::catfile($CTK::DATADIR,'in'),  #    
            -out    => CTK::catfile($CTK::DATADIR,'out'), #      
            -method => 'zip',           #       ,  
            -list   => qr/zip/,         #  ( )     IN
            -arcdef => $config->{arc},  #     , Hashref
        );        
        
    fcompress -  ,  .
    
    #    
    $c->fcompress(
            -in     => CTK::catfile($CTK::DATADIR,'in'),  #     
            -out    => CTK::catfile($CTK::DATADIR,'out','ttt.rar'), #    
            -list   => qr//,           #  ( )     IN
            -arcdef => $config->{arc}, #     , Hashref
        );
        
          .

   

    fsplit -    .     .
    
            ,   fsplit,  
     ! 
    
    $c->fsplit(
            -in     => CTK::catfile($CTK::DATADIR,'in'),  #     
            -out    => CTK::catfile($CTK::DATADIR,'out'), #      
            -n      => 100, #        
            -format => '[FILENAME]_%03d.[FILEEXT]', #    
            -list   => qr//, #  ( )     IN
        );

    fcopy, fcp -  
    
    $c->fcopy(
            -in     => CTK::catfile($CTK::DATADIR,'in'),  #     
            -out    => CTK::catfile($CTK::DATADIR,'out'), #      
            -format => '[FILE].copy', #    
            -list   => qr//, #  ( )     IN
        );
        
    fmove, fmv -  
    
    $c->fmv(
            -in     => CTK::catfile($CTK::DATADIR,'in'),  #     
            -out    => CTK::catfile($CTK::DATADIR,'out'), #      
            -format => '[FILE].copy', #    
            -list   => qr//, #  ( )     IN
        );

    fdelete, fdel, frm -  
    
    $c->frm(
            -in     => CTK::catfile($CTK::DATADIR,'in'), #     
            -list   => qr//, #  ( )     IN
        );

     

           .    FTP    :
    
    my %ftpct = (
        ftphost     => '192.168.1.1',
        ftpuser     => 'login',
        ftppassword => 'password',
        ftpdir      => '~/activa', #activa
        #ftpattr     => {},
    );
    
    my %httpct = (
        method     => 'GET',
        url        => 'http://yandex.ru/robots.txt',
        #login      => 'login',
        #password   => 'password',
        #utf8       => 1,
    );
    
    my %uaopt = (
        agent                   => "Mozilla/4.0",
        max_redirect            => 10,
        requests_redirectable   => ['GET','HEAD','POST'],
        keep_alive              => 1,
        env_proxy               => 1,
    );
    
         
        
    fetch, get, download -  ,  
    
    $c->fetch(
            -connect  => {%ftpct},   #  
            -protocol => 'ftp',      #  ,  , FTP
            -dir      => $DATADIR,   #  ( )     
            -cmd      => 'copyuniq', # : copy / copyuniq / move / moveuniq
            -mode     => 'bin',      #    : ascii / binary (bin) 
            -list     => qr//,       #  ( )     
        );

    my $stat = $c->fetch(
            -connect  => {%httpct},  #  
            -uaopt    => {%uaopt},   #  UserAgent ()
            -protocol => 'http',     #  ,  , HTTP,   HTTPS
            -dir      => $DATADIR,   #  ( )      ()
            #-file    => '123.html', #   ()
            #-uacode  => sub { },    #     LWP::UserAgent ( )
            #-reqcode => sub { },    #     HTTP::Request ( )
            #-rescode => sub { },    #     HTTP::Response ( )
        );
    debug("STATUS: ",$stat); 
    
    #      
    my $html = $c->fetch(
            -connect  => {
                    method     => 'GET',
                    url        => 'http://yandex.ru/robots.txt',
                },
            -protocol => 'http',
            #-utf8     => 1,
        );
    debug("DATA:\n\n",$html,"\n");

         ,       $stat.
    
     !!!    ()      ,
             ,   
    wget, fetch, lwp-download   .
    
       uacode, reqcode  rescode,    . :
    
        -rescode => sub { debug(CTK::Net::_debug_http(@_))  },
        
     CTK::Net::_debug_http     .
        
     :
    
    copy        -  
    copyuniq    -    
    move        -  
    moveuniq    -    
    
    store, put, upload -  ,  
    
    $c->store(
            -connect  => {%ftpct},   #  
            -protocol => 'ftp',      #  ,  , FTP
            -dir      => $DATADIR,   #  ( )     
            -cmd      => 'copyuniq', # : copy / copyuniq / move / moveuniq
            -mode     => 'bin',      #    : ascii / binary (bin) 
            -file     => 'sg1.bat',  #       
        );

     

         CTK::DBI   ,    .
        
    #    mysql
    my $oracle = new CTK::DBI(
            -dsn  => 'DBI:mysql:database=mvcskel;host=192.168.100.1',
            -user => 'login',
            -pass => 'password',
        );
    debug($oracle->field("select sysdate() from dual"));
    
    #    Oracle
    if (testmode) {
        my $oracle = new CTK::DBI(
            -dsn  => $config->{oracle}{prodt}{dsn},
            -user => $config->{oracle}{prodt}{user},
            -pass => $config->{oracle}{prodt}{password},
        );
        debug($oracle->field("select sysdate from dual"));
    }

 
    
    my $send = CTK::sendmail(
        -to         => (testmode() ? $config->{sendmail}{testmail} : $config->{sendmail}{to}),
        -cc         => $config->{sendmail}{cc},
        -from       => $config->{sendmail}{from},
        -type       => $config->{sendmail}{type},
        -smtp       => $config->{sendmail}{smtp},
        -subject    => ' ',
        -message    => ' ',
        -attach => [ 
                {Type=>'text/plain', Path=>$CTK::LOGFILE, Filename=>'log.txt', Disposition=>'attachment',},
                {Type=>'text/plain', Data=>'document 1 content', Filename=>'doc1.txt', Disposition=>'attachment',},
                {Type=>'text/plain', Data=>'document 2 content', Filename=>'doc2.txt', Disposition=>'attachment',},
            ],
    );
    debug($send ? '  :)' : '   :(');

  , 

    gpg_decript -      GPG (GnuPG)

     : http://www.gnupg.org/ (GPG4Win - http://gpg4win.org/)
    
          
    
    $c->gpg_decript(
            -in      => CTK::catfile($DATADIR,'in','test.txt.asc'), #     
            -out     => CTK::catfile($DATADIR,'out','test.txt'),    #     
            -gpghome => '', # 
            -certdir => '', #     .    ./data/cert
            -pubkey  => '', #     () .   ./data/cert/public.key
            -privkey => '', #     () .   ./data/cert/private.key
            -pass    => '', #    .   - 
        );

   

    cli_prompt -   ,     
    
    my $v = $c->cli_prompt('Your name:', 'anonymous');
    debug( "Your name: $v" );

       ,  -   
    
    cli_prompt3 -  cli_prompt  3      
    
    my $v = $c->cli_prompt3('Your name:');
    debug( "Your name: $v" );
    
       ,  -   
    
    cli_select -       .      
                
    
    my $v = $c->cli_select('Your select:',[qw/foo bar baz/],'bar');
    debug( "Your select: $v" );
    
           ,   -  
           -   .

    cli_select3 -  cli_select  3      
    
    my $v = $c->cli_select3('Your select:',[qw/foo bar baz/],'foo');
    debug( "Your select: $v" );
    
           ,   -  
           -   .


EXAMPLES

  Moose: http://ni-al.ru/index.php/Perl::Moose::Conept

     

perl -MCTK::Util -e "print join qq/\n/, sort {$a cmp $b} @{$CTK::Util::EXPORT_TAGS{ATOM}}" | gclip

ENVIRONMENT
    No environment variables are used.

BUGS
    Please report them.

SEE ALSO
    "Perl", ...

DIAGNOSTICS
    The usual warnings if it cannot read or write the files involved.

HISTORY
    See CHANGES file

TODO
    See TODO file

LICENSE
    See LICENSE file

THANKS
    Thanks to me for ...

AUTHOR
    Serz Minus (Lepenkov Sergey) http://serzik.ru <minus@mail333.com>.

COPYRIGHTS
    Copyright (C) 1998-2013 D&D Corporation. All Rights Reserved

