Skip to content

Commit 78aece8

Browse files
authored
Merge pull request #383 from poseidon-framework/extraserverexec
added an extra executable just for the server
2 parents edc8849 + 3eab12c commit 78aece8

7 files changed

Lines changed: 105 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
- V 2.0.0.1:
2+
- Added an extra executable `poseidon-server` with slightly different compilation parameters to run poseidon webservers more independently and with specific runtime settings.
13
- V 2.0.0.0:
24
- Incorporated the poseidon-analysis-hs library with the xerxes CLI software tool executable into the poseidon-hs repository.
35
- Fixed two bugs in the handling of the new `referenceGenomeAssembly` POSEIDON.yml fields by `forge` and `genoconvert`.

poseidon-hs.cabal

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: poseidon-hs
2-
version: 2.0.0.0
2+
version: 2.0.0.1
33
synopsis: A package with tools for working with Poseidon genotype data
44
description: The tools in this package read and analyse Poseidon-formatted genotype databases, a modular system for storing genotype data from thousands of individuals.
55
license: MIT
@@ -54,6 +54,17 @@ executable trident
5454
filepath, co-log
5555
other-modules: Paths_poseidon_hs
5656
default-language: Haskell2010
57+
58+
executable poseidon-server
59+
main-is: Main-server.hs
60+
hs-source-dirs: src-executables
61+
build-depends: base, poseidon-hs, optparse-applicative, sequence-formats>=1.6.1, bytestring,
62+
filepath, co-log
63+
other-modules: Paths_poseidon_hs
64+
default-language: Haskell2010
65+
ghc-options:
66+
-threaded
67+
-rtsopts
5768

5869
Test-Suite poseidon-tools-tests
5970
type: exitcode-stdio-1.0

src-executables/Main-server.hs

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
{-# LANGUAGE OverloadedStrings #-}
2+
3+
import Paths_poseidon_hs (version)
4+
import Poseidon.CLI.Trident.OptparseApplicativeParsers
5+
import Poseidon.CLI.Trident.Serve (ServeOptions (..),
6+
runServerMainThread)
7+
import Poseidon.Core.PoseidonVersion (showPoseidonVersion,
8+
validPoseidonVersions)
9+
import Poseidon.Core.Utils (ErrorLength (..),
10+
LogMode (..),
11+
PlinkPopNameMode (..),
12+
PoseidonException (..),
13+
TestMode,
14+
logError,
15+
renderPoseidonException,
16+
usePoseidonLogger)
17+
18+
import Control.Applicative ((<|>))
19+
import Control.Exception (catch)
20+
import Data.List (intercalate)
21+
import Data.Version (showVersion)
22+
import qualified Options.Applicative as OP
23+
import System.Exit (exitFailure)
24+
import System.IO (hPutStrLn,
25+
stderr)
26+
27+
data Options = Options
28+
{ _logMode :: LogMode
29+
, _testMode :: TestMode
30+
, _errLength :: ErrorLength
31+
, _plinkMode :: PlinkPopNameMode
32+
, _serveOptions :: ServeOptions
33+
}
34+
35+
main :: IO ()
36+
main = do
37+
hPutStrLn stderr renderVersion
38+
hPutStrLn stderr ""
39+
Options logMode testMode errLength plinkMode serveOptions <-
40+
OP.customExecParser (OP.prefs OP.showHelpOnEmpty) optParserInfo
41+
catch (usePoseidonLogger logMode testMode plinkMode errLength $ runServerMainThread serveOptions)
42+
(handler logMode testMode plinkMode errLength)
43+
where
44+
handler :: LogMode -> TestMode -> PlinkPopNameMode -> ErrorLength -> PoseidonException -> IO ()
45+
handler l t pm len e = do
46+
usePoseidonLogger l t pm len $ logError $ renderPoseidonException e
47+
exitFailure
48+
49+
optParserInfo :: OP.ParserInfo Options
50+
optParserInfo = OP.info
51+
(OP.helper <*> versionOption <*> optionsParser)
52+
( OP.briefDesc <> OP.progDesc "Poseidon webserver")
53+
54+
optionsParser :: OP.Parser Options
55+
optionsParser =
56+
Options
57+
<$> (parseLogMode <|> parseDebugMode)
58+
<*> parseTestMode
59+
<*> parseErrorLength
60+
<*> parseInputPlinkPopMode
61+
<*> serveOptParser
62+
63+
versionOption :: OP.Parser (a -> a)
64+
versionOption =
65+
OP.infoOption
66+
(showVersion version)
67+
(OP.long "version" <> OP.help "Show version number")
68+
69+
renderVersion :: String
70+
renderVersion =
71+
"poseidon-server v" ++ showVersion version ++ " for poseidon v" ++
72+
intercalate ", v" (map showPoseidonVersion validPoseidonVersions) ++ "\n" ++
73+
"https://poseidon-framework.github.io"
74+
75+
serveOptParser :: OP.Parser ServeOptions
76+
serveOptParser =
77+
ServeOptions
78+
<$> parseArchiveConfig
79+
<*> parseMaybeZipDir
80+
<*> parsePort
81+
<*> parseIgnoreChecksums
82+
<*> parseMaybeCertFiles

test/PoseidonGoldenTests/GoldenTestCheckSumFile.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ ad7e56177aad0a720f0bde13d47f2ac1 forge forge/ForgePac19/CHANGELOG.md
131131
3288b6ff2d7b02eec0f34a8434e4b7e3 forge forge/ForgePac20/POSEIDON.yml
132132
100405d0cc3bf72c1c3d7b87b7a22029 forge forge/ForgePac20/ForgePac20.janno
133133
ef1646043331ed9d67e4072ee46eb9f4 forge forge/ForgePac21/POSEIDON.yml
134-
5cd1c0534c3a9b109617e970fd13aaa2 forge forge/ForgePac21/ForgePac21.vcf
134+
f3fedeec016bc13f11a093b0d506b8b2 forge forge/ForgePac21/ForgePac21.vcf
135135
848cf0fab32e4078a88cc17ad8ec3381 forge forge/ForgePac21/ForgePac21.janno
136136
a1daaa1ebc9c93405acb4a0f24ffa355 forge forge/ForgePac21/ForgePac21.ssf
137137
b4f71aff4fbc11594008c3811781cc43 forge forge/ForgePac21/ForgePac21.bib
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
title: Chronicle title
22
description: Chronicle description
33
chronicleVersion: 0.2.0
4-
lastModified: 2026-04-16
4+
lastModified: 2026-05-20
55
packages:
66
- title: Lamnidis_2018
77
version: 1.0.0
8-
commit: a36fe019e42ebb2be36a1efa621b9268515b7dea
8+
commit: e03e8d9fd00feddb6b203ce6e62b46bee612d7d9
99
path: Lamnidis_2018
1010
- title: Lamnidis_2018
1111
version: 1.0.1
12-
commit: a36fe019e42ebb2be36a1efa621b9268515b7dea
12+
commit: e03e8d9fd00feddb6b203ce6e62b46bee612d7d9
1313
path: Lamnidis_2018_newVersion
1414
- title: Schiffels
1515
version: 1.1.1
16-
commit: 9f7ca4ae481e1589485c61c9a6cce5798fb05602
16+
commit: 0043b25d5dfd9f5ff929f7dd2fd171b14cef685a
1717
path: Schiffels
1818
- title: Schiffels_2016
1919
version: 1.0.1
20-
commit: a36fe019e42ebb2be36a1efa621b9268515b7dea
20+
commit: e03e8d9fd00feddb6b203ce6e62b46bee612d7d9
2121
path: Schiffels_2016
2222
- title: Schmid_2028
2323
version: 1.0.0
24-
commit: a36fe019e42ebb2be36a1efa621b9268515b7dea
24+
commit: e03e8d9fd00feddb6b203ce6e62b46bee612d7d9
2525
path: Schmid_2028
2626
- title: Wang_2020
2727
version: 0.1.0
28-
commit: a36fe019e42ebb2be36a1efa621b9268515b7dea
28+
commit: e03e8d9fd00feddb6b203ce6e62b46bee612d7d9
2929
path: Wang_2020

test/PoseidonGoldenTests/GoldenTestData/forge/ForgePac21/ForgePac21.vcf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
##fileformat=VCFv4.2
2-
##source=trident_v2.0.0.0
2+
##source=trident_v2.0.0.1
33
##group_names=POP2,POP2,POP2,POP2,3,5
44
##genetic_sex=F,F,M,F,F,F
55
##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
Binary file not shown.

0 commit comments

Comments
 (0)