diff options
Diffstat (limited to 'captain/captian.f90')
-rw-r--r-- | captain/captian.f90 | 79 |
1 files changed, 77 insertions, 2 deletions
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)//" <options>" + Print *, " " + + Print *, "Options:" + Print *, " -h Display this help" + Print *, " -c <configfile> 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 |