packages feed

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