From fd9077056f7f33c60b218636ead0644d42e75a09 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Sat, 27 Mar 2021 16:50:20 -0400 Subject: Minor cleanup of the template code. Started on main program handling requests. --- captain/captian.f90 | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 77 insertions(+), 2 deletions(-) (limited to 'captain/captian.f90') diff --git a/captain/captian.f90 b/captain/captian.f90 index e115280..432bb0a 100644 --- a/captain/captian.f90 +++ b/captain/captian.f90 @@ -1,12 +1,87 @@ program captain use captain_db +use config +use logging, only: initialize_log => initialize implicit none + integer::mode + integer, parameter::MODE_GEMINI = 1, & + MODE_CGI_HTML = 2 - call initialize_db("/tmp/test.db") + call random_seed() ! For possible crypto + + call parse_options() + + call initialize_db(database_filename) + call initialize_log(log_filename) - call add_player_db("windows", "asdf") + select case(mode) + case(MODE_GEMINI) + call handle_gemini() + end select call shutdown_db() + close(logunit) + +contains + + subroutine usage() + implicit none + + character(len=256)::pname + + call get_command_argument(0, pname) + + Print *, "Usage: "//trim(pname)//" " + Print *, " " + + Print *, "Options:" + Print *, " -h Display this help" + Print *, " -c Use the specified config file" + Print *, " -g Operate in Gemini mode" + Print *, " -w Operate in CGI mode (default)" + + end subroutine usage + + subroutine parse_options + use config + implicit none + + character(len=1024)::option + logical::config_loaded + integer::i + + config_loaded = .false. + mode = MODE_CGI_HTML + + i = 1 + do while(i <= command_argument_count()) + call get_command_argument(i, option) + + if(trim(option) == "-h") then + call usage() + stop + + else if(trim(option) == "-g") then + mode = MODE_GEMINI + + else if(trim(option) == "-c") then + i = i + 1 + call get_command_argument(i, option) + call load_configuration(trim(option)) + config_loaded = .true. + + end if + + i = i + 1 + end do + + ! Assign working directory from command if not specified + if(.not. config_loaded) then + Print *, "No configuration file specified" + stop + end if + + end subroutine parse_options end program captain \ No newline at end of file -- cgit v1.2.3