github-workflow-commands-0.0.0.0: library/GitHub/Workflow/Command/Annotation/Location.hs
module GitHub.Workflow.Command.Annotation.Location
( Location (..)
, HasLocationMaybe (..)
, file
, position
, inFile
) where
import Control.Category
import Control.Lens (Lens', simple, (?~))
import Control.Lens.TH
import Data.Maybe (Maybe (..), maybe)
import Data.String (IsString (..))
import GitHub.Workflow.Command.Annotation.File
import GitHub.Workflow.Command.Annotation.Position
import GitHub.Workflow.Command.Syntax (AddToProperties (..), property)
data Location = Location
{ file :: File
-- ^ The path of the file for which the annotation should be created
, position :: Maybe Position
}
makeLensesFor
[ ("file", "file")
, ("position", "position")
]
''Location
instance IsString Location where
fromString = inFile . fromString
instance AddToProperties Location where
addToProperties x =
(property "file" ?~ fileValue x.file)
. maybe id addToProperties x.position
inFile :: File -> Location
inFile x = Location {file = x, position = Nothing}
class HasLocationMaybe a where
location :: Lens' a (Maybe Location)
instance HasLocationMaybe (Maybe Location) where
location = simple