From 3a5975f0464880734dbe948de87edd067cc2ab28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Ludwig?= Date: Fri, 4 Nov 2016 21:34:01 +0100 Subject: [PATCH] Add appmain for backwards compatibility. --- dub.sdl | 2 ++ source/vibe/appmain.d | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 source/vibe/appmain.d diff --git a/dub.sdl b/dub.sdl index bdaa0e8..4b04bbb 100644 --- a/dub.sdl +++ b/dub.sdl @@ -8,6 +8,8 @@ dependency "eventcore" version="~>0.5.0" //subConfiguration "eventcore" "libasync" +mainSourceFile "source/vibe/appmain.d" + configuration "unittest" { versions "VibeMutexLog" "VibeAsyncLog" } diff --git a/source/vibe/appmain.d b/source/vibe/appmain.d new file mode 100644 index 0000000..21a4f0f --- /dev/null +++ b/source/vibe/appmain.d @@ -0,0 +1,46 @@ +/** + Provides vibe based applications with a central program entry point. + + This module is included automatically through the import 'vibe.d'. It will provide a default + application entry point which parses command line arguments, reads the global vibe configuration + file, and starts the event loop. + + The application itself then just has to initialize itself from within a 'static this' module + constructor and perform the appropriate calls to listen for connections or other operations. + + If you want to provide your own main function, you have to import vibe.vibe instead of + vibe.d and define a -version=VibeCustomMain. Be sure to call vibe.core.core.runEventLoop + at the end of your main function in this case. Also beware that you have to make appropriate + calls to vibe.core.args.finalizeCommandLineOptions and vibe.core.core.lowerPrivileges to get the + same behavior. + + Copyright: © 2012-2016 RejectedSoftware e.K. + License: Subject to the terms of the MIT license, as written in the included LICENSE.txt file. + Authors: Sönke Ludwig +*/ +module vibe.appmain; + +version (VibeDefaultMain): + +version (VibeCustomMain) { + static assert(false, "Both, VibeCustomMain and VibeDefaultMain are defined. " + ~ "Either define only VibeDefaultMain, or nothing at all (VibeCustomMain " + ~ "has no effect since 0.7.26)."); +} + +/** + The predefined vibe.d application entry point. + + This function will automatically be executed if you import the module vibe.d in your code. It + will perform default command line parsing and starts the event loop. +*/ +int main() +{ + import vibe.core.core : runApplication; + + version (unittest) { + return 0; + } else { + return runApplication(); + } +}