packages feed

scrapbook-0.3.2: src/ScrapBook/Cmd/Options.hs

{-# LANGUAGE DataKinds        #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE TypeOperators    #-}

module ScrapBook.Cmd.Options where

import           RIO

import           Data.Extensible
import           Data.Extensible.GetOpt
import           ScrapBook.Data.Format

type Options = Record
  '[ "input"   >: [FilePath]
   , "output"  >: Maybe FilePath
   , "write"   >: Format
   , "version" >: Bool
   ]

outputOpt :: OptDescr' (Maybe FilePath)
outputOpt =
  optionReqArg (pure . listToMaybe) ['o'] ["output"]
    "DIR" "Write output to DIR instead of stdout."

writeFormatOpt :: OptDescr' Format
writeFormatOpt =
  optionReqArg (pure . optFormat) ['t','w'] ["to","write"]
    "FORMAT" "Specify output format. default is `feed`."

versionOpt :: OptDescr' Bool
versionOpt = optFlag [] ["version"] "Show version"