mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
34 lines
1.1 KiB
Haskell
34 lines
1.1 KiB
Haskell
{-# LANGUAGE DataKinds #-}
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
module Handler.Version where
|
|
|
|
import Startlude
|
|
|
|
import Yesod.Core
|
|
|
|
import Constants
|
|
import Foundation
|
|
import Handler.Types.Status
|
|
import Lib.Registry
|
|
import Lib.Semver
|
|
import Lib.Types.Semver
|
|
|
|
getVersionR :: Handler AppVersionRes
|
|
getVersionR = pure . AppVersionRes $ registryVersion
|
|
|
|
getVersionAppR :: Text -> Handler (Maybe AppVersionRes)
|
|
getVersionAppR appId = getVersionWSpec appResourceDir appExt
|
|
where
|
|
appExt = Extension (toS appId) :: Extension "s9pk"
|
|
|
|
getVersionSysR :: Text -> Handler (Maybe AppVersionRes)
|
|
getVersionSysR sysAppId = getVersionWSpec sysResourceDir sysExt
|
|
where
|
|
sysExt = Extension (toS sysAppId) :: Extension ""
|
|
|
|
getVersionWSpec :: KnownSymbol a => FilePath -> Extension a -> Handler (Maybe AppVersionRes)
|
|
getVersionWSpec rootDir ext = do
|
|
spec <- querySpecD mostRecentVersion <$> lookupGetParam "spec"
|
|
appVersions <- liftIO $ getAvailableAppVersions rootDir ext
|
|
pure . fmap (AppVersionRes . version) $ getSpecifiedAppVersion spec appVersions
|