App-Dochazka-CLI

 view release on metacpan or  search on metacpan

lib/App/Dochazka/CLI/CommandMap.pm  view on Meta::CPAN

# used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# *************************************************************************
#
# Command map
#
package App::Dochazka::CLI::CommandMap;

use 5.012;
use strict;
use warnings;

use App::CELL qw( $CELL );
use App::Dochazka::CLI::Commands::Activity qw( 
    activity_all 
);
use App::Dochazka::CLI::Commands::Component qw( 
    component_path
    generate_report
);
use App::Dochazka::CLI::Commands::Employee qw( 
    employee_ldap
    employee_ldap_import
    employee_list
    employee_profile
    employee_team
    set_employee_self_sec_id 
    set_employee_other_sec_id 
    set_employee_self_fullname
    set_employee_other_fullname 
    set_employee_self_password
    set_employee_other_password 
    set_employee_supervisor
);
use App::Dochazka::CLI::Commands::History qw(
    add_priv_history
    add_schedule_history
    dump_priv_history
    dump_schedule_history
    set_history_remark
);
use App::Dochazka::CLI::Commands::Interval qw(
    interval_date
    interval_date_date1
    interval_datelist
    interval_tsrange
    interval_month
    interval_num_num1
    interval_promptdate
    interval_new_date_time_date1_time1
    interval_new_time_time1
    interval_new_timerange
);
use App::Dochazka::CLI::Commands::Misc qw( 
    change_prompt_date 
    noop
);
use App::Dochazka::CLI::Commands::Priv qw(
    show_priv_as_at
);
use App::Dochazka::CLI::Commands::Schedule qw( 
    add_memsched_entry 
    assign_memsched_scode
    clear_memsched_entries
    dump_memsched_entries
    fetch_all_schedules
    replicate_memsched_entry
    schedule_all
    schedule_new
    schedulespec
    schedulespec_remark
    schedulespec_scode
    show_schedule_as_at
);
use Data::Dumper;
use Exporter qw( import );


=head1 NAME

App::Dochazka::CLI::CommandMap - Command map




=head1 PACKAGE VARIABLES

=cut

# bring in the _method... functions
require App::Dochazka::CLI::Commands::RestTest::Activity;
require App::Dochazka::CLI::Commands::RestTest::Employee;
require App::Dochazka::CLI::Commands::RestTest::Interval;
require App::Dochazka::CLI::Commands::RestTest::Lock;
require App::Dochazka::CLI::Commands::RestTest::Priv;
require App::Dochazka::CLI::Commands::RestTest::Schedule;
require App::Dochazka::CLI::Commands::RestTest::Top;

our $dispatch_map = { 

    # Top-level commands
    "GET" => \&_method,
    "PUT" => \&_method,
    "POST" => \&_method,
    "DELETE" => \&_method,
    "GET BUGREPORT" => \&_method_bugreport,
    "PUT BUGREPORT" => \&_method_bugreport,
    "POST BUGREPORT" => \&_method_bugreport,
    "DELETE BUGREPORT" => \&_method_bugreport,
    "GET CONFIGINFO" => \&_method_configinfo,
    "PUT CONFIGINFO" => \&_method_configinfo,
    "POST CONFIGINFO" => \&_method_configinfo,
    "DELETE CONFIGINFO" => \&_method_configinfo,
    "GET COOKIEJAR" => \&_method_cookiejar,
    "PUT COOKIEJAR" => \&_method_cookiejar,

lib/App/Dochazka/CLI/CommandMap.pm  view on Meta::CPAN

    # Report commands
    #"COMPONENT PATH _PATH" => \&component_path,
    "GENERATE REPORT _PATH" => \&generate_report,
    "GENERATE REPORT _PATH _JSON" => \&generate_report,

    # Employee commands
    "EMPLOYEE" => \&employee_profile,
    "EID" => \&noop,
    "NICK" => \&noop,
    "SEC_ID" => \&noop,
    "EMPLOYEE LDAP" => \&employee_ldap,
    "EMPLOYEE LIST" => \&employee_list,
    "EMPLOYEE LIST _TERM" => \&employee_list,
    "EMPLOYEE PROFILE" => \&employee_profile,
    "EMPLOYEE SHOW" => \&employee_profile,
    "EMPLOYEE_SPEC" => \&employee_profile,
    "EMPLOYEE_SPEC LDAP" => \&employee_ldap,
    "EMPLOYEE_SPEC LDAP IMPORT" => \&employee_ldap_import,
    "EMPLOYEE_SPEC PROFILE" => \&employee_profile,
    "EMPLOYEE_SPEC SHOW" => \&employee_profile,
    "EMPLOYEE SEC_ID _TERM" => \&set_employee_self_sec_id,
    "EMPLOYEE SET SEC_ID _TERM" => \&set_employee_self_sec_id,
    "EMPLOYEE FULLNAME" => \&set_employee_self_fullname,
    "EMPLOYEE SET FULLNAME" => \&set_employee_self_fullname,
    "EMPLOYEE_SPEC SEC_ID _TERM" => \&set_employee_other_sec_id,
    "EMPLOYEE_SPEC SET SEC_ID _TERM" => \&set_employee_other_sec_id,
    "EMPLOYEE_SPEC FULLNAME" => \&set_employee_other_fullname,
    "EMPLOYEE_SPEC SET FULLNAME" => \&set_employee_other_fullname,
    "EMPLOYEE_SPEC SUPERVISOR _TERM" => \&set_employee_supervisor,
    "EMPLOYEE_SPEC SET SUPERVISOR _TERM" => \&set_employee_supervisor,
    "EMPLOYEE PASSWORD" => \&set_employee_self_password,
    "EMPLOYEE SET PASSWORD" => \&set_employee_self_password,
    "EMPLOYEE_SPEC PASSWORD" => \&set_employee_other_password,
    "EMPLOYEE_SPEC SET PASSWORD" => \&set_employee_other_password,
    "EMPLOYEE TEAM" => \&employee_team,
    "EMPLOYEE_SPEC TEAM" => \&employee_team,

    # History commands
    "PRIV HISTORY" => \&dump_priv_history,
    "EMPLOYEE_SPEC PRIV HISTORY" => \&dump_priv_history,
    "SCHEDULE HISTORY" => \&dump_schedule_history,
    "EMPLOYEE_SPEC SCHEDULE HISTORY" => \&dump_schedule_history,
    "EMPLOYEE_SPEC PRIV_SPEC _DATE" => \&add_priv_history,
    "EMPLOYEE_SPEC PRIV_SPEC EFFECTIVE _DATE" => \&add_priv_history,
    "EMPLOYEE_SPEC SCHEDULE_SPEC _DATE" => \&add_schedule_history,
    "EMPLOYEE_SPEC SCHEDULE_SPEC EFFECTIVE _DATE" => \&add_schedule_history,
    "EMPLOYEE_SPEC SID" => \&noop,
    "EMPLOYEE_SPEC SCODE" => \&noop,
    "EMPLOYEE_SPEC SET PRIV_SPEC _DATE" => \&add_priv_history,
    "EMPLOYEE_SPEC SET PRIV_SPEC EFFECTIVE _DATE" => \&add_priv_history,
    "EMPLOYEE_SPEC SET SCHEDULE_SPEC _DATE" => \&add_schedule_history,
    "EMPLOYEE_SPEC SET SCHEDULE_SPEC EFFECTIVE _DATE" => \&add_schedule_history,
    "PHISTORY_SPEC REMARK" => \&set_history_remark,
    "PHISTORY_SPEC SET REMARK" => \&set_history_remark,
    "SHISTORY_SPEC REMARK" => \&set_history_remark,
    "SHISTORY_SPEC SET REMARK" => \&set_history_remark,

    # Interval commands

    # fetch/fillup intervals
    "INTERVAL" => \&interval_promptdate,
    "EMPLOYEE_SPEC INTERVAL" => \&interval_promptdate,
    "INTERVAL FETCH" => \&interval_promptdate,
    "EMPLOYEE_SPEC INTERVAL FETCH" => \&interval_promptdate,
    "INTERVAL FILLUP" => \&interval_promptdate,
    "EMPLOYEE_SPEC INTERVAL FILLUP" => \&interval_promptdate,
    "INTERVAL FILLUP DRY_RUN" => \&interval_promptdate,
    "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN" => \&interval_promptdate,
    "INTERVAL SUMMARY" => \&interval_promptdate,
    "EMPLOYEE_SPEC INTERVAL SUMMARY" => \&interval_promptdate,
    "INTERVAL REPORT" => \&interval_promptdate,
    "EMPLOYEE_SPEC INTERVAL REPORT" => \&interval_promptdate,
    "INTERVAL DELETE" => \&interval_promptdate,
    "EMPLOYEE_SPEC INTERVAL DELETE" => \&interval_promptdate,

    "INTERVAL _DATE" => \&interval_date,
    "EMPLOYEE_SPEC INTERVAL _DATE" => \&interval_date,
    "INTERVAL FETCH _DATE" => \&interval_date,
    "EMPLOYEE_SPEC INTERVAL FETCH _DATE" => \&interval_date,
    "INTERVAL FILLUP _DATE" => \&interval_date,
    "EMPLOYEE_SPEC INTERVAL FILLUP _DATE" => \&interval_date,
    "INTERVAL FILLUP DRY_RUN _DATE" => \&interval_date,
    "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _DATE" => \&interval_date,
    "INTERVAL SUMMARY _DATE" => \&interval_date,
    "EMPLOYEE_SPEC INTERVAL SUMMARY _DATE" => \&interval_date,
    "INTERVAL REPORT _DATE" => \&interval_date,
    "EMPLOYEE_SPEC INTERVAL REPORT _DATE" => \&interval_date,
    "INTERVAL DELETE _DATE" => \&interval_date,
    "EMPLOYEE_SPEC INTERVAL DELETE _DATE" => \&interval_date,

    "INTERVAL _DATE _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL _DATE _DATE1" => \&interval_date_date1,
    "INTERVAL FETCH _DATE _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL FETCH _DATE _DATE1" => \&interval_date_date1,
    "INTERVAL FILLUP _DATE _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL FILLUP _DATE _DATE1" => \&interval_date_date1,
    "INTERVAL FILLUP DRY_RUN _DATE _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _DATE _DATE1" => \&interval_date_date1,
    "INTERVAL SUMMARY _DATE _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL SUMMARY _DATE _DATE1" => \&interval_date_date1,
    "INTERVAL REPORT _DATE _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL REPORT _DATE _DATE1" => \&interval_date_date1,
    "INTERVAL DELETE _DATE _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL DELETE _DATE _DATE1" => \&interval_date_date1,

    "INTERVAL _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "INTERVAL FETCH _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL FETCH _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "INTERVAL FILLUP _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL FILLUP _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "INTERVAL FILLUP DRY_RUN _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "INTERVAL SUMMARY _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL SUMMARY _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "INTERVAL REPORT _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL REPORT _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "INTERVAL DELETE _DATE _HYPHEN _DATE1" => \&interval_date_date1,
    "EMPLOYEE_SPEC INTERVAL DELETE _DATE _HYPHEN _DATE1" => \&interval_date_date1,

    "INTERVAL _MONTH" => \&interval_month,
    "EMPLOYEE_SPEC INTERVAL _MONTH" => \&interval_month,
    "INTERVAL FETCH _MONTH" => \&interval_month,
    "EMPLOYEE_SPEC INTERVAL FETCH _MONTH" => \&interval_month,
    "INTERVAL FILLUP _MONTH" => \&interval_month,
    "EMPLOYEE_SPEC INTERVAL FILLUP _MONTH" => \&interval_month,
    "INTERVAL FILLUP DRY_RUN _MONTH" => \&interval_month,
    "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _MONTH" => \&interval_month,
    "INTERVAL SUMMARY _MONTH" => \&interval_month,
    "EMPLOYEE_SPEC INTERVAL SUMMARY _MONTH" => \&interval_month,
    "INTERVAL REPORT _MONTH" => \&interval_month,
    "EMPLOYEE_SPEC INTERVAL REPORT _MONTH" => \&interval_month,
    "INTERVAL DELETE _MONTH" => \&interval_month,
    "EMPLOYEE_SPEC INTERVAL DELETE _MONTH" => \&interval_month,

lib/App/Dochazka/CLI/CommandMap.pm  view on Meta::CPAN

    "EMPLOYEE_SPEC INTERVAL FETCH _NUM" => \&interval_num_num1,
    "INTERVAL FILLUP _NUM" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL FILLUP _NUM" => \&interval_num_num1,
    "INTERVAL FILLUP DRY_RUN _NUM" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _NUM" => \&interval_num_num1,
    "INTERVAL SUMMARY _NUM" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL SUMMARY _NUM" => \&interval_num_num1,
    "INTERVAL REPORT _NUM" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL REPORT _NUM" => \&interval_num_num1,
    "INTERVAL DELETE _NUM" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL DELETE _NUM" => \&interval_num_num1,

    "INTERVAL _NUM _NUM1" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL _NUM _NUM1" => \&interval_num_num1,
    "INTERVAL FETCH _NUM _NUM1" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL FETCH _NUM _NUM1" => \&interval_num_num1,
    "INTERVAL FILLUP _NUM _NUM1" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL FILLUP _NUM _NUM1" => \&interval_num_num1,
    "INTERVAL FILLUP DRY_RUN _NUM _NUM1" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _NUM _NUM1" => \&interval_num_num1,
    "INTERVAL SUMMARY _NUM _NUM1" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL SUMMARY _NUM _NUM1" => \&interval_num_num1,
    "INTERVAL REPORT _NUM _NUM1" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL REPORT _NUM _NUM1" => \&interval_num_num1,
    "INTERVAL DELETE _NUM _NUM1" => \&interval_num_num1,
    "EMPLOYEE_SPEC INTERVAL DELETE _NUM _NUM1" => \&interval_num_num1,

    "INTERVAL FILLUP _TSRANGE" => \&interval_tsrange,
    "EMPLOYEE_SPEC INTERVAL FILLUP _TSRANGE" => \&interval_tsrange,
    "INTERVAL FILLUP DRY_RUN _TSRANGE" => \&interval_tsrange,
    "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _TSRANGE" => \&interval_tsrange,
    "INTERVAL SUMMARY _TSRANGE" => \&interval_tsrange,
    "EMPLOYEE_SPEC INTERVAL SUMMARY _TSRANGE" => \&interval_tsrange,
    "INTERVAL REPORT _TSRANGE" => \&interval_tsrange,
    "EMPLOYEE_SPEC INTERVAL REPORT _TSRANGE" => \&interval_tsrange,

    "INTERVAL FILLUP DATELIST _TERM" => \&interval_datelist,
    "EMPLOYEE_SPEC INTERVAL FILLUP DATELIST _TERM" => \&interval_datelist,
    "INTERVAL FILLUP DATELIST DRY_RUN _TERM" => \&interval_datelist,
    "EMPLOYEE_SPEC INTERVAL FILLUP DATELIST DRY_RUN _TERM" => \&interval_datelist,

    # add/insert new intervals
    "INTERVAL _TIME _TIME1 _TERM" => \&interval_new_time_time1,
    "INTERVAL _TIME _HYPHEN _TIME1 _TERM" => \&interval_new_time_time1,
    "INTERVAL _TIMERANGE _TERM" => \&interval_new_timerange,
    "INTERVAL _DATE _TIME _TIME1 _TERM" => \&interval_new_time_time1,
    "INTERVAL _DATE _TIME _HYPHEN _TIME1 _TERM" => \&interval_new_time_time1,
    "INTERVAL _DATE _TIMERANGE _TERM" => \&interval_new_timerange,
    "INTERVAL _DATE _TIME _DATE1 _TIME1 _TERM" => \&interval_new_date_time_date1_time1,
    "INTERVAL _DATE _TIME _HYPHEN _DATE1 _TIME1 _TERM" => \&interval_new_date_time_date1_time1,

    # Lock commands

    # Priv commands
    "PRIV" => \&show_priv_as_at,
    "PRIV _DATE" => \&show_priv_as_at,
    "EMPLOYEE_SPEC PRIV" => \&show_priv_as_at,
    "EMPLOYEE_SPEC PRIV _DATE" => \&show_priv_as_at,

    # Prompt date commands
    "PROMPT _DATE" => \&change_prompt_date,
    "PROMPT DATE _DATE" => \&change_prompt_date,

    # Schedule commands
    "SCHEDULE ALL" => \&schedule_all,
    "SCHEDULE ALL DISABLED" => \&schedule_all,
    "SCHEDULE" => \&show_schedule_as_at,
    "SCHEDULE _DATE" => \&show_schedule_as_at,
    "EMPLOYEE_SPEC SCHEDULE" => \&show_schedule_as_at,
    "EMPLOYEE_SPEC SCHEDULE _DATE" => \&show_schedule_as_at,
    "SCHEDULE _DOW _TIME _DOW1 _TIME1" => \&add_memsched_entry,
    "SCHEDULE _DOW _TIME _HYPHEN _DOW1 _TIME1" => \&add_memsched_entry,
    "SCHEDULE _DOW _TIMERANGE" => \&add_memsched_entry,
    "SCHEDULE ALL _TIMERANGE" => \&replicate_memsched_entry,
    "SCHEDULE CLEAR" => \&clear_memsched_entries,
    "SCHEDULE DUMP" => \&dump_memsched_entries,
    "SCHEDULE FETCH ALL" => \&fetch_all_schedules,
    "SCHEDULE FETCH ALL DISABLED" => \&fetch_all_schedules,
    "SCHEDULE MEMORY" => \&dump_memsched_entries,
    "SCHEDULE NEW" => \&schedule_new,
    "SCHEDULE SCODE _TERM" => \&assign_memsched_scode,
    "SCHEDULE_SPEC" => \&schedulespec,
    "SCHEDULE_SPEC SHOW" => \&schedulespec,
    "SCHEDULE_SPEC REMARK" => \&schedulespec_remark,
    "SCHEDULE_SPEC SCODE _TERM" => \&schedulespec_scode,
    "SCHEDULE_SPEC SET REMARK" => \&schedulespec_remark,
    "SCHEDULE_SPEC SET SCODE _TERM" => \&schedulespec_scode,

};



=head1 FUNCTIONS

=head2 go_exit

Return the "magic" status code that causes dochazka-cli to exit.

=cut

sub go_exit {
    return $CELL->status_ok( 'DOCHAZKA_CLI_EXIT', payload => "Dochazka over and out" );
}

1;



( run in 0.476 second using v1.01-cache-2.11-cpan-6aa56a78535 )