mirror of
https://github.com/zhigang1992/graphql-engine.git
synced 2026-05-30 04:07:45 +08:00
This PR builds console static assets into the server docker image at `/srv/console-assets`. When env var `HASURA_GRAPHQL_CONSOLE_ASSETS_DIR=/srv/console-assets` or flag `--console-assets-dir=/srv/console-assets` is set on the server, the files in this directory are served at `/console/assets/*`.
The console html template will have a variable called `cdnAssets: false` when this flag is set and it loads assets from server itself instead of CDN.
The assets are moved to a new bucket with a new naming scheme:
```
graphql-engine-cdn.hasura.io/console/assets/
/common/{}
/versioned/<version/{}
/channel/<channel>/<version>/{}
```
Console served by CLI will still load assets from CDN - will fix that in the next release.
62 lines
1.6 KiB
Haskell
62 lines
1.6 KiB
Haskell
module Hasura.Server.Version
|
|
( currentVersion
|
|
, consoleVersion
|
|
, isDevVersion
|
|
)
|
|
where
|
|
|
|
import Control.Lens ((^.), (^?))
|
|
|
|
import qualified Data.SemVer as V
|
|
import qualified Data.Text as T
|
|
|
|
import Hasura.Prelude
|
|
import Hasura.Server.Utils (getValFromEnvOrScript)
|
|
|
|
version :: T.Text
|
|
version = T.dropWhileEnd (== '\n')
|
|
$(getValFromEnvOrScript "VERSION" "../scripts/get-version.sh")
|
|
|
|
parsedVersion :: Either String V.Version
|
|
parsedVersion = V.fromText $ T.dropWhile (== 'v') version
|
|
|
|
currentVersion :: T.Text
|
|
currentVersion = version
|
|
|
|
isDevVersion :: Bool
|
|
isDevVersion = case parsedVersion of
|
|
Left _ -> False
|
|
Right _ -> True
|
|
|
|
rawVersion :: T.Text
|
|
rawVersion = "versioned/" <> version
|
|
|
|
consoleVersion :: T.Text
|
|
consoleVersion = case parsedVersion of
|
|
Left _ -> rawVersion
|
|
Right v -> mkConsoleV v
|
|
|
|
mkConsoleV :: V.Version -> T.Text
|
|
mkConsoleV v = case getReleaseChannel v of
|
|
Nothing -> rawVersion
|
|
Just c -> T.pack $ "channel/" <> c <> "/" <> vMajMin
|
|
where
|
|
vMajMin = "v" <> show (v ^. V.major) <> "." <> show (v ^. V.minor)
|
|
|
|
getReleaseChannel :: V.Version -> Maybe String
|
|
getReleaseChannel sv = case sv ^. V.release of
|
|
[] -> Just "stable"
|
|
(mr:_) -> case getTextFromId mr of
|
|
Nothing -> Nothing
|
|
Just r -> case T.unpack r of
|
|
('a':'l':'p':'h':'a':_) -> Just "alpha"
|
|
('b':'e':'t':'a':_) -> Just "beta"
|
|
('r':'c':_) -> Just "rc"
|
|
_ -> Nothing
|
|
|
|
getTextFromId :: V.Identifier -> Maybe T.Text
|
|
getTextFromId i = Just i ^? (toTextualM . V._Textual)
|
|
where
|
|
toTextualM _ Nothing = pure Nothing
|
|
toTextualM f (Just a) = f a
|