{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
module NvFetcher.Types
(
Version (..),
Checksum (..),
Branch (..),
NixExpr,
VersionChange (..),
WithPackageKey (..),
VersionSortMethod (..),
ListOptions (..),
VersionSource (..),
NvcheckerResult (..),
NvcheckerRaw (..),
CheckVersion (..),
NvcheckerOptions (..),
UseStaleVersion (..),
NixFetcher (..),
FetchResult,
FetchStatus (..),
ExtractSrcQ (..),
FetchRustGitDepsQ (..),
Core (..),
PackageName,
PackageFetcher,
PackageExtractSrc (..),
PackageCargoLockFiles (..),
PackagePassthru (..),
Package (..),
PackageKey (..),
PackageResult (..),
)
where
import qualified Data.Aeson as A
import Data.Coerce (coerce)
import Data.Default
import Data.HashMap.Strict (HashMap)
import qualified Data.List.NonEmpty as NE
import Data.Maybe (fromMaybe, isNothing)
import Data.String (IsString)
import Data.Text (Text)
import qualified Data.Text as T
import Development.Shake
import Development.Shake.Classes
import GHC.Generics (Generic)
import Prettyprinter
newtype Version = Version Text
deriving newtype (Version -> Version -> Bool
(Version -> Version -> Bool)
-> (Version -> Version -> Bool) -> Eq Version
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Version -> Version -> Bool
$c/= :: Version -> Version -> Bool
== :: Version -> Version -> Bool
$c== :: Version -> Version -> Bool
Eq, Int -> Version -> ShowS
[Version] -> ShowS
Version -> String
(Int -> Version -> ShowS)
-> (Version -> String) -> ([Version] -> ShowS) -> Show Version
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Version] -> ShowS
$cshowList :: [Version] -> ShowS
show :: Version -> String
$cshow :: Version -> String
showsPrec :: Int -> Version -> ShowS
$cshowsPrec :: Int -> Version -> ShowS
Show, Eq Version
Eq Version
-> (Version -> Version -> Ordering)
-> (Version -> Version -> Bool)
-> (Version -> Version -> Bool)
-> (Version -> Version -> Bool)
-> (Version -> Version -> Bool)
-> (Version -> Version -> Version)
-> (Version -> Version -> Version)
-> Ord Version
Version -> Version -> Bool
Version -> Version -> Ordering
Version -> Version -> Version
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Version -> Version -> Version
$cmin :: Version -> Version -> Version
max :: Version -> Version -> Version
$cmax :: Version -> Version -> Version
>= :: Version -> Version -> Bool
$c>= :: Version -> Version -> Bool
> :: Version -> Version -> Bool
$c> :: Version -> Version -> Bool
<= :: Version -> Version -> Bool
$c<= :: Version -> Version -> Bool
< :: Version -> Version -> Bool
$c< :: Version -> Version -> Bool
compare :: Version -> Version -> Ordering
$ccompare :: Version -> Version -> Ordering
$cp1Ord :: Eq Version
Ord, String -> Version
(String -> Version) -> IsString Version
forall a. (String -> a) -> IsString a
fromString :: String -> Version
$cfromString :: String -> Version
IsString, b -> Version -> Version
NonEmpty Version -> Version
Version -> Version -> Version
(Version -> Version -> Version)
-> (NonEmpty Version -> Version)
-> (forall b. Integral b => b -> Version -> Version)
-> Semigroup Version
forall b. Integral b => b -> Version -> Version
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
stimes :: b -> Version -> Version
$cstimes :: forall b. Integral b => b -> Version -> Version
sconcat :: NonEmpty Version -> Version
$csconcat :: NonEmpty Version -> Version
<> :: Version -> Version -> Version
$c<> :: Version -> Version -> Version
Semigroup, Semigroup Version
Version
Semigroup Version
-> Version
-> (Version -> Version -> Version)
-> ([Version] -> Version)
-> Monoid Version
[Version] -> Version
Version -> Version -> Version
forall a.
Semigroup a -> a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
mconcat :: [Version] -> Version
$cmconcat :: [Version] -> Version
mappend :: Version -> Version -> Version
$cmappend :: Version -> Version -> Version
mempty :: Version
$cmempty :: Version
$cp1Monoid :: Semigroup Version
Monoid, Value -> Parser [Version]
Value -> Parser Version
(Value -> Parser Version)
-> (Value -> Parser [Version]) -> FromJSON Version
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [Version]
$cparseJSONList :: Value -> Parser [Version]
parseJSON :: Value -> Parser Version
$cparseJSON :: Value -> Parser Version
A.FromJSON, [Version] -> Encoding
[Version] -> Value
Version -> Encoding
Version -> Value
(Version -> Value)
-> (Version -> Encoding)
-> ([Version] -> Value)
-> ([Version] -> Encoding)
-> ToJSON Version
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [Version] -> Encoding
$ctoEncodingList :: [Version] -> Encoding
toJSONList :: [Version] -> Value
$ctoJSONList :: [Version] -> Value
toEncoding :: Version -> Encoding
$ctoEncoding :: Version -> Encoding
toJSON :: Version -> Value
$ctoJSON :: Version -> Value
A.ToJSON, [Version] -> Doc ann
Version -> Doc ann
(forall ann. Version -> Doc ann)
-> (forall ann. [Version] -> Doc ann) -> Pretty Version
forall ann. [Version] -> Doc ann
forall ann. Version -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
prettyList :: [Version] -> Doc ann
$cprettyList :: forall ann. [Version] -> Doc ann
pretty :: Version -> Doc ann
$cpretty :: forall ann. Version -> Doc ann
Pretty)
deriving stock (Typeable, (forall x. Version -> Rep Version x)
-> (forall x. Rep Version x -> Version) -> Generic Version
forall x. Rep Version x -> Version
forall x. Version -> Rep Version x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Version x -> Version
$cfrom :: forall x. Version -> Rep Version x
Generic)
deriving anyclass (Eq Version
Eq Version
-> (Int -> Version -> Int) -> (Version -> Int) -> Hashable Version
Int -> Version -> Int
Version -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Version -> Int
$chash :: Version -> Int
hashWithSalt :: Int -> Version -> Int
$chashWithSalt :: Int -> Version -> Int
$cp1Hashable :: Eq Version
Hashable, Get Version
[Version] -> Put
Version -> Put
(Version -> Put)
-> Get Version -> ([Version] -> Put) -> Binary Version
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [Version] -> Put
$cputList :: [Version] -> Put
get :: Get Version
$cget :: Get Version
put :: Version -> Put
$cput :: Version -> Put
Binary, Version -> ()
(Version -> ()) -> NFData Version
forall a. (a -> ()) -> NFData a
rnf :: Version -> ()
$crnf :: Version -> ()
NFData)
newtype Checksum = Checksum Text
deriving newtype (Int -> Checksum -> ShowS
[Checksum] -> ShowS
Checksum -> String
(Int -> Checksum -> ShowS)
-> (Checksum -> String) -> ([Checksum] -> ShowS) -> Show Checksum
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Checksum] -> ShowS
$cshowList :: [Checksum] -> ShowS
show :: Checksum -> String
$cshow :: Checksum -> String
showsPrec :: Int -> Checksum -> ShowS
$cshowsPrec :: Int -> Checksum -> ShowS
Show, Checksum -> Checksum -> Bool
(Checksum -> Checksum -> Bool)
-> (Checksum -> Checksum -> Bool) -> Eq Checksum
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Checksum -> Checksum -> Bool
$c/= :: Checksum -> Checksum -> Bool
== :: Checksum -> Checksum -> Bool
$c== :: Checksum -> Checksum -> Bool
Eq, Eq Checksum
Eq Checksum
-> (Checksum -> Checksum -> Ordering)
-> (Checksum -> Checksum -> Bool)
-> (Checksum -> Checksum -> Bool)
-> (Checksum -> Checksum -> Bool)
-> (Checksum -> Checksum -> Bool)
-> (Checksum -> Checksum -> Checksum)
-> (Checksum -> Checksum -> Checksum)
-> Ord Checksum
Checksum -> Checksum -> Bool
Checksum -> Checksum -> Ordering
Checksum -> Checksum -> Checksum
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Checksum -> Checksum -> Checksum
$cmin :: Checksum -> Checksum -> Checksum
max :: Checksum -> Checksum -> Checksum
$cmax :: Checksum -> Checksum -> Checksum
>= :: Checksum -> Checksum -> Bool
$c>= :: Checksum -> Checksum -> Bool
> :: Checksum -> Checksum -> Bool
$c> :: Checksum -> Checksum -> Bool
<= :: Checksum -> Checksum -> Bool
$c<= :: Checksum -> Checksum -> Bool
< :: Checksum -> Checksum -> Bool
$c< :: Checksum -> Checksum -> Bool
compare :: Checksum -> Checksum -> Ordering
$ccompare :: Checksum -> Checksum -> Ordering
$cp1Ord :: Eq Checksum
Ord, Value -> Parser [Checksum]
Value -> Parser Checksum
(Value -> Parser Checksum)
-> (Value -> Parser [Checksum]) -> FromJSON Checksum
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [Checksum]
$cparseJSONList :: Value -> Parser [Checksum]
parseJSON :: Value -> Parser Checksum
$cparseJSON :: Value -> Parser Checksum
A.FromJSON, [Checksum] -> Encoding
[Checksum] -> Value
Checksum -> Encoding
Checksum -> Value
(Checksum -> Value)
-> (Checksum -> Encoding)
-> ([Checksum] -> Value)
-> ([Checksum] -> Encoding)
-> ToJSON Checksum
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [Checksum] -> Encoding
$ctoEncodingList :: [Checksum] -> Encoding
toJSONList :: [Checksum] -> Value
$ctoJSONList :: [Checksum] -> Value
toEncoding :: Checksum -> Encoding
$ctoEncoding :: Checksum -> Encoding
toJSON :: Checksum -> Value
$ctoJSON :: Checksum -> Value
A.ToJSON, [Checksum] -> Doc ann
Checksum -> Doc ann
(forall ann. Checksum -> Doc ann)
-> (forall ann. [Checksum] -> Doc ann) -> Pretty Checksum
forall ann. [Checksum] -> Doc ann
forall ann. Checksum -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
prettyList :: [Checksum] -> Doc ann
$cprettyList :: forall ann. [Checksum] -> Doc ann
pretty :: Checksum -> Doc ann
$cpretty :: forall ann. Checksum -> Doc ann
Pretty)
deriving stock (Typeable, (forall x. Checksum -> Rep Checksum x)
-> (forall x. Rep Checksum x -> Checksum) -> Generic Checksum
forall x. Rep Checksum x -> Checksum
forall x. Checksum -> Rep Checksum x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Checksum x -> Checksum
$cfrom :: forall x. Checksum -> Rep Checksum x
Generic)
deriving anyclass (Eq Checksum
Eq Checksum
-> (Int -> Checksum -> Int)
-> (Checksum -> Int)
-> Hashable Checksum
Int -> Checksum -> Int
Checksum -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Checksum -> Int
$chash :: Checksum -> Int
hashWithSalt :: Int -> Checksum -> Int
$chashWithSalt :: Int -> Checksum -> Int
$cp1Hashable :: Eq Checksum
Hashable, Get Checksum
[Checksum] -> Put
Checksum -> Put
(Checksum -> Put)
-> Get Checksum -> ([Checksum] -> Put) -> Binary Checksum
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [Checksum] -> Put
$cputList :: [Checksum] -> Put
get :: Get Checksum
$cget :: Get Checksum
put :: Checksum -> Put
$cput :: Checksum -> Put
Binary, Checksum -> ()
(Checksum -> ()) -> NFData Checksum
forall a. (a -> ()) -> NFData a
rnf :: Checksum -> ()
$crnf :: Checksum -> ()
NFData)
newtype Branch = Branch (Maybe Text)
deriving newtype (Int -> Branch -> ShowS
[Branch] -> ShowS
Branch -> String
(Int -> Branch -> ShowS)
-> (Branch -> String) -> ([Branch] -> ShowS) -> Show Branch
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Branch] -> ShowS
$cshowList :: [Branch] -> ShowS
show :: Branch -> String
$cshow :: Branch -> String
showsPrec :: Int -> Branch -> ShowS
$cshowsPrec :: Int -> Branch -> ShowS
Show, Branch -> Branch -> Bool
(Branch -> Branch -> Bool)
-> (Branch -> Branch -> Bool) -> Eq Branch
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Branch -> Branch -> Bool
$c/= :: Branch -> Branch -> Bool
== :: Branch -> Branch -> Bool
$c== :: Branch -> Branch -> Bool
Eq, Eq Branch
Eq Branch
-> (Branch -> Branch -> Ordering)
-> (Branch -> Branch -> Bool)
-> (Branch -> Branch -> Bool)
-> (Branch -> Branch -> Bool)
-> (Branch -> Branch -> Bool)
-> (Branch -> Branch -> Branch)
-> (Branch -> Branch -> Branch)
-> Ord Branch
Branch -> Branch -> Bool
Branch -> Branch -> Ordering
Branch -> Branch -> Branch
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Branch -> Branch -> Branch
$cmin :: Branch -> Branch -> Branch
max :: Branch -> Branch -> Branch
$cmax :: Branch -> Branch -> Branch
>= :: Branch -> Branch -> Bool
$c>= :: Branch -> Branch -> Bool
> :: Branch -> Branch -> Bool
$c> :: Branch -> Branch -> Bool
<= :: Branch -> Branch -> Bool
$c<= :: Branch -> Branch -> Bool
< :: Branch -> Branch -> Bool
$c< :: Branch -> Branch -> Bool
compare :: Branch -> Branch -> Ordering
$ccompare :: Branch -> Branch -> Ordering
$cp1Ord :: Eq Branch
Ord, Branch
Branch -> Default Branch
forall a. a -> Default a
def :: Branch
$cdef :: Branch
Default, [Branch] -> Doc ann
Branch -> Doc ann
(forall ann. Branch -> Doc ann)
-> (forall ann. [Branch] -> Doc ann) -> Pretty Branch
forall ann. [Branch] -> Doc ann
forall ann. Branch -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
prettyList :: [Branch] -> Doc ann
$cprettyList :: forall ann. [Branch] -> Doc ann
pretty :: Branch -> Doc ann
$cpretty :: forall ann. Branch -> Doc ann
Pretty)
deriving stock (Typeable, (forall x. Branch -> Rep Branch x)
-> (forall x. Rep Branch x -> Branch) -> Generic Branch
forall x. Rep Branch x -> Branch
forall x. Branch -> Rep Branch x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Branch x -> Branch
$cfrom :: forall x. Branch -> Rep Branch x
Generic)
deriving anyclass (Eq Branch
Eq Branch
-> (Int -> Branch -> Int) -> (Branch -> Int) -> Hashable Branch
Int -> Branch -> Int
Branch -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Branch -> Int
$chash :: Branch -> Int
hashWithSalt :: Int -> Branch -> Int
$chashWithSalt :: Int -> Branch -> Int
$cp1Hashable :: Eq Branch
Hashable, Get Branch
[Branch] -> Put
Branch -> Put
(Branch -> Put) -> Get Branch -> ([Branch] -> Put) -> Binary Branch
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [Branch] -> Put
$cputList :: [Branch] -> Put
get :: Get Branch
$cget :: Get Branch
put :: Branch -> Put
$cput :: Branch -> Put
Binary, Branch -> ()
(Branch -> ()) -> NFData Branch
forall a. (a -> ()) -> NFData a
rnf :: Branch -> ()
$crnf :: Branch -> ()
NFData)
data VersionChange = VersionChange
{ VersionChange -> PackageName
vcName :: PackageName,
VersionChange -> Maybe Version
vcOld :: Maybe Version,
VersionChange -> Version
vcNew :: Version
}
deriving (VersionChange -> VersionChange -> Bool
(VersionChange -> VersionChange -> Bool)
-> (VersionChange -> VersionChange -> Bool) -> Eq VersionChange
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VersionChange -> VersionChange -> Bool
$c/= :: VersionChange -> VersionChange -> Bool
== :: VersionChange -> VersionChange -> Bool
$c== :: VersionChange -> VersionChange -> Bool
Eq)
instance Show VersionChange where
show :: VersionChange -> String
show VersionChange {Maybe Version
PackageName
Version
vcNew :: Version
vcOld :: Maybe Version
vcName :: PackageName
vcNew :: VersionChange -> Version
vcOld :: VersionChange -> Maybe Version
vcName :: VersionChange -> PackageName
..} =
PackageName -> String
T.unpack (PackageName -> String) -> PackageName -> String
forall a b. (a -> b) -> a -> b
$ PackageName
vcName PackageName -> PackageName -> PackageName
forall a. Semigroup a => a -> a -> a
<> PackageName
": " PackageName -> PackageName -> PackageName
forall a. Semigroup a => a -> a -> a
<> PackageName -> Maybe PackageName -> PackageName
forall a. a -> Maybe a -> a
fromMaybe PackageName
"∅" (Maybe Version -> Maybe PackageName
coerce Maybe Version
vcOld) PackageName -> PackageName -> PackageName
forall a. Semigroup a => a -> a -> a
<> PackageName
" → " PackageName -> PackageName -> PackageName
forall a. Semigroup a => a -> a -> a
<> Version -> PackageName
coerce Version
vcNew
type NixExpr = Text
data VersionSortMethod = ParseVersion | Vercmp
deriving (Typeable, VersionSortMethod -> VersionSortMethod -> Bool
(VersionSortMethod -> VersionSortMethod -> Bool)
-> (VersionSortMethod -> VersionSortMethod -> Bool)
-> Eq VersionSortMethod
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VersionSortMethod -> VersionSortMethod -> Bool
$c/= :: VersionSortMethod -> VersionSortMethod -> Bool
== :: VersionSortMethod -> VersionSortMethod -> Bool
$c== :: VersionSortMethod -> VersionSortMethod -> Bool
Eq, Eq VersionSortMethod
Eq VersionSortMethod
-> (VersionSortMethod -> VersionSortMethod -> Ordering)
-> (VersionSortMethod -> VersionSortMethod -> Bool)
-> (VersionSortMethod -> VersionSortMethod -> Bool)
-> (VersionSortMethod -> VersionSortMethod -> Bool)
-> (VersionSortMethod -> VersionSortMethod -> Bool)
-> (VersionSortMethod -> VersionSortMethod -> VersionSortMethod)
-> (VersionSortMethod -> VersionSortMethod -> VersionSortMethod)
-> Ord VersionSortMethod
VersionSortMethod -> VersionSortMethod -> Bool
VersionSortMethod -> VersionSortMethod -> Ordering
VersionSortMethod -> VersionSortMethod -> VersionSortMethod
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: VersionSortMethod -> VersionSortMethod -> VersionSortMethod
$cmin :: VersionSortMethod -> VersionSortMethod -> VersionSortMethod
max :: VersionSortMethod -> VersionSortMethod -> VersionSortMethod
$cmax :: VersionSortMethod -> VersionSortMethod -> VersionSortMethod
>= :: VersionSortMethod -> VersionSortMethod -> Bool
$c>= :: VersionSortMethod -> VersionSortMethod -> Bool
> :: VersionSortMethod -> VersionSortMethod -> Bool
$c> :: VersionSortMethod -> VersionSortMethod -> Bool
<= :: VersionSortMethod -> VersionSortMethod -> Bool
$c<= :: VersionSortMethod -> VersionSortMethod -> Bool
< :: VersionSortMethod -> VersionSortMethod -> Bool
$c< :: VersionSortMethod -> VersionSortMethod -> Bool
compare :: VersionSortMethod -> VersionSortMethod -> Ordering
$ccompare :: VersionSortMethod -> VersionSortMethod -> Ordering
$cp1Ord :: Eq VersionSortMethod
Ord, Int -> VersionSortMethod
VersionSortMethod -> Int
VersionSortMethod -> [VersionSortMethod]
VersionSortMethod -> VersionSortMethod
VersionSortMethod -> VersionSortMethod -> [VersionSortMethod]
VersionSortMethod
-> VersionSortMethod -> VersionSortMethod -> [VersionSortMethod]
(VersionSortMethod -> VersionSortMethod)
-> (VersionSortMethod -> VersionSortMethod)
-> (Int -> VersionSortMethod)
-> (VersionSortMethod -> Int)
-> (VersionSortMethod -> [VersionSortMethod])
-> (VersionSortMethod -> VersionSortMethod -> [VersionSortMethod])
-> (VersionSortMethod -> VersionSortMethod -> [VersionSortMethod])
-> (VersionSortMethod
-> VersionSortMethod -> VersionSortMethod -> [VersionSortMethod])
-> Enum VersionSortMethod
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: VersionSortMethod
-> VersionSortMethod -> VersionSortMethod -> [VersionSortMethod]
$cenumFromThenTo :: VersionSortMethod
-> VersionSortMethod -> VersionSortMethod -> [VersionSortMethod]
enumFromTo :: VersionSortMethod -> VersionSortMethod -> [VersionSortMethod]
$cenumFromTo :: VersionSortMethod -> VersionSortMethod -> [VersionSortMethod]
enumFromThen :: VersionSortMethod -> VersionSortMethod -> [VersionSortMethod]
$cenumFromThen :: VersionSortMethod -> VersionSortMethod -> [VersionSortMethod]
enumFrom :: VersionSortMethod -> [VersionSortMethod]
$cenumFrom :: VersionSortMethod -> [VersionSortMethod]
fromEnum :: VersionSortMethod -> Int
$cfromEnum :: VersionSortMethod -> Int
toEnum :: Int -> VersionSortMethod
$ctoEnum :: Int -> VersionSortMethod
pred :: VersionSortMethod -> VersionSortMethod
$cpred :: VersionSortMethod -> VersionSortMethod
succ :: VersionSortMethod -> VersionSortMethod
$csucc :: VersionSortMethod -> VersionSortMethod
Enum, (forall x. VersionSortMethod -> Rep VersionSortMethod x)
-> (forall x. Rep VersionSortMethod x -> VersionSortMethod)
-> Generic VersionSortMethod
forall x. Rep VersionSortMethod x -> VersionSortMethod
forall x. VersionSortMethod -> Rep VersionSortMethod x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VersionSortMethod x -> VersionSortMethod
$cfrom :: forall x. VersionSortMethod -> Rep VersionSortMethod x
Generic, Eq VersionSortMethod
Eq VersionSortMethod
-> (Int -> VersionSortMethod -> Int)
-> (VersionSortMethod -> Int)
-> Hashable VersionSortMethod
Int -> VersionSortMethod -> Int
VersionSortMethod -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: VersionSortMethod -> Int
$chash :: VersionSortMethod -> Int
hashWithSalt :: Int -> VersionSortMethod -> Int
$chashWithSalt :: Int -> VersionSortMethod -> Int
$cp1Hashable :: Eq VersionSortMethod
Hashable, Get VersionSortMethod
[VersionSortMethod] -> Put
VersionSortMethod -> Put
(VersionSortMethod -> Put)
-> Get VersionSortMethod
-> ([VersionSortMethod] -> Put)
-> Binary VersionSortMethod
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [VersionSortMethod] -> Put
$cputList :: [VersionSortMethod] -> Put
get :: Get VersionSortMethod
$cget :: Get VersionSortMethod
put :: VersionSortMethod -> Put
$cput :: VersionSortMethod -> Put
Binary, VersionSortMethod -> ()
(VersionSortMethod -> ()) -> NFData VersionSortMethod
forall a. (a -> ()) -> NFData a
rnf :: VersionSortMethod -> ()
$crnf :: VersionSortMethod -> ()
NFData)
instance Show VersionSortMethod where
show :: VersionSortMethod -> String
show = \case
VersionSortMethod
ParseVersion -> String
"parse_version"
VersionSortMethod
Vercmp -> String
"vercmp"
instance Pretty VersionSortMethod where
pretty :: VersionSortMethod -> Doc ann
pretty VersionSortMethod
ParseVersion = Doc ann
"ParseVersion"
pretty VersionSortMethod
Vercmp = Doc ann
"Vercmp"
instance Default VersionSortMethod where
def :: VersionSortMethod
def = VersionSortMethod
ParseVersion
data ListOptions = ListOptions
{ ListOptions -> Maybe PackageName
_includeRegex :: Maybe Text,
ListOptions -> Maybe PackageName
_excludeRegex :: Maybe Text,
ListOptions -> Maybe VersionSortMethod
_sortVersionKey :: Maybe VersionSortMethod,
ListOptions -> Maybe PackageName
_ignored :: Maybe Text
}
deriving (Int -> ListOptions -> ShowS
[ListOptions] -> ShowS
ListOptions -> String
(Int -> ListOptions -> ShowS)
-> (ListOptions -> String)
-> ([ListOptions] -> ShowS)
-> Show ListOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListOptions] -> ShowS
$cshowList :: [ListOptions] -> ShowS
show :: ListOptions -> String
$cshow :: ListOptions -> String
showsPrec :: Int -> ListOptions -> ShowS
$cshowsPrec :: Int -> ListOptions -> ShowS
Show, Typeable, ListOptions -> ListOptions -> Bool
(ListOptions -> ListOptions -> Bool)
-> (ListOptions -> ListOptions -> Bool) -> Eq ListOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListOptions -> ListOptions -> Bool
$c/= :: ListOptions -> ListOptions -> Bool
== :: ListOptions -> ListOptions -> Bool
$c== :: ListOptions -> ListOptions -> Bool
Eq, Eq ListOptions
Eq ListOptions
-> (ListOptions -> ListOptions -> Ordering)
-> (ListOptions -> ListOptions -> Bool)
-> (ListOptions -> ListOptions -> Bool)
-> (ListOptions -> ListOptions -> Bool)
-> (ListOptions -> ListOptions -> Bool)
-> (ListOptions -> ListOptions -> ListOptions)
-> (ListOptions -> ListOptions -> ListOptions)
-> Ord ListOptions
ListOptions -> ListOptions -> Bool
ListOptions -> ListOptions -> Ordering
ListOptions -> ListOptions -> ListOptions
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ListOptions -> ListOptions -> ListOptions
$cmin :: ListOptions -> ListOptions -> ListOptions
max :: ListOptions -> ListOptions -> ListOptions
$cmax :: ListOptions -> ListOptions -> ListOptions
>= :: ListOptions -> ListOptions -> Bool
$c>= :: ListOptions -> ListOptions -> Bool
> :: ListOptions -> ListOptions -> Bool
$c> :: ListOptions -> ListOptions -> Bool
<= :: ListOptions -> ListOptions -> Bool
$c<= :: ListOptions -> ListOptions -> Bool
< :: ListOptions -> ListOptions -> Bool
$c< :: ListOptions -> ListOptions -> Bool
compare :: ListOptions -> ListOptions -> Ordering
$ccompare :: ListOptions -> ListOptions -> Ordering
$cp1Ord :: Eq ListOptions
Ord, (forall x. ListOptions -> Rep ListOptions x)
-> (forall x. Rep ListOptions x -> ListOptions)
-> Generic ListOptions
forall x. Rep ListOptions x -> ListOptions
forall x. ListOptions -> Rep ListOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListOptions x -> ListOptions
$cfrom :: forall x. ListOptions -> Rep ListOptions x
Generic, Eq ListOptions
Eq ListOptions
-> (Int -> ListOptions -> Int)
-> (ListOptions -> Int)
-> Hashable ListOptions
Int -> ListOptions -> Int
ListOptions -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: ListOptions -> Int
$chash :: ListOptions -> Int
hashWithSalt :: Int -> ListOptions -> Int
$chashWithSalt :: Int -> ListOptions -> Int
$cp1Hashable :: Eq ListOptions
Hashable, Get ListOptions
[ListOptions] -> Put
ListOptions -> Put
(ListOptions -> Put)
-> Get ListOptions -> ([ListOptions] -> Put) -> Binary ListOptions
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [ListOptions] -> Put
$cputList :: [ListOptions] -> Put
get :: Get ListOptions
$cget :: Get ListOptions
put :: ListOptions -> Put
$cput :: ListOptions -> Put
Binary, ListOptions -> ()
(ListOptions -> ()) -> NFData ListOptions
forall a. (a -> ()) -> NFData a
rnf :: ListOptions -> ()
$crnf :: ListOptions -> ()
NFData, ListOptions
ListOptions -> Default ListOptions
forall a. a -> Default a
def :: ListOptions
$cdef :: ListOptions
Default)
isEmptyListOptions :: ListOptions -> Bool
isEmptyListOptions :: ListOptions -> Bool
isEmptyListOptions ListOptions {Maybe PackageName
Maybe VersionSortMethod
_ignored :: Maybe PackageName
_sortVersionKey :: Maybe VersionSortMethod
_excludeRegex :: Maybe PackageName
_includeRegex :: Maybe PackageName
_ignored :: ListOptions -> Maybe PackageName
_sortVersionKey :: ListOptions -> Maybe VersionSortMethod
_excludeRegex :: ListOptions -> Maybe PackageName
_includeRegex :: ListOptions -> Maybe PackageName
..} =
Maybe PackageName -> Bool
forall a. Maybe a -> Bool
isNothing Maybe PackageName
_includeRegex
Bool -> Bool -> Bool
&& Maybe PackageName -> Bool
forall a. Maybe a -> Bool
isNothing Maybe PackageName
_excludeRegex
Bool -> Bool -> Bool
&& Maybe VersionSortMethod -> Bool
forall a. Maybe a -> Bool
isNothing Maybe VersionSortMethod
_sortVersionKey
Bool -> Bool -> Bool
&& Maybe PackageName -> Bool
forall a. Maybe a -> Bool
isNothing Maybe PackageName
_includeRegex
instance Pretty ListOptions where
pretty :: ListOptions -> Doc ann
pretty ListOptions {Maybe PackageName
Maybe VersionSortMethod
_ignored :: Maybe PackageName
_sortVersionKey :: Maybe VersionSortMethod
_excludeRegex :: Maybe PackageName
_includeRegex :: Maybe PackageName
_ignored :: ListOptions -> Maybe PackageName
_sortVersionKey :: ListOptions -> Maybe VersionSortMethod
_excludeRegex :: ListOptions -> Maybe PackageName
_includeRegex :: ListOptions -> Maybe PackageName
..} =
Doc ann
"ListOptions"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$
[[Doc ann]] -> [Doc ann]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
[ Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"includeRegex" Maybe PackageName
_includeRegex,
Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"excludeRegex" Maybe PackageName
_excludeRegex,
Doc ann -> Maybe VersionSortMethod -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"sortVersionKey" Maybe VersionSortMethod
_sortVersionKey,
Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"ignored" Maybe PackageName
_includeRegex
]
)
data NvcheckerOptions = NvcheckerOptions
{ NvcheckerOptions -> Maybe PackageName
_stripPrefix :: Maybe Text,
NvcheckerOptions -> Maybe PackageName
_fromPattern :: Maybe Text,
NvcheckerOptions -> Maybe PackageName
_toPattern :: Maybe Text
}
deriving (Int -> NvcheckerOptions -> ShowS
[NvcheckerOptions] -> ShowS
NvcheckerOptions -> String
(Int -> NvcheckerOptions -> ShowS)
-> (NvcheckerOptions -> String)
-> ([NvcheckerOptions] -> ShowS)
-> Show NvcheckerOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NvcheckerOptions] -> ShowS
$cshowList :: [NvcheckerOptions] -> ShowS
show :: NvcheckerOptions -> String
$cshow :: NvcheckerOptions -> String
showsPrec :: Int -> NvcheckerOptions -> ShowS
$cshowsPrec :: Int -> NvcheckerOptions -> ShowS
Show, Typeable, NvcheckerOptions -> NvcheckerOptions -> Bool
(NvcheckerOptions -> NvcheckerOptions -> Bool)
-> (NvcheckerOptions -> NvcheckerOptions -> Bool)
-> Eq NvcheckerOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NvcheckerOptions -> NvcheckerOptions -> Bool
$c/= :: NvcheckerOptions -> NvcheckerOptions -> Bool
== :: NvcheckerOptions -> NvcheckerOptions -> Bool
$c== :: NvcheckerOptions -> NvcheckerOptions -> Bool
Eq, Eq NvcheckerOptions
Eq NvcheckerOptions
-> (NvcheckerOptions -> NvcheckerOptions -> Ordering)
-> (NvcheckerOptions -> NvcheckerOptions -> Bool)
-> (NvcheckerOptions -> NvcheckerOptions -> Bool)
-> (NvcheckerOptions -> NvcheckerOptions -> Bool)
-> (NvcheckerOptions -> NvcheckerOptions -> Bool)
-> (NvcheckerOptions -> NvcheckerOptions -> NvcheckerOptions)
-> (NvcheckerOptions -> NvcheckerOptions -> NvcheckerOptions)
-> Ord NvcheckerOptions
NvcheckerOptions -> NvcheckerOptions -> Bool
NvcheckerOptions -> NvcheckerOptions -> Ordering
NvcheckerOptions -> NvcheckerOptions -> NvcheckerOptions
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: NvcheckerOptions -> NvcheckerOptions -> NvcheckerOptions
$cmin :: NvcheckerOptions -> NvcheckerOptions -> NvcheckerOptions
max :: NvcheckerOptions -> NvcheckerOptions -> NvcheckerOptions
$cmax :: NvcheckerOptions -> NvcheckerOptions -> NvcheckerOptions
>= :: NvcheckerOptions -> NvcheckerOptions -> Bool
$c>= :: NvcheckerOptions -> NvcheckerOptions -> Bool
> :: NvcheckerOptions -> NvcheckerOptions -> Bool
$c> :: NvcheckerOptions -> NvcheckerOptions -> Bool
<= :: NvcheckerOptions -> NvcheckerOptions -> Bool
$c<= :: NvcheckerOptions -> NvcheckerOptions -> Bool
< :: NvcheckerOptions -> NvcheckerOptions -> Bool
$c< :: NvcheckerOptions -> NvcheckerOptions -> Bool
compare :: NvcheckerOptions -> NvcheckerOptions -> Ordering
$ccompare :: NvcheckerOptions -> NvcheckerOptions -> Ordering
$cp1Ord :: Eq NvcheckerOptions
Ord, (forall x. NvcheckerOptions -> Rep NvcheckerOptions x)
-> (forall x. Rep NvcheckerOptions x -> NvcheckerOptions)
-> Generic NvcheckerOptions
forall x. Rep NvcheckerOptions x -> NvcheckerOptions
forall x. NvcheckerOptions -> Rep NvcheckerOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NvcheckerOptions x -> NvcheckerOptions
$cfrom :: forall x. NvcheckerOptions -> Rep NvcheckerOptions x
Generic, Eq NvcheckerOptions
Eq NvcheckerOptions
-> (Int -> NvcheckerOptions -> Int)
-> (NvcheckerOptions -> Int)
-> Hashable NvcheckerOptions
Int -> NvcheckerOptions -> Int
NvcheckerOptions -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: NvcheckerOptions -> Int
$chash :: NvcheckerOptions -> Int
hashWithSalt :: Int -> NvcheckerOptions -> Int
$chashWithSalt :: Int -> NvcheckerOptions -> Int
$cp1Hashable :: Eq NvcheckerOptions
Hashable, Get NvcheckerOptions
[NvcheckerOptions] -> Put
NvcheckerOptions -> Put
(NvcheckerOptions -> Put)
-> Get NvcheckerOptions
-> ([NvcheckerOptions] -> Put)
-> Binary NvcheckerOptions
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [NvcheckerOptions] -> Put
$cputList :: [NvcheckerOptions] -> Put
get :: Get NvcheckerOptions
$cget :: Get NvcheckerOptions
put :: NvcheckerOptions -> Put
$cput :: NvcheckerOptions -> Put
Binary, NvcheckerOptions -> ()
(NvcheckerOptions -> ()) -> NFData NvcheckerOptions
forall a. (a -> ()) -> NFData a
rnf :: NvcheckerOptions -> ()
$crnf :: NvcheckerOptions -> ()
NFData, NvcheckerOptions
NvcheckerOptions -> Default NvcheckerOptions
forall a. a -> Default a
def :: NvcheckerOptions
$cdef :: NvcheckerOptions
Default)
isEmptyNvcheckerOptions :: NvcheckerOptions -> Bool
isEmptyNvcheckerOptions :: NvcheckerOptions -> Bool
isEmptyNvcheckerOptions NvcheckerOptions {Maybe PackageName
_toPattern :: Maybe PackageName
_fromPattern :: Maybe PackageName
_stripPrefix :: Maybe PackageName
_toPattern :: NvcheckerOptions -> Maybe PackageName
_fromPattern :: NvcheckerOptions -> Maybe PackageName
_stripPrefix :: NvcheckerOptions -> Maybe PackageName
..} =
Maybe PackageName -> Bool
forall a. Maybe a -> Bool
isNothing Maybe PackageName
_stripPrefix
Bool -> Bool -> Bool
&& Maybe PackageName -> Bool
forall a. Maybe a -> Bool
isNothing Maybe PackageName
_fromPattern
Bool -> Bool -> Bool
&& Maybe PackageName -> Bool
forall a. Maybe a -> Bool
isNothing Maybe PackageName
_toPattern
instance Pretty NvcheckerOptions where
pretty :: NvcheckerOptions -> Doc ann
pretty NvcheckerOptions {Maybe PackageName
_toPattern :: Maybe PackageName
_fromPattern :: Maybe PackageName
_stripPrefix :: Maybe PackageName
_toPattern :: NvcheckerOptions -> Maybe PackageName
_fromPattern :: NvcheckerOptions -> Maybe PackageName
_stripPrefix :: NvcheckerOptions -> Maybe PackageName
..} =
Doc ann
"NvcheckerOptions"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$
[[Doc ann]] -> [Doc ann]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
[ Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"stripPrefix" Maybe PackageName
_stripPrefix,
Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"fromPattern" Maybe PackageName
_fromPattern,
Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"toPattern" Maybe PackageName
_toPattern
]
)
ppField :: Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField :: Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
_ Maybe a
Nothing = []
ppField Doc ann
s (Just a
x) = [Doc ann
s Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> a -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty a
x]
data VersionSource
= GitHubRelease {VersionSource -> PackageName
_owner :: Text, VersionSource -> PackageName
_repo :: Text}
| GitHubTag {_owner :: Text, _repo :: Text, VersionSource -> ListOptions
_listOptions :: ListOptions}
| Git {VersionSource -> PackageName
_vurl :: Text, VersionSource -> Branch
_vbranch :: Branch}
| Pypi {VersionSource -> PackageName
_pypi :: Text}
| ArchLinux {VersionSource -> PackageName
_archpkg :: Text}
| Aur {VersionSource -> PackageName
_aur :: Text}
| Manual {VersionSource -> PackageName
_manual :: Text}
| Repology {VersionSource -> PackageName
_repology :: Text, _repo :: Text}
| Webpage {_vurl :: Text, VersionSource -> PackageName
_regex :: Text, _listOptions :: ListOptions}
| {_vurl :: Text, _regex :: Text, _listOptions :: ListOptions}
| OpenVsx {VersionSource -> PackageName
_ovPublisher :: Text, VersionSource -> PackageName
_ovExtName :: Text}
| VscodeMarketplace {VersionSource -> PackageName
_vsmPublisher :: Text, VersionSource -> PackageName
_vsmExtName :: Text}
| Cmd {VersionSource -> PackageName
_vcmd :: Text}
deriving (Int -> VersionSource -> ShowS
[VersionSource] -> ShowS
VersionSource -> String
(Int -> VersionSource -> ShowS)
-> (VersionSource -> String)
-> ([VersionSource] -> ShowS)
-> Show VersionSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VersionSource] -> ShowS
$cshowList :: [VersionSource] -> ShowS
show :: VersionSource -> String
$cshow :: VersionSource -> String
showsPrec :: Int -> VersionSource -> ShowS
$cshowsPrec :: Int -> VersionSource -> ShowS
Show, Typeable, VersionSource -> VersionSource -> Bool
(VersionSource -> VersionSource -> Bool)
-> (VersionSource -> VersionSource -> Bool) -> Eq VersionSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VersionSource -> VersionSource -> Bool
$c/= :: VersionSource -> VersionSource -> Bool
== :: VersionSource -> VersionSource -> Bool
$c== :: VersionSource -> VersionSource -> Bool
Eq, Eq VersionSource
Eq VersionSource
-> (VersionSource -> VersionSource -> Ordering)
-> (VersionSource -> VersionSource -> Bool)
-> (VersionSource -> VersionSource -> Bool)
-> (VersionSource -> VersionSource -> Bool)
-> (VersionSource -> VersionSource -> Bool)
-> (VersionSource -> VersionSource -> VersionSource)
-> (VersionSource -> VersionSource -> VersionSource)
-> Ord VersionSource
VersionSource -> VersionSource -> Bool
VersionSource -> VersionSource -> Ordering
VersionSource -> VersionSource -> VersionSource
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: VersionSource -> VersionSource -> VersionSource
$cmin :: VersionSource -> VersionSource -> VersionSource
max :: VersionSource -> VersionSource -> VersionSource
$cmax :: VersionSource -> VersionSource -> VersionSource
>= :: VersionSource -> VersionSource -> Bool
$c>= :: VersionSource -> VersionSource -> Bool
> :: VersionSource -> VersionSource -> Bool
$c> :: VersionSource -> VersionSource -> Bool
<= :: VersionSource -> VersionSource -> Bool
$c<= :: VersionSource -> VersionSource -> Bool
< :: VersionSource -> VersionSource -> Bool
$c< :: VersionSource -> VersionSource -> Bool
compare :: VersionSource -> VersionSource -> Ordering
$ccompare :: VersionSource -> VersionSource -> Ordering
$cp1Ord :: Eq VersionSource
Ord, (forall x. VersionSource -> Rep VersionSource x)
-> (forall x. Rep VersionSource x -> VersionSource)
-> Generic VersionSource
forall x. Rep VersionSource x -> VersionSource
forall x. VersionSource -> Rep VersionSource x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VersionSource x -> VersionSource
$cfrom :: forall x. VersionSource -> Rep VersionSource x
Generic, Eq VersionSource
Eq VersionSource
-> (Int -> VersionSource -> Int)
-> (VersionSource -> Int)
-> Hashable VersionSource
Int -> VersionSource -> Int
VersionSource -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: VersionSource -> Int
$chash :: VersionSource -> Int
hashWithSalt :: Int -> VersionSource -> Int
$chashWithSalt :: Int -> VersionSource -> Int
$cp1Hashable :: Eq VersionSource
Hashable, Get VersionSource
[VersionSource] -> Put
VersionSource -> Put
(VersionSource -> Put)
-> Get VersionSource
-> ([VersionSource] -> Put)
-> Binary VersionSource
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [VersionSource] -> Put
$cputList :: [VersionSource] -> Put
get :: Get VersionSource
$cget :: Get VersionSource
put :: VersionSource -> Put
$cput :: VersionSource -> Put
Binary, VersionSource -> ()
(VersionSource -> ()) -> NFData VersionSource
forall a. (a -> ()) -> NFData a
rnf :: VersionSource -> ()
$crnf :: VersionSource -> ()
NFData)
instance Pretty VersionSource where
pretty :: VersionSource -> Doc ann
pretty GitHubRelease {PackageName
_repo :: PackageName
_owner :: PackageName
_repo :: VersionSource -> PackageName
_owner :: VersionSource -> PackageName
..} =
Doc ann
"CheckGitHubRelease"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"owner" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_owner,
Doc ann
"repo" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_repo
]
)
pretty GitHubTag {PackageName
ListOptions
_listOptions :: ListOptions
_repo :: PackageName
_owner :: PackageName
_listOptions :: VersionSource -> ListOptions
_repo :: VersionSource -> PackageName
_owner :: VersionSource -> PackageName
..} =
Doc ann
"CheckGitHubTag"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$
[ Doc ann
"owner" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_owner,
Doc ann
"repo" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_repo
]
[Doc ann] -> [Doc ann] -> [Doc ann]
forall a. Semigroup a => a -> a -> a
<> [Doc ann
"listOptions" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> ListOptions -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty ListOptions
_listOptions | Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ ListOptions -> Bool
isEmptyListOptions ListOptions
_listOptions]
)
pretty Git {PackageName
Branch
_vbranch :: Branch
_vurl :: PackageName
_vbranch :: VersionSource -> Branch
_vurl :: VersionSource -> PackageName
..} =
Doc ann
"CheckGit"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"url" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_vurl,
Doc ann
"branch" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Branch -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Branch
_vbranch
]
)
pretty Pypi {PackageName
_pypi :: PackageName
_pypi :: VersionSource -> PackageName
..} =
Doc ann
"CheckPypi" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_pypi
pretty ArchLinux {PackageName
_archpkg :: PackageName
_archpkg :: VersionSource -> PackageName
..} =
Doc ann
"CheckArchLinux" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_archpkg
pretty Aur {PackageName
_aur :: PackageName
_aur :: VersionSource -> PackageName
..} =
Doc ann
"CheckAur" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_aur
pretty Manual {PackageName
_manual :: PackageName
_manual :: VersionSource -> PackageName
..} =
Doc ann
"CheckManual" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_manual
pretty Repology {PackageName
_repo :: PackageName
_repology :: PackageName
_repology :: VersionSource -> PackageName
_repo :: VersionSource -> PackageName
..} =
Doc ann
"CheckRepology"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"repology" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_repology,
Doc ann
"repo" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_repo
]
)
pretty Webpage {PackageName
ListOptions
_listOptions :: ListOptions
_regex :: PackageName
_vurl :: PackageName
_regex :: VersionSource -> PackageName
_vurl :: VersionSource -> PackageName
_listOptions :: VersionSource -> ListOptions
..} =
Doc ann
"CheckWebpage"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$
[ Doc ann
"url" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_vurl,
Doc ann
"regex" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_regex
]
[Doc ann] -> [Doc ann] -> [Doc ann]
forall a. Semigroup a => a -> a -> a
<> [Doc ann
"listOptions" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> ListOptions -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty ListOptions
_listOptions | Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ ListOptions -> Bool
isEmptyListOptions ListOptions
_listOptions]
)
pretty HttpHeader {PackageName
ListOptions
_listOptions :: ListOptions
_regex :: PackageName
_vurl :: PackageName
_regex :: VersionSource -> PackageName
_vurl :: VersionSource -> PackageName
_listOptions :: VersionSource -> ListOptions
..} =
Doc ann
"CheckHttpHeader"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$
[ Doc ann
"url" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_vurl,
Doc ann
"regex" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_regex
]
[Doc ann] -> [Doc ann] -> [Doc ann]
forall a. Semigroup a => a -> a -> a
<> [Doc ann
"listOptions" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> ListOptions -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty ListOptions
_listOptions | Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ ListOptions -> Bool
isEmptyListOptions ListOptions
_listOptions]
)
pretty OpenVsx {PackageName
_ovExtName :: PackageName
_ovPublisher :: PackageName
_ovExtName :: VersionSource -> PackageName
_ovPublisher :: VersionSource -> PackageName
..} =
Doc ann
"CheckOpenVsx"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"publisher" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_ovPublisher,
Doc ann
"extName" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_ovExtName
]
)
pretty VscodeMarketplace {PackageName
_vsmExtName :: PackageName
_vsmPublisher :: PackageName
_vsmExtName :: VersionSource -> PackageName
_vsmPublisher :: VersionSource -> PackageName
..} =
Doc ann
"CheckVscodeMarketplace"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"publisher" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_vsmPublisher,
Doc ann
"extName" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_vsmExtName
]
)
pretty Cmd {PackageName
_vcmd :: PackageName
_vcmd :: VersionSource -> PackageName
..} =
Doc ann
"CheckCmd" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_vcmd
data CheckVersion = CheckVersion VersionSource NvcheckerOptions
deriving (Int -> CheckVersion -> ShowS
[CheckVersion] -> ShowS
CheckVersion -> String
(Int -> CheckVersion -> ShowS)
-> (CheckVersion -> String)
-> ([CheckVersion] -> ShowS)
-> Show CheckVersion
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CheckVersion] -> ShowS
$cshowList :: [CheckVersion] -> ShowS
show :: CheckVersion -> String
$cshow :: CheckVersion -> String
showsPrec :: Int -> CheckVersion -> ShowS
$cshowsPrec :: Int -> CheckVersion -> ShowS
Show, Typeable, CheckVersion -> CheckVersion -> Bool
(CheckVersion -> CheckVersion -> Bool)
-> (CheckVersion -> CheckVersion -> Bool) -> Eq CheckVersion
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CheckVersion -> CheckVersion -> Bool
$c/= :: CheckVersion -> CheckVersion -> Bool
== :: CheckVersion -> CheckVersion -> Bool
$c== :: CheckVersion -> CheckVersion -> Bool
Eq, Eq CheckVersion
Eq CheckVersion
-> (CheckVersion -> CheckVersion -> Ordering)
-> (CheckVersion -> CheckVersion -> Bool)
-> (CheckVersion -> CheckVersion -> Bool)
-> (CheckVersion -> CheckVersion -> Bool)
-> (CheckVersion -> CheckVersion -> Bool)
-> (CheckVersion -> CheckVersion -> CheckVersion)
-> (CheckVersion -> CheckVersion -> CheckVersion)
-> Ord CheckVersion
CheckVersion -> CheckVersion -> Bool
CheckVersion -> CheckVersion -> Ordering
CheckVersion -> CheckVersion -> CheckVersion
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: CheckVersion -> CheckVersion -> CheckVersion
$cmin :: CheckVersion -> CheckVersion -> CheckVersion
max :: CheckVersion -> CheckVersion -> CheckVersion
$cmax :: CheckVersion -> CheckVersion -> CheckVersion
>= :: CheckVersion -> CheckVersion -> Bool
$c>= :: CheckVersion -> CheckVersion -> Bool
> :: CheckVersion -> CheckVersion -> Bool
$c> :: CheckVersion -> CheckVersion -> Bool
<= :: CheckVersion -> CheckVersion -> Bool
$c<= :: CheckVersion -> CheckVersion -> Bool
< :: CheckVersion -> CheckVersion -> Bool
$c< :: CheckVersion -> CheckVersion -> Bool
compare :: CheckVersion -> CheckVersion -> Ordering
$ccompare :: CheckVersion -> CheckVersion -> Ordering
$cp1Ord :: Eq CheckVersion
Ord, (forall x. CheckVersion -> Rep CheckVersion x)
-> (forall x. Rep CheckVersion x -> CheckVersion)
-> Generic CheckVersion
forall x. Rep CheckVersion x -> CheckVersion
forall x. CheckVersion -> Rep CheckVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CheckVersion x -> CheckVersion
$cfrom :: forall x. CheckVersion -> Rep CheckVersion x
Generic, Eq CheckVersion
Eq CheckVersion
-> (Int -> CheckVersion -> Int)
-> (CheckVersion -> Int)
-> Hashable CheckVersion
Int -> CheckVersion -> Int
CheckVersion -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: CheckVersion -> Int
$chash :: CheckVersion -> Int
hashWithSalt :: Int -> CheckVersion -> Int
$chashWithSalt :: Int -> CheckVersion -> Int
$cp1Hashable :: Eq CheckVersion
Hashable, Get CheckVersion
[CheckVersion] -> Put
CheckVersion -> Put
(CheckVersion -> Put)
-> Get CheckVersion
-> ([CheckVersion] -> Put)
-> Binary CheckVersion
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [CheckVersion] -> Put
$cputList :: [CheckVersion] -> Put
get :: Get CheckVersion
$cget :: Get CheckVersion
put :: CheckVersion -> Put
$cput :: CheckVersion -> Put
Binary, CheckVersion -> ()
(CheckVersion -> ()) -> NFData CheckVersion
forall a. (a -> ()) -> NFData a
rnf :: CheckVersion -> ()
$crnf :: CheckVersion -> ()
NFData)
instance Pretty CheckVersion where
pretty :: CheckVersion -> Doc ann
pretty (CheckVersion VersionSource
v NvcheckerOptions
n) = Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann
align ([Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$ [VersionSource -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty VersionSource
v] [Doc ann] -> [Doc ann] -> [Doc ann]
forall a. Semigroup a => a -> a -> a
<> [NvcheckerOptions -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty NvcheckerOptions
n | Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ NvcheckerOptions -> Bool
isEmptyNvcheckerOptions NvcheckerOptions
n])
data NvcheckerResult = NvcheckerResult
{ NvcheckerResult -> Version
nvNow :: Version,
NvcheckerResult -> Maybe Version
nvOld :: Maybe Version,
NvcheckerResult -> Bool
nvStale :: Bool
}
deriving (Int -> NvcheckerResult -> ShowS
[NvcheckerResult] -> ShowS
NvcheckerResult -> String
(Int -> NvcheckerResult -> ShowS)
-> (NvcheckerResult -> String)
-> ([NvcheckerResult] -> ShowS)
-> Show NvcheckerResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NvcheckerResult] -> ShowS
$cshowList :: [NvcheckerResult] -> ShowS
show :: NvcheckerResult -> String
$cshow :: NvcheckerResult -> String
showsPrec :: Int -> NvcheckerResult -> ShowS
$cshowsPrec :: Int -> NvcheckerResult -> ShowS
Show, Typeable, NvcheckerResult -> NvcheckerResult -> Bool
(NvcheckerResult -> NvcheckerResult -> Bool)
-> (NvcheckerResult -> NvcheckerResult -> Bool)
-> Eq NvcheckerResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NvcheckerResult -> NvcheckerResult -> Bool
$c/= :: NvcheckerResult -> NvcheckerResult -> Bool
== :: NvcheckerResult -> NvcheckerResult -> Bool
$c== :: NvcheckerResult -> NvcheckerResult -> Bool
Eq, (forall x. NvcheckerResult -> Rep NvcheckerResult x)
-> (forall x. Rep NvcheckerResult x -> NvcheckerResult)
-> Generic NvcheckerResult
forall x. Rep NvcheckerResult x -> NvcheckerResult
forall x. NvcheckerResult -> Rep NvcheckerResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NvcheckerResult x -> NvcheckerResult
$cfrom :: forall x. NvcheckerResult -> Rep NvcheckerResult x
Generic, Eq NvcheckerResult
Eq NvcheckerResult
-> (Int -> NvcheckerResult -> Int)
-> (NvcheckerResult -> Int)
-> Hashable NvcheckerResult
Int -> NvcheckerResult -> Int
NvcheckerResult -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: NvcheckerResult -> Int
$chash :: NvcheckerResult -> Int
hashWithSalt :: Int -> NvcheckerResult -> Int
$chashWithSalt :: Int -> NvcheckerResult -> Int
$cp1Hashable :: Eq NvcheckerResult
Hashable, Get NvcheckerResult
[NvcheckerResult] -> Put
NvcheckerResult -> Put
(NvcheckerResult -> Put)
-> Get NvcheckerResult
-> ([NvcheckerResult] -> Put)
-> Binary NvcheckerResult
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [NvcheckerResult] -> Put
$cputList :: [NvcheckerResult] -> Put
get :: Get NvcheckerResult
$cget :: Get NvcheckerResult
put :: NvcheckerResult -> Put
$cput :: NvcheckerResult -> Put
Binary, NvcheckerResult -> ()
(NvcheckerResult -> ()) -> NFData NvcheckerResult
forall a. (a -> ()) -> NFData a
rnf :: NvcheckerResult -> ()
$crnf :: NvcheckerResult -> ()
NFData)
newtype NvcheckerRaw = NvcheckerRaw Version
deriving (Int -> NvcheckerRaw -> ShowS
[NvcheckerRaw] -> ShowS
NvcheckerRaw -> String
(Int -> NvcheckerRaw -> ShowS)
-> (NvcheckerRaw -> String)
-> ([NvcheckerRaw] -> ShowS)
-> Show NvcheckerRaw
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NvcheckerRaw] -> ShowS
$cshowList :: [NvcheckerRaw] -> ShowS
show :: NvcheckerRaw -> String
$cshow :: NvcheckerRaw -> String
showsPrec :: Int -> NvcheckerRaw -> ShowS
$cshowsPrec :: Int -> NvcheckerRaw -> ShowS
Show, Typeable, NvcheckerRaw -> NvcheckerRaw -> Bool
(NvcheckerRaw -> NvcheckerRaw -> Bool)
-> (NvcheckerRaw -> NvcheckerRaw -> Bool) -> Eq NvcheckerRaw
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NvcheckerRaw -> NvcheckerRaw -> Bool
$c/= :: NvcheckerRaw -> NvcheckerRaw -> Bool
== :: NvcheckerRaw -> NvcheckerRaw -> Bool
$c== :: NvcheckerRaw -> NvcheckerRaw -> Bool
Eq, (forall x. NvcheckerRaw -> Rep NvcheckerRaw x)
-> (forall x. Rep NvcheckerRaw x -> NvcheckerRaw)
-> Generic NvcheckerRaw
forall x. Rep NvcheckerRaw x -> NvcheckerRaw
forall x. NvcheckerRaw -> Rep NvcheckerRaw x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NvcheckerRaw x -> NvcheckerRaw
$cfrom :: forall x. NvcheckerRaw -> Rep NvcheckerRaw x
Generic)
instance A.FromJSON NvcheckerRaw where
parseJSON :: Value -> Parser NvcheckerRaw
parseJSON = String
-> (Object -> Parser NvcheckerRaw) -> Value -> Parser NvcheckerRaw
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"NvcheckerRaw" ((Object -> Parser NvcheckerRaw) -> Value -> Parser NvcheckerRaw)
-> (Object -> Parser NvcheckerRaw) -> Value -> Parser NvcheckerRaw
forall a b. (a -> b) -> a -> b
$ \Object
o ->
Version -> NvcheckerRaw
NvcheckerRaw (Version -> NvcheckerRaw) -> Parser Version -> Parser NvcheckerRaw
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser Version
forall a. FromJSON a => Object -> Key -> Parser a
A..: Key
"version"
type instance RuleResult CheckVersion = NvcheckerResult
data NixFetcher (k :: FetchStatus)
= FetchGit
{ NixFetcher k -> PackageName
_furl :: Text,
NixFetcher k -> Version
_rev :: Version,
NixFetcher k -> Bool
_deepClone :: Bool,
NixFetcher k -> Bool
_fetchSubmodules :: Bool,
NixFetcher k -> Bool
_leaveDotGit :: Bool,
NixFetcher k -> Maybe PackageName
_name :: Maybe Text,
NixFetcher k -> FetchResult k
_sha256 :: FetchResult k
}
| FetchGitHub
{ NixFetcher k -> PackageName
_fowner :: Text,
NixFetcher k -> PackageName
_frepo :: Text,
_rev :: Version,
_deepClone :: Bool,
_fetchSubmodules :: Bool,
_leaveDotGit :: Bool,
_name :: Maybe Text,
_sha256 :: FetchResult k
}
| FetchUrl
{ _furl :: Text,
_name :: Maybe Text,
_sha256 :: FetchResult k
}
| FetchTarball
{ _furl :: Text,
_sha256 :: FetchResult k
}
deriving (Typeable, (forall x. NixFetcher k -> Rep (NixFetcher k) x)
-> (forall x. Rep (NixFetcher k) x -> NixFetcher k)
-> Generic (NixFetcher k)
forall x. Rep (NixFetcher k) x -> NixFetcher k
forall x. NixFetcher k -> Rep (NixFetcher k) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (k :: FetchStatus) x. Rep (NixFetcher k) x -> NixFetcher k
forall (k :: FetchStatus) x. NixFetcher k -> Rep (NixFetcher k) x
$cto :: forall (k :: FetchStatus) x. Rep (NixFetcher k) x -> NixFetcher k
$cfrom :: forall (k :: FetchStatus) x. NixFetcher k -> Rep (NixFetcher k) x
Generic)
data FetchStatus = Fresh | Fetched
type family FetchResult (k :: FetchStatus) where
FetchResult Fresh = ()
FetchResult Fetched = Checksum
type instance RuleResult (NixFetcher Fresh) = NixFetcher Fetched
deriving instance Show (FetchResult k) => Show (NixFetcher k)
deriving instance Eq (FetchResult k) => Eq (NixFetcher k)
deriving instance Ord (FetchResult k) => Ord (NixFetcher k)
deriving instance Hashable (FetchResult k) => Hashable (NixFetcher k)
deriving instance Binary (FetchResult k) => Binary (NixFetcher k)
deriving instance NFData (FetchResult k) => NFData (NixFetcher k)
instance A.ToJSON (NixFetcher Fetched) where
toJSON :: NixFetcher 'Fetched -> Value
toJSON FetchGit {Bool
Maybe PackageName
PackageName
FetchResult 'Fetched
Version
_sha256 :: FetchResult 'Fetched
_name :: Maybe PackageName
_leaveDotGit :: Bool
_fetchSubmodules :: Bool
_deepClone :: Bool
_rev :: Version
_furl :: PackageName
_sha256 :: forall (k :: FetchStatus). NixFetcher k -> FetchResult k
_name :: forall (k :: FetchStatus). NixFetcher k -> Maybe PackageName
_leaveDotGit :: forall (k :: FetchStatus). NixFetcher k -> Bool
_fetchSubmodules :: forall (k :: FetchStatus). NixFetcher k -> Bool
_deepClone :: forall (k :: FetchStatus). NixFetcher k -> Bool
_rev :: forall (k :: FetchStatus). NixFetcher k -> Version
_furl :: forall (k :: FetchStatus). NixFetcher k -> PackageName
..} =
[Pair] -> Value
A.object
[ Key
"url" Key -> PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName
_furl,
Key
"rev" Key -> Version -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Version
_rev,
Key
"deepClone" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Bool
_deepClone,
Key
"fetchSubmodules" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Bool
_fetchSubmodules,
Key
"leaveDotGit" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Bool
_leaveDotGit,
Key
"name" Key -> Maybe PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Maybe PackageName
_name,
Key
"sha256" Key -> Checksum -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= FetchResult 'Fetched
Checksum
_sha256,
Key
"type" Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName -> Value
A.String PackageName
"git"
]
toJSON FetchGitHub {Bool
Maybe PackageName
PackageName
FetchResult 'Fetched
Version
_sha256 :: FetchResult 'Fetched
_name :: Maybe PackageName
_leaveDotGit :: Bool
_fetchSubmodules :: Bool
_deepClone :: Bool
_rev :: Version
_frepo :: PackageName
_fowner :: PackageName
_frepo :: forall (k :: FetchStatus). NixFetcher k -> PackageName
_fowner :: forall (k :: FetchStatus). NixFetcher k -> PackageName
_sha256 :: forall (k :: FetchStatus). NixFetcher k -> FetchResult k
_name :: forall (k :: FetchStatus). NixFetcher k -> Maybe PackageName
_leaveDotGit :: forall (k :: FetchStatus). NixFetcher k -> Bool
_fetchSubmodules :: forall (k :: FetchStatus). NixFetcher k -> Bool
_deepClone :: forall (k :: FetchStatus). NixFetcher k -> Bool
_rev :: forall (k :: FetchStatus). NixFetcher k -> Version
..} =
[Pair] -> Value
A.object
[ Key
"owner" Key -> PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName
_fowner,
Key
"repo" Key -> PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName
_frepo,
Key
"rev" Key -> Version -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Version
_rev,
Key
"deepClone" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Bool
_deepClone,
Key
"fetchSubmodules" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Bool
_fetchSubmodules,
Key
"leaveDotGit" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Bool
_leaveDotGit,
Key
"name" Key -> Maybe PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Maybe PackageName
_name,
Key
"sha256" Key -> Checksum -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= FetchResult 'Fetched
Checksum
_sha256,
Key
"type" Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName -> Value
A.String PackageName
"github"
]
toJSON FetchUrl {Maybe PackageName
PackageName
FetchResult 'Fetched
_sha256 :: FetchResult 'Fetched
_name :: Maybe PackageName
_furl :: PackageName
_sha256 :: forall (k :: FetchStatus). NixFetcher k -> FetchResult k
_name :: forall (k :: FetchStatus). NixFetcher k -> Maybe PackageName
_furl :: forall (k :: FetchStatus). NixFetcher k -> PackageName
..} =
[Pair] -> Value
A.object
[ Key
"url" Key -> PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName
_furl,
Key
"name" Key -> Maybe PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Maybe PackageName
_name,
Key
"sha256" Key -> Checksum -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= FetchResult 'Fetched
Checksum
_sha256,
Key
"type" Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName -> Value
A.String PackageName
"url"
]
toJSON FetchTarball {PackageName
FetchResult 'Fetched
_sha256 :: FetchResult 'Fetched
_furl :: PackageName
_sha256 :: forall (k :: FetchStatus). NixFetcher k -> FetchResult k
_furl :: forall (k :: FetchStatus). NixFetcher k -> PackageName
..} =
[Pair] -> Value
A.object
[ Key
"url" Key -> PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName
_furl,
Key
"sha256" Key -> Checksum -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= FetchResult 'Fetched
Checksum
_sha256,
Key
"type" Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName -> Value
A.String PackageName
"tarball"
]
instance Pretty (NixFetcher k) where
pretty :: NixFetcher k -> Doc ann
pretty FetchGit {Bool
Maybe PackageName
PackageName
FetchResult k
Version
_sha256 :: FetchResult k
_name :: Maybe PackageName
_leaveDotGit :: Bool
_fetchSubmodules :: Bool
_deepClone :: Bool
_rev :: Version
_furl :: PackageName
_sha256 :: forall (k :: FetchStatus). NixFetcher k -> FetchResult k
_name :: forall (k :: FetchStatus). NixFetcher k -> Maybe PackageName
_leaveDotGit :: forall (k :: FetchStatus). NixFetcher k -> Bool
_fetchSubmodules :: forall (k :: FetchStatus). NixFetcher k -> Bool
_deepClone :: forall (k :: FetchStatus). NixFetcher k -> Bool
_rev :: forall (k :: FetchStatus). NixFetcher k -> Version
_furl :: forall (k :: FetchStatus). NixFetcher k -> PackageName
..} =
Doc ann
"FetchGit"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$
[ Doc ann
"url" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_furl,
Doc ann
"rev" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Version -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Version
_rev,
Doc ann
"deepClone" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Bool -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Bool
_deepClone,
Doc ann
"fetchSubmodules" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Bool -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Bool
_fetchSubmodules,
Doc ann
"leaveDotGit" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Bool -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Bool
_leaveDotGit
]
[Doc ann] -> [Doc ann] -> [Doc ann]
forall a. Semigroup a => a -> a -> a
<> Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"name" Maybe PackageName
_name
)
pretty FetchGitHub {Bool
Maybe PackageName
PackageName
FetchResult k
Version
_sha256 :: FetchResult k
_name :: Maybe PackageName
_leaveDotGit :: Bool
_fetchSubmodules :: Bool
_deepClone :: Bool
_rev :: Version
_frepo :: PackageName
_fowner :: PackageName
_frepo :: forall (k :: FetchStatus). NixFetcher k -> PackageName
_fowner :: forall (k :: FetchStatus). NixFetcher k -> PackageName
_sha256 :: forall (k :: FetchStatus). NixFetcher k -> FetchResult k
_name :: forall (k :: FetchStatus). NixFetcher k -> Maybe PackageName
_leaveDotGit :: forall (k :: FetchStatus). NixFetcher k -> Bool
_fetchSubmodules :: forall (k :: FetchStatus). NixFetcher k -> Bool
_deepClone :: forall (k :: FetchStatus). NixFetcher k -> Bool
_rev :: forall (k :: FetchStatus). NixFetcher k -> Version
..} =
Doc ann
"FetchGitHub"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$
[ Doc ann
"owner" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_fowner,
Doc ann
"repo" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_frepo,
Doc ann
"rev" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Version -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Version
_rev,
Doc ann
"deepClone" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Bool -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Bool
_deepClone,
Doc ann
"fetchSubmodules" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Bool -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Bool
_fetchSubmodules,
Doc ann
"leaveDotGit" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Bool -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Bool
_leaveDotGit
]
[Doc ann] -> [Doc ann] -> [Doc ann]
forall a. Semigroup a => a -> a -> a
<> Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"name" Maybe PackageName
_name
)
pretty FetchUrl {Maybe PackageName
PackageName
FetchResult k
_sha256 :: FetchResult k
_name :: Maybe PackageName
_furl :: PackageName
_sha256 :: forall (k :: FetchStatus). NixFetcher k -> FetchResult k
_name :: forall (k :: FetchStatus). NixFetcher k -> Maybe PackageName
_furl :: forall (k :: FetchStatus). NixFetcher k -> PackageName
..} =
Doc ann
"FetchUrl"
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep ([Doc ann] -> Doc ann) -> [Doc ann] -> Doc ann
forall a b. (a -> b) -> a -> b
$
[Doc ann
"url" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_furl]
[Doc ann] -> [Doc ann] -> [Doc ann]
forall a. Semigroup a => a -> a -> a
<> Doc ann -> Maybe PackageName -> [Doc ann]
forall a ann. Pretty a => Doc ann -> Maybe a -> [Doc ann]
ppField Doc ann
"name" Maybe PackageName
_name
)
pretty FetchTarball {PackageName
FetchResult k
_sha256 :: FetchResult k
_furl :: PackageName
_sha256 :: forall (k :: FetchStatus). NixFetcher k -> FetchResult k
_furl :: forall (k :: FetchStatus). NixFetcher k -> PackageName
..} =
Doc ann
"FetchTarball" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> PackageName -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty PackageName
_furl
data = (NixFetcher Fetched) (NE.NonEmpty FilePath)
deriving (Int -> ExtractSrcQ -> ShowS
[ExtractSrcQ] -> ShowS
ExtractSrcQ -> String
(Int -> ExtractSrcQ -> ShowS)
-> (ExtractSrcQ -> String)
-> ([ExtractSrcQ] -> ShowS)
-> Show ExtractSrcQ
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ExtractSrcQ] -> ShowS
$cshowList :: [ExtractSrcQ] -> ShowS
show :: ExtractSrcQ -> String
$cshow :: ExtractSrcQ -> String
showsPrec :: Int -> ExtractSrcQ -> ShowS
$cshowsPrec :: Int -> ExtractSrcQ -> ShowS
Show, ExtractSrcQ -> ExtractSrcQ -> Bool
(ExtractSrcQ -> ExtractSrcQ -> Bool)
-> (ExtractSrcQ -> ExtractSrcQ -> Bool) -> Eq ExtractSrcQ
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExtractSrcQ -> ExtractSrcQ -> Bool
$c/= :: ExtractSrcQ -> ExtractSrcQ -> Bool
== :: ExtractSrcQ -> ExtractSrcQ -> Bool
$c== :: ExtractSrcQ -> ExtractSrcQ -> Bool
Eq, Eq ExtractSrcQ
Eq ExtractSrcQ
-> (ExtractSrcQ -> ExtractSrcQ -> Ordering)
-> (ExtractSrcQ -> ExtractSrcQ -> Bool)
-> (ExtractSrcQ -> ExtractSrcQ -> Bool)
-> (ExtractSrcQ -> ExtractSrcQ -> Bool)
-> (ExtractSrcQ -> ExtractSrcQ -> Bool)
-> (ExtractSrcQ -> ExtractSrcQ -> ExtractSrcQ)
-> (ExtractSrcQ -> ExtractSrcQ -> ExtractSrcQ)
-> Ord ExtractSrcQ
ExtractSrcQ -> ExtractSrcQ -> Bool
ExtractSrcQ -> ExtractSrcQ -> Ordering
ExtractSrcQ -> ExtractSrcQ -> ExtractSrcQ
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ExtractSrcQ -> ExtractSrcQ -> ExtractSrcQ
$cmin :: ExtractSrcQ -> ExtractSrcQ -> ExtractSrcQ
max :: ExtractSrcQ -> ExtractSrcQ -> ExtractSrcQ
$cmax :: ExtractSrcQ -> ExtractSrcQ -> ExtractSrcQ
>= :: ExtractSrcQ -> ExtractSrcQ -> Bool
$c>= :: ExtractSrcQ -> ExtractSrcQ -> Bool
> :: ExtractSrcQ -> ExtractSrcQ -> Bool
$c> :: ExtractSrcQ -> ExtractSrcQ -> Bool
<= :: ExtractSrcQ -> ExtractSrcQ -> Bool
$c<= :: ExtractSrcQ -> ExtractSrcQ -> Bool
< :: ExtractSrcQ -> ExtractSrcQ -> Bool
$c< :: ExtractSrcQ -> ExtractSrcQ -> Bool
compare :: ExtractSrcQ -> ExtractSrcQ -> Ordering
$ccompare :: ExtractSrcQ -> ExtractSrcQ -> Ordering
$cp1Ord :: Eq ExtractSrcQ
Ord, Eq ExtractSrcQ
Eq ExtractSrcQ
-> (Int -> ExtractSrcQ -> Int)
-> (ExtractSrcQ -> Int)
-> Hashable ExtractSrcQ
Int -> ExtractSrcQ -> Int
ExtractSrcQ -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: ExtractSrcQ -> Int
$chash :: ExtractSrcQ -> Int
hashWithSalt :: Int -> ExtractSrcQ -> Int
$chashWithSalt :: Int -> ExtractSrcQ -> Int
$cp1Hashable :: Eq ExtractSrcQ
Hashable, ExtractSrcQ -> ()
(ExtractSrcQ -> ()) -> NFData ExtractSrcQ
forall a. (a -> ()) -> NFData a
rnf :: ExtractSrcQ -> ()
$crnf :: ExtractSrcQ -> ()
NFData, Get ExtractSrcQ
[ExtractSrcQ] -> Put
ExtractSrcQ -> Put
(ExtractSrcQ -> Put)
-> Get ExtractSrcQ -> ([ExtractSrcQ] -> Put) -> Binary ExtractSrcQ
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [ExtractSrcQ] -> Put
$cputList :: [ExtractSrcQ] -> Put
get :: Get ExtractSrcQ
$cget :: Get ExtractSrcQ
put :: ExtractSrcQ -> Put
$cput :: ExtractSrcQ -> Put
Binary, Typeable, (forall x. ExtractSrcQ -> Rep ExtractSrcQ x)
-> (forall x. Rep ExtractSrcQ x -> ExtractSrcQ)
-> Generic ExtractSrcQ
forall x. Rep ExtractSrcQ x -> ExtractSrcQ
forall x. ExtractSrcQ -> Rep ExtractSrcQ x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ExtractSrcQ x -> ExtractSrcQ
$cfrom :: forall x. ExtractSrcQ -> Rep ExtractSrcQ x
Generic)
type instance RuleResult ExtractSrcQ = HashMap FilePath Text
instance Pretty ExtractSrcQ where
pretty :: ExtractSrcQ -> Doc ann
pretty (ExtractSrcQ NixFetcher 'Fetched
f NonEmpty String
n) =
Doc ann
"ExtractSrc" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"fetcher" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> NixFetcher 'Fetched -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty NixFetcher 'Fetched
f,
Doc ann
"files" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> NonEmpty String -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty NonEmpty String
n
]
)
data FetchRustGitDepsQ = FetchRustGitDepsQ (NixFetcher Fetched) FilePath
deriving (Int -> FetchRustGitDepsQ -> ShowS
[FetchRustGitDepsQ] -> ShowS
FetchRustGitDepsQ -> String
(Int -> FetchRustGitDepsQ -> ShowS)
-> (FetchRustGitDepsQ -> String)
-> ([FetchRustGitDepsQ] -> ShowS)
-> Show FetchRustGitDepsQ
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FetchRustGitDepsQ] -> ShowS
$cshowList :: [FetchRustGitDepsQ] -> ShowS
show :: FetchRustGitDepsQ -> String
$cshow :: FetchRustGitDepsQ -> String
showsPrec :: Int -> FetchRustGitDepsQ -> ShowS
$cshowsPrec :: Int -> FetchRustGitDepsQ -> ShowS
Show, FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
(FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool)
-> (FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool)
-> Eq FetchRustGitDepsQ
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
$c/= :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
== :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
$c== :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
Eq, Eq FetchRustGitDepsQ
Eq FetchRustGitDepsQ
-> (FetchRustGitDepsQ -> FetchRustGitDepsQ -> Ordering)
-> (FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool)
-> (FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool)
-> (FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool)
-> (FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool)
-> (FetchRustGitDepsQ -> FetchRustGitDepsQ -> FetchRustGitDepsQ)
-> (FetchRustGitDepsQ -> FetchRustGitDepsQ -> FetchRustGitDepsQ)
-> Ord FetchRustGitDepsQ
FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
FetchRustGitDepsQ -> FetchRustGitDepsQ -> Ordering
FetchRustGitDepsQ -> FetchRustGitDepsQ -> FetchRustGitDepsQ
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> FetchRustGitDepsQ
$cmin :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> FetchRustGitDepsQ
max :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> FetchRustGitDepsQ
$cmax :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> FetchRustGitDepsQ
>= :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
$c>= :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
> :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
$c> :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
<= :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
$c<= :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
< :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
$c< :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Bool
compare :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Ordering
$ccompare :: FetchRustGitDepsQ -> FetchRustGitDepsQ -> Ordering
$cp1Ord :: Eq FetchRustGitDepsQ
Ord, Eq FetchRustGitDepsQ
Eq FetchRustGitDepsQ
-> (Int -> FetchRustGitDepsQ -> Int)
-> (FetchRustGitDepsQ -> Int)
-> Hashable FetchRustGitDepsQ
Int -> FetchRustGitDepsQ -> Int
FetchRustGitDepsQ -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: FetchRustGitDepsQ -> Int
$chash :: FetchRustGitDepsQ -> Int
hashWithSalt :: Int -> FetchRustGitDepsQ -> Int
$chashWithSalt :: Int -> FetchRustGitDepsQ -> Int
$cp1Hashable :: Eq FetchRustGitDepsQ
Hashable, FetchRustGitDepsQ -> ()
(FetchRustGitDepsQ -> ()) -> NFData FetchRustGitDepsQ
forall a. (a -> ()) -> NFData a
rnf :: FetchRustGitDepsQ -> ()
$crnf :: FetchRustGitDepsQ -> ()
NFData, Get FetchRustGitDepsQ
[FetchRustGitDepsQ] -> Put
FetchRustGitDepsQ -> Put
(FetchRustGitDepsQ -> Put)
-> Get FetchRustGitDepsQ
-> ([FetchRustGitDepsQ] -> Put)
-> Binary FetchRustGitDepsQ
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [FetchRustGitDepsQ] -> Put
$cputList :: [FetchRustGitDepsQ] -> Put
get :: Get FetchRustGitDepsQ
$cget :: Get FetchRustGitDepsQ
put :: FetchRustGitDepsQ -> Put
$cput :: FetchRustGitDepsQ -> Put
Binary, Typeable, (forall x. FetchRustGitDepsQ -> Rep FetchRustGitDepsQ x)
-> (forall x. Rep FetchRustGitDepsQ x -> FetchRustGitDepsQ)
-> Generic FetchRustGitDepsQ
forall x. Rep FetchRustGitDepsQ x -> FetchRustGitDepsQ
forall x. FetchRustGitDepsQ -> Rep FetchRustGitDepsQ x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep FetchRustGitDepsQ x -> FetchRustGitDepsQ
$cfrom :: forall x. FetchRustGitDepsQ -> Rep FetchRustGitDepsQ x
Generic)
type instance RuleResult FetchRustGitDepsQ = HashMap Text Checksum
instance Pretty FetchRustGitDepsQ where
pretty :: FetchRustGitDepsQ -> Doc ann
pretty (FetchRustGitDepsQ NixFetcher 'Fetched
f String
n) =
Doc ann
"FetchRustGitDeps" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
line
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
indent
Int
2
( [Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"fetcher" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> NixFetcher 'Fetched -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty NixFetcher 'Fetched
f,
Doc ann
"cargoLock" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
forall ann. Doc ann
colon Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> String -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty String
n
]
)
type PackageName = Text
type PackageFetcher = Version -> NixFetcher Fresh
newtype = (NE.NonEmpty FilePath)
newtype PackageCargoLockFiles = PackageCargoLockFiles (NE.NonEmpty FilePath)
newtype PackagePassthru = PackagePassthru (HashMap Text Text)
deriving newtype (b -> PackagePassthru -> PackagePassthru
NonEmpty PackagePassthru -> PackagePassthru
PackagePassthru -> PackagePassthru -> PackagePassthru
(PackagePassthru -> PackagePassthru -> PackagePassthru)
-> (NonEmpty PackagePassthru -> PackagePassthru)
-> (forall b.
Integral b =>
b -> PackagePassthru -> PackagePassthru)
-> Semigroup PackagePassthru
forall b. Integral b => b -> PackagePassthru -> PackagePassthru
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
stimes :: b -> PackagePassthru -> PackagePassthru
$cstimes :: forall b. Integral b => b -> PackagePassthru -> PackagePassthru
sconcat :: NonEmpty PackagePassthru -> PackagePassthru
$csconcat :: NonEmpty PackagePassthru -> PackagePassthru
<> :: PackagePassthru -> PackagePassthru -> PackagePassthru
$c<> :: PackagePassthru -> PackagePassthru -> PackagePassthru
Semigroup, Semigroup PackagePassthru
PackagePassthru
Semigroup PackagePassthru
-> PackagePassthru
-> (PackagePassthru -> PackagePassthru -> PackagePassthru)
-> ([PackagePassthru] -> PackagePassthru)
-> Monoid PackagePassthru
[PackagePassthru] -> PackagePassthru
PackagePassthru -> PackagePassthru -> PackagePassthru
forall a.
Semigroup a -> a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
mconcat :: [PackagePassthru] -> PackagePassthru
$cmconcat :: [PackagePassthru] -> PackagePassthru
mappend :: PackagePassthru -> PackagePassthru -> PackagePassthru
$cmappend :: PackagePassthru -> PackagePassthru -> PackagePassthru
mempty :: PackagePassthru
$cmempty :: PackagePassthru
$cp1Monoid :: Semigroup PackagePassthru
Monoid)
data UseStaleVersion
=
PermanentStale
|
TemporaryStale
| NoStale
deriving stock (UseStaleVersion -> UseStaleVersion -> Bool
(UseStaleVersion -> UseStaleVersion -> Bool)
-> (UseStaleVersion -> UseStaleVersion -> Bool)
-> Eq UseStaleVersion
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UseStaleVersion -> UseStaleVersion -> Bool
$c/= :: UseStaleVersion -> UseStaleVersion -> Bool
== :: UseStaleVersion -> UseStaleVersion -> Bool
$c== :: UseStaleVersion -> UseStaleVersion -> Bool
Eq, Int -> UseStaleVersion -> ShowS
[UseStaleVersion] -> ShowS
UseStaleVersion -> String
(Int -> UseStaleVersion -> ShowS)
-> (UseStaleVersion -> String)
-> ([UseStaleVersion] -> ShowS)
-> Show UseStaleVersion
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UseStaleVersion] -> ShowS
$cshowList :: [UseStaleVersion] -> ShowS
show :: UseStaleVersion -> String
$cshow :: UseStaleVersion -> String
showsPrec :: Int -> UseStaleVersion -> ShowS
$cshowsPrec :: Int -> UseStaleVersion -> ShowS
Show, Eq UseStaleVersion
Eq UseStaleVersion
-> (UseStaleVersion -> UseStaleVersion -> Ordering)
-> (UseStaleVersion -> UseStaleVersion -> Bool)
-> (UseStaleVersion -> UseStaleVersion -> Bool)
-> (UseStaleVersion -> UseStaleVersion -> Bool)
-> (UseStaleVersion -> UseStaleVersion -> Bool)
-> (UseStaleVersion -> UseStaleVersion -> UseStaleVersion)
-> (UseStaleVersion -> UseStaleVersion -> UseStaleVersion)
-> Ord UseStaleVersion
UseStaleVersion -> UseStaleVersion -> Bool
UseStaleVersion -> UseStaleVersion -> Ordering
UseStaleVersion -> UseStaleVersion -> UseStaleVersion
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: UseStaleVersion -> UseStaleVersion -> UseStaleVersion
$cmin :: UseStaleVersion -> UseStaleVersion -> UseStaleVersion
max :: UseStaleVersion -> UseStaleVersion -> UseStaleVersion
$cmax :: UseStaleVersion -> UseStaleVersion -> UseStaleVersion
>= :: UseStaleVersion -> UseStaleVersion -> Bool
$c>= :: UseStaleVersion -> UseStaleVersion -> Bool
> :: UseStaleVersion -> UseStaleVersion -> Bool
$c> :: UseStaleVersion -> UseStaleVersion -> Bool
<= :: UseStaleVersion -> UseStaleVersion -> Bool
$c<= :: UseStaleVersion -> UseStaleVersion -> Bool
< :: UseStaleVersion -> UseStaleVersion -> Bool
$c< :: UseStaleVersion -> UseStaleVersion -> Bool
compare :: UseStaleVersion -> UseStaleVersion -> Ordering
$ccompare :: UseStaleVersion -> UseStaleVersion -> Ordering
$cp1Ord :: Eq UseStaleVersion
Ord, Typeable, (forall x. UseStaleVersion -> Rep UseStaleVersion x)
-> (forall x. Rep UseStaleVersion x -> UseStaleVersion)
-> Generic UseStaleVersion
forall x. Rep UseStaleVersion x -> UseStaleVersion
forall x. UseStaleVersion -> Rep UseStaleVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UseStaleVersion x -> UseStaleVersion
$cfrom :: forall x. UseStaleVersion -> Rep UseStaleVersion x
Generic)
deriving anyclass (Eq UseStaleVersion
Eq UseStaleVersion
-> (Int -> UseStaleVersion -> Int)
-> (UseStaleVersion -> Int)
-> Hashable UseStaleVersion
Int -> UseStaleVersion -> Int
UseStaleVersion -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: UseStaleVersion -> Int
$chash :: UseStaleVersion -> Int
hashWithSalt :: Int -> UseStaleVersion -> Int
$chashWithSalt :: Int -> UseStaleVersion -> Int
$cp1Hashable :: Eq UseStaleVersion
Hashable, Get UseStaleVersion
[UseStaleVersion] -> Put
UseStaleVersion -> Put
(UseStaleVersion -> Put)
-> Get UseStaleVersion
-> ([UseStaleVersion] -> Put)
-> Binary UseStaleVersion
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [UseStaleVersion] -> Put
$cputList :: [UseStaleVersion] -> Put
get :: Get UseStaleVersion
$cget :: Get UseStaleVersion
put :: UseStaleVersion -> Put
$cput :: UseStaleVersion -> Put
Binary, UseStaleVersion -> ()
(UseStaleVersion -> ()) -> NFData UseStaleVersion
forall a. (a -> ()) -> NFData a
rnf :: UseStaleVersion -> ()
$crnf :: UseStaleVersion -> ()
NFData)
data Package = Package
{ Package -> PackageName
_pname :: PackageName,
Package -> CheckVersion
_pversion :: CheckVersion,
Package -> PackageFetcher
_pfetcher :: PackageFetcher,
:: Maybe PackageExtractSrc,
Package -> Maybe PackageCargoLockFiles
_pcargo :: Maybe PackageCargoLockFiles,
Package -> PackagePassthru
_ppassthru :: PackagePassthru,
Package -> UseStaleVersion
_ppinned :: UseStaleVersion
}
newtype PackageKey = PackageKey PackageName
deriving newtype (PackageKey -> PackageKey -> Bool
(PackageKey -> PackageKey -> Bool)
-> (PackageKey -> PackageKey -> Bool) -> Eq PackageKey
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackageKey -> PackageKey -> Bool
$c/= :: PackageKey -> PackageKey -> Bool
== :: PackageKey -> PackageKey -> Bool
$c== :: PackageKey -> PackageKey -> Bool
Eq, Int -> PackageKey -> ShowS
[PackageKey] -> ShowS
PackageKey -> String
(Int -> PackageKey -> ShowS)
-> (PackageKey -> String)
-> ([PackageKey] -> ShowS)
-> Show PackageKey
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackageKey] -> ShowS
$cshowList :: [PackageKey] -> ShowS
show :: PackageKey -> String
$cshow :: PackageKey -> String
showsPrec :: Int -> PackageKey -> ShowS
$cshowsPrec :: Int -> PackageKey -> ShowS
Show, Eq PackageKey
Eq PackageKey
-> (PackageKey -> PackageKey -> Ordering)
-> (PackageKey -> PackageKey -> Bool)
-> (PackageKey -> PackageKey -> Bool)
-> (PackageKey -> PackageKey -> Bool)
-> (PackageKey -> PackageKey -> Bool)
-> (PackageKey -> PackageKey -> PackageKey)
-> (PackageKey -> PackageKey -> PackageKey)
-> Ord PackageKey
PackageKey -> PackageKey -> Bool
PackageKey -> PackageKey -> Ordering
PackageKey -> PackageKey -> PackageKey
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PackageKey -> PackageKey -> PackageKey
$cmin :: PackageKey -> PackageKey -> PackageKey
max :: PackageKey -> PackageKey -> PackageKey
$cmax :: PackageKey -> PackageKey -> PackageKey
>= :: PackageKey -> PackageKey -> Bool
$c>= :: PackageKey -> PackageKey -> Bool
> :: PackageKey -> PackageKey -> Bool
$c> :: PackageKey -> PackageKey -> Bool
<= :: PackageKey -> PackageKey -> Bool
$c<= :: PackageKey -> PackageKey -> Bool
< :: PackageKey -> PackageKey -> Bool
$c< :: PackageKey -> PackageKey -> Bool
compare :: PackageKey -> PackageKey -> Ordering
$ccompare :: PackageKey -> PackageKey -> Ordering
$cp1Ord :: Eq PackageKey
Ord, [PackageKey] -> Doc ann
PackageKey -> Doc ann
(forall ann. PackageKey -> Doc ann)
-> (forall ann. [PackageKey] -> Doc ann) -> Pretty PackageKey
forall ann. [PackageKey] -> Doc ann
forall ann. PackageKey -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
prettyList :: [PackageKey] -> Doc ann
$cprettyList :: forall ann. [PackageKey] -> Doc ann
pretty :: PackageKey -> Doc ann
$cpretty :: forall ann. PackageKey -> Doc ann
Pretty)
deriving stock (Typeable, (forall x. PackageKey -> Rep PackageKey x)
-> (forall x. Rep PackageKey x -> PackageKey) -> Generic PackageKey
forall x. Rep PackageKey x -> PackageKey
forall x. PackageKey -> Rep PackageKey x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PackageKey x -> PackageKey
$cfrom :: forall x. PackageKey -> Rep PackageKey x
Generic)
deriving anyclass (Eq PackageKey
Eq PackageKey
-> (Int -> PackageKey -> Int)
-> (PackageKey -> Int)
-> Hashable PackageKey
Int -> PackageKey -> Int
PackageKey -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: PackageKey -> Int
$chash :: PackageKey -> Int
hashWithSalt :: Int -> PackageKey -> Int
$chashWithSalt :: Int -> PackageKey -> Int
$cp1Hashable :: Eq PackageKey
Hashable, Get PackageKey
[PackageKey] -> Put
PackageKey -> Put
(PackageKey -> Put)
-> Get PackageKey -> ([PackageKey] -> Put) -> Binary PackageKey
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [PackageKey] -> Put
$cputList :: [PackageKey] -> Put
get :: Get PackageKey
$cget :: Get PackageKey
put :: PackageKey -> Put
$cput :: PackageKey -> Put
Binary, PackageKey -> ()
(PackageKey -> ()) -> NFData PackageKey
forall a. (a -> ()) -> NFData a
rnf :: PackageKey -> ()
$crnf :: PackageKey -> ()
NFData)
data Core = Core
deriving (Core -> Core -> Bool
(Core -> Core -> Bool) -> (Core -> Core -> Bool) -> Eq Core
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Core -> Core -> Bool
$c/= :: Core -> Core -> Bool
== :: Core -> Core -> Bool
$c== :: Core -> Core -> Bool
Eq, Int -> Core -> ShowS
[Core] -> ShowS
Core -> String
(Int -> Core -> ShowS)
-> (Core -> String) -> ([Core] -> ShowS) -> Show Core
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Core] -> ShowS
$cshowList :: [Core] -> ShowS
show :: Core -> String
$cshow :: Core -> String
showsPrec :: Int -> Core -> ShowS
$cshowsPrec :: Int -> Core -> ShowS
Show, Eq Core
Eq Core
-> (Core -> Core -> Ordering)
-> (Core -> Core -> Bool)
-> (Core -> Core -> Bool)
-> (Core -> Core -> Bool)
-> (Core -> Core -> Bool)
-> (Core -> Core -> Core)
-> (Core -> Core -> Core)
-> Ord Core
Core -> Core -> Bool
Core -> Core -> Ordering
Core -> Core -> Core
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Core -> Core -> Core
$cmin :: Core -> Core -> Core
max :: Core -> Core -> Core
$cmax :: Core -> Core -> Core
>= :: Core -> Core -> Bool
$c>= :: Core -> Core -> Bool
> :: Core -> Core -> Bool
$c> :: Core -> Core -> Bool
<= :: Core -> Core -> Bool
$c<= :: Core -> Core -> Bool
< :: Core -> Core -> Bool
$c< :: Core -> Core -> Bool
compare :: Core -> Core -> Ordering
$ccompare :: Core -> Core -> Ordering
$cp1Ord :: Eq Core
Ord, Typeable, (forall x. Core -> Rep Core x)
-> (forall x. Rep Core x -> Core) -> Generic Core
forall x. Rep Core x -> Core
forall x. Core -> Rep Core x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Core x -> Core
$cfrom :: forall x. Core -> Rep Core x
Generic, Eq Core
Eq Core -> (Int -> Core -> Int) -> (Core -> Int) -> Hashable Core
Int -> Core -> Int
Core -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Core -> Int
$chash :: Core -> Int
hashWithSalt :: Int -> Core -> Int
$chashWithSalt :: Int -> Core -> Int
$cp1Hashable :: Eq Core
Hashable, Get Core
[Core] -> Put
Core -> Put
(Core -> Put) -> Get Core -> ([Core] -> Put) -> Binary Core
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [Core] -> Put
$cputList :: [Core] -> Put
get :: Get Core
$cget :: Get Core
put :: Core -> Put
$cput :: Core -> Put
Binary, Core -> ()
(Core -> ()) -> NFData Core
forall a. (a -> ()) -> NFData a
rnf :: Core -> ()
$crnf :: Core -> ()
NFData)
type instance RuleResult Core = PackageResult
newtype WithPackageKey k = WithPackageKey (k, PackageKey)
deriving newtype (WithPackageKey k -> WithPackageKey k -> Bool
(WithPackageKey k -> WithPackageKey k -> Bool)
-> (WithPackageKey k -> WithPackageKey k -> Bool)
-> Eq (WithPackageKey k)
forall k. Eq k => WithPackageKey k -> WithPackageKey k -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WithPackageKey k -> WithPackageKey k -> Bool
$c/= :: forall k. Eq k => WithPackageKey k -> WithPackageKey k -> Bool
== :: WithPackageKey k -> WithPackageKey k -> Bool
$c== :: forall k. Eq k => WithPackageKey k -> WithPackageKey k -> Bool
Eq, Eq (WithPackageKey k)
Eq (WithPackageKey k)
-> (Int -> WithPackageKey k -> Int)
-> (WithPackageKey k -> Int)
-> Hashable (WithPackageKey k)
Int -> WithPackageKey k -> Int
WithPackageKey k -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
forall k. Hashable k => Eq (WithPackageKey k)
forall k. Hashable k => Int -> WithPackageKey k -> Int
forall k. Hashable k => WithPackageKey k -> Int
hash :: WithPackageKey k -> Int
$chash :: forall k. Hashable k => WithPackageKey k -> Int
hashWithSalt :: Int -> WithPackageKey k -> Int
$chashWithSalt :: forall k. Hashable k => Int -> WithPackageKey k -> Int
$cp1Hashable :: forall k. Hashable k => Eq (WithPackageKey k)
Hashable, Get (WithPackageKey k)
[WithPackageKey k] -> Put
WithPackageKey k -> Put
(WithPackageKey k -> Put)
-> Get (WithPackageKey k)
-> ([WithPackageKey k] -> Put)
-> Binary (WithPackageKey k)
forall k. Binary k => Get (WithPackageKey k)
forall k. Binary k => [WithPackageKey k] -> Put
forall k. Binary k => WithPackageKey k -> Put
forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t
putList :: [WithPackageKey k] -> Put
$cputList :: forall k. Binary k => [WithPackageKey k] -> Put
get :: Get (WithPackageKey k)
$cget :: forall k. Binary k => Get (WithPackageKey k)
put :: WithPackageKey k -> Put
$cput :: forall k. Binary k => WithPackageKey k -> Put
Binary, WithPackageKey k -> ()
(WithPackageKey k -> ()) -> NFData (WithPackageKey k)
forall k. NFData k => WithPackageKey k -> ()
forall a. (a -> ()) -> NFData a
rnf :: WithPackageKey k -> ()
$crnf :: forall k. NFData k => WithPackageKey k -> ()
NFData)
instance Show k => Show (WithPackageKey k) where
show :: WithPackageKey k -> String
show (WithPackageKey (k
k, PackageKey
n)) = k -> String
forall a. Show a => a -> String
show k
k String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
" (" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> PackageKey -> String
forall a. Show a => a -> String
show PackageKey
n String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
")"
type instance RuleResult (WithPackageKey k) = RuleResult k
data PackageResult = PackageResult
{ PackageResult -> PackageName
_prname :: PackageName,
PackageResult -> NvcheckerResult
_prversion :: NvcheckerResult,
PackageResult -> NixFetcher 'Fetched
_prfetched :: NixFetcher 'Fetched,
PackageResult -> Maybe (HashMap PackageName PackageName)
_prpassthru :: Maybe (HashMap Text Text),
:: Maybe (HashMap FilePath NixExpr),
PackageResult
-> Maybe
(HashMap String (PackageName, HashMap PackageName Checksum))
_prcargolock :: Maybe (HashMap FilePath (NixExpr, HashMap Text Checksum)),
PackageResult -> UseStaleVersion
_prpinned :: UseStaleVersion
}
deriving (Int -> PackageResult -> ShowS
[PackageResult] -> ShowS
PackageResult -> String
(Int -> PackageResult -> ShowS)
-> (PackageResult -> String)
-> ([PackageResult] -> ShowS)
-> Show PackageResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackageResult] -> ShowS
$cshowList :: [PackageResult] -> ShowS
show :: PackageResult -> String
$cshow :: PackageResult -> String
showsPrec :: Int -> PackageResult -> ShowS
$cshowsPrec :: Int -> PackageResult -> ShowS
Show, Typeable, (forall x. PackageResult -> Rep PackageResult x)
-> (forall x. Rep PackageResult x -> PackageResult)
-> Generic PackageResult
forall x. Rep PackageResult x -> PackageResult
forall x. PackageResult -> Rep PackageResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PackageResult x -> PackageResult
$cfrom :: forall x. PackageResult -> Rep PackageResult x
Generic, PackageResult -> ()
(PackageResult -> ()) -> NFData PackageResult
forall a. (a -> ()) -> NFData a
rnf :: PackageResult -> ()
$crnf :: PackageResult -> ()
NFData)
instance A.ToJSON PackageResult where
toJSON :: PackageResult -> Value
toJSON PackageResult {Maybe (HashMap String (PackageName, HashMap PackageName Checksum))
Maybe (HashMap String PackageName)
Maybe (HashMap PackageName PackageName)
PackageName
UseStaleVersion
NixFetcher 'Fetched
NvcheckerResult
_prpinned :: UseStaleVersion
_prcargolock :: Maybe (HashMap String (PackageName, HashMap PackageName Checksum))
_prextract :: Maybe (HashMap String PackageName)
_prpassthru :: Maybe (HashMap PackageName PackageName)
_prfetched :: NixFetcher 'Fetched
_prversion :: NvcheckerResult
_prname :: PackageName
_prpinned :: PackageResult -> UseStaleVersion
_prcargolock :: PackageResult
-> Maybe
(HashMap String (PackageName, HashMap PackageName Checksum))
_prextract :: PackageResult -> Maybe (HashMap String PackageName)
_prpassthru :: PackageResult -> Maybe (HashMap PackageName PackageName)
_prfetched :: PackageResult -> NixFetcher 'Fetched
_prversion :: PackageResult -> NvcheckerResult
_prname :: PackageResult -> PackageName
..} =
[Pair] -> Value
A.object
[ Key
"name" Key -> PackageName -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= PackageName
_prname,
Key
"version" Key -> Version -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= NvcheckerResult -> Version
nvNow NvcheckerResult
_prversion,
Key
"src" Key -> NixFetcher 'Fetched -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= NixFetcher 'Fetched
_prfetched,
Key
"extract" Key -> Maybe (HashMap String PackageName) -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Maybe (HashMap String PackageName)
_prextract,
Key
"passthru" Key -> Maybe (HashMap PackageName PackageName) -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Maybe (HashMap PackageName PackageName)
_prpassthru,
Key
"cargoLocks" Key
-> Maybe
(HashMap String (PackageName, HashMap PackageName Checksum))
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= Maybe (HashMap String (PackageName, HashMap PackageName Checksum))
_prcargolock,
Key
"pinned" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
A..= case UseStaleVersion
_prpinned of
UseStaleVersion
PermanentStale -> Bool
True
UseStaleVersion
_ -> Bool
False
]