nvfetcher-0.6.2.0: app/Config/Common.hs
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module Config.Common where
import Data.Text (Text)
import qualified Data.Text as T
import TOML
githubDecoder :: Decoder (Text, Text)
githubDecoder = makeDecoder $ \case
v@(String s) -> case T.split (== '/') s of
[owner, repo] -> pure (owner, repo)
_ -> invalidValue "unexpected github format: it should be in the format of [owner]/[repo]" v
v -> typeMismatch v
vscodeExtensionDecoder :: Decoder (Text, Text)
vscodeExtensionDecoder = makeDecoder $ \case
-- assume that we can't have '.' in extension's name
v@(String s) -> case T.split (== '.') s of
[publisher, extName] -> pure (publisher, extName)
_ -> invalidValue "unexpected vscode extension format: it should be in the format of [publisher].[extName]" v
v -> typeMismatch v