packages feed

yu-launch 0.1.0.0 → 0.1.0.6

raw patch · 4 files changed

+62/−50 lines, 4 files

Files

src/Main.hs view
@@ -14,20 +14,30 @@ import qualified Yu.Import.ByteString.Lazy as BL import qualified Yu.Import.Text            as T import           Yu.Launch+import Paths_yu_launch   main :: IO () main = do-  rain <- createXiao =<< parseCfgFile <$> getContents-  case rain of-    Just r@Xiao{..} -> warp rainPort r+  xiao <- createXiao =<< parseCfgFile <$> fetchConfig+  case xiao of+    Just x@Xiao{..} -> warp xiaoPort x     _               -> hPutStrLn stderr "can not parse"   return ()  -parseCfgFileJSON :: String -> Maybe [XiaoConfig]+fetchConfig :: IO String+fetchConfig = do+  cfg1 <- getContents+  etcP <- getSysconfDir+  if null cfg1+    then readFile $ etcP ++ "/xiao/config"+    else return cfg1+++parseCfgFileJSON :: String -> Maybe XiaoConfigServer parseCfgFileJSON str = A.decode $ BL.pack str-parseCfgFileYAML :: String -> Maybe [XiaoConfig]+parseCfgFileYAML :: String -> Maybe XiaoConfigServer parseCfgFileYAML str = Y.decode $  B.pack str-parseCfgFile :: String ->  [XiaoConfig]-parseCfgFile str =  fromMaybe [] $ parseCfgFileYAML str <|> parseCfgFileJSON str+parseCfgFile :: String -> Maybe XiaoConfigServer+parseCfgFile str =  parseCfgFileYAML str <|> parseCfgFileJSON str
src/Yu/Launch.hs view
@@ -17,25 +17,25 @@ import           Yesod.Core.Dispatch import           Yu.Core.Control import           Yu.Core.Model-import qualified Yu.Import.Text      as T+import qualified Yu.Import.ByteString      as B+import qualified Yu.Import.Text            as T import           Yu.Launch.Internal   mkYesodDispatch "Xiao" resourcesXiao -createXiao :: [XiaoConfig]+createXiao :: Maybe XiaoConfigServer            -> IO (Maybe Xiao)-createXiao rcs = do-  case (filter rainConfigIsServer rcs, filter (not.rainConfigIsServer) rcs) of-    (RCServer{..}:_,RCDatabase{..}:_) -> do-      cp <- createPool (connect $ readHostPort rcdDBAddr) close 10 20 1000-      return $ Just $ Xiao { rainTitle    = rcsTitle-                           , rainDb       = rcdDB-                           , rainDBUP     = (T.pack rcdUser,T.pack rcdPass)-                           , rainConnPool = cp-                           , rainPort     = rcsPort-                           }-    _ -> do-      hPutStrLn stderr "invaild config"-      return Nothing+createXiao Nothing   = return Nothing+createXiao (Just xc) = do+  let XCS{..} = xc+      XCD{..} = xcsDB+  cp <- createPool (connect $ readHostPort xcdHost) close 10 20 1000+  return $ Just $ Xiao { xiaoTitle    = xcsTitle+                       , xiaoDb       = xcdName+                       , xiaoDBUP     = (T.pack xcdUser,T.pack xcdPass)+                       , xiaoConnPool = cp+                       , xiaoPort     = xcsPort+                       , xiaoKey      = B.pack xcsKey+                       } 
src/Yu/Launch/Internal.hs view
@@ -9,10 +9,10 @@  module Yu.Launch.Internal        ( Xiao(..)-       , XiaoConfig(..)+       , XiaoConfigServer(..)+       , XiaoConfigDatabase(..)        , Route(..)        , resourcesXiao-       , rainConfigIsServer        ) where  import           Control.Monad.IO.Class@@ -39,28 +39,30 @@   -- | basic config-data XiaoConfig = RCServer-                  { rcsPort  :: Int-                  , rcsTitle :: T.Text-                  }-                | RCDatabase-                  { rcdDB     :: T.Text-                  , rcdDBAddr :: String-                  , rcdUser   :: String-                  , rcdPass   :: String-                  }-                  deriving (Show,Eq)-deriveJSON defaultOptions ''XiaoConfig-rainConfigIsServer :: XiaoConfig -> Bool-rainConfigIsServer RCServer{..}   = True-rainConfigIsServer RCDatabase{..} = False+data XiaoConfigServer = XCS+  { xcsPort  :: Int+  , xcsTitle :: T.Text+  , xcsKey   :: String+  , xcsDB    :: XiaoConfigDatabase+  }+  deriving (Show,Eq)+data XiaoConfigDatabase = XCD+  { xcdName :: T.Text+  , xcdHost :: String+  , xcdUser :: String+  , xcdPass :: String+  }+  deriving (Show,Eq) +deriveJSON defaultOptions {fieldLabelModifier = map toLower . drop 3 } ''XiaoConfigServer+deriveJSON defaultOptions {fieldLabelModifier = map toLower . drop 3} ''XiaoConfigDatabase -data Xiao = Xiao { rainTitle    :: T.Text-                 , rainDb       :: T.Text-                 , rainDBUP     :: (T.Text, T.Text)-                 , rainConnPool :: ConnectionPool-                 , rainPort     :: Int+data Xiao = Xiao { xiaoTitle    :: T.Text+                 , xiaoDb       :: T.Text+                 , xiaoDBUP     :: (T.Text, T.Text)+                 , xiaoConnPool :: ConnectionPool+                 , xiaoPort     :: Int+                 , xiaoKey      :: B.ByteString                  }  mkYesodData "Xiao" [parseRoutes| /*Texts UrlR GET PUT DELETE |]@@ -80,19 +82,19 @@   maximumContentLength _ _ = Nothing  instance Auth Xiao SHA256 where-  tokenItem _ = liftIO $ B.pack <$> getEnv "RAIN_ENV"+  tokenItem x = return $ xiaoKey x   tokenHash _ = return SHA256  instance Hamletic Xiao (HandlerT Xiao IO) where-  getTitle = rainTitle <$> getYesod+  getTitle = xiaoTitle <$> getYesod   getFramePrefix = return ".frame"   getVersion = return $(stringE (show version))   getRaw = return False  instance Mongodic Xiao (HandlerT Xiao IO) where   getDefaultAccessMode = return master-  getDefaultDb = rainDb <$> getYesod-  getDbUP = rainDBUP <$> getYesod-  getPool = rainConnPool <$> getYesod+  getDefaultDb = xiaoDb <$> getYesod+  getDbUP = xiaoDBUP <$> getYesod+  getPool = xiaoConnPool <$> getYesod  instance Controly Xiao
yu-launch.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                yu-launch-version:             0.1.0.0+version:             0.1.0.6 synopsis:            The launcher for Yu. description:         The launcher for Yu. homepage:            https://github.com/Qinka/Yu