aboutsummaryrefslogtreecommitdiff
path: root/captain/captian.f90
diff options
context:
space:
mode:
authorJeffrey Armstrong <jeff@approximatrix.com>2021-03-27 16:50:20 -0400
committerJeffrey Armstrong <jeff@approximatrix.com>2021-03-27 16:50:20 -0400
commitfd9077056f7f33c60b218636ead0644d42e75a09 (patch)
tree9010b2d5ed8d22fa1e571cdec79f8a6f0c30d66c /captain/captian.f90
parent0b8ec300ca4f2f2c3ce09d14ac1eed5478ea6420 (diff)
downloadlevitating-fd9077056f7f33c60b218636ead0644d42e75a09.tar.gz
levitating-fd9077056f7f33c60b218636ead0644d42e75a09.zip
Minor cleanup of the template code. Started on main program handling requests.
Diffstat (limited to 'captain/captian.f90')
-rw-r--r--captain/captian.f9079
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