nvfetcher-0.1.0.0: Generate nix sources expr for the latest version of packages
Copyright(c) 2021 berberman
LicenseMIT
Maintainerberberman <berberman@yandex.com>
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

NvFetcher.Types

Description

Types used in this program.

Synopsis

Common types

newtype Version Source #

Package version

Constructors

Version Text 

Instances

Instances details
Eq Version Source # 
Instance details

Defined in NvFetcher.Types

Methods

(==) :: Version -> Version -> Bool #

(/=) :: Version -> Version -> Bool #

Ord Version Source # 
Instance details

Defined in NvFetcher.Types

Show Version Source # 
Instance details

Defined in NvFetcher.Types

IsString Version Source # 
Instance details

Defined in NvFetcher.Types

Methods

fromString :: String -> Version #

Generic Version Source # 
Instance details

Defined in NvFetcher.Types

Associated Types

type Rep Version :: Type -> Type #

Methods

from :: Version -> Rep Version x #

to :: Rep Version x -> Version #

Semigroup Version Source # 
Instance details

Defined in NvFetcher.Types

Monoid Version Source # 
Instance details

Defined in NvFetcher.Types

Hashable Version Source # 
Instance details

Defined in NvFetcher.Types

Methods

hashWithSalt :: Int -> Version -> Int #

hash :: Version -> Int #

ToJSON Version Source # 
Instance details

Defined in NvFetcher.Types

FromJSON Version Source # 
Instance details

Defined in NvFetcher.Types

Binary Version Source # 
Instance details

Defined in NvFetcher.Types

Methods

put :: Version -> Put #

get :: Get Version #

putList :: [Version] -> Put #

NFData Version Source # 
Instance details

Defined in NvFetcher.Types

Methods

rnf :: Version -> () #

ToNixExpr Version Source # 
Instance details

Defined in NvFetcher.NixFetcher

type Rep Version Source # 
Instance details

Defined in NvFetcher.Types

type Rep Version = D1 ('MetaData "Version" "NvFetcher.Types" "nvfetcher-0.1.0.0-inplace" 'True) (C1 ('MetaCons "Version" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

newtype SHA256 Source #

SHA 256 sum

Constructors

SHA256 Text 

Instances

Instances details
Eq SHA256 Source # 
Instance details

Defined in NvFetcher.Types

Methods

(==) :: SHA256 -> SHA256 -> Bool #

(/=) :: SHA256 -> SHA256 -> Bool #

Show SHA256 Source # 
Instance details

Defined in NvFetcher.Types

Generic SHA256 Source # 
Instance details

Defined in NvFetcher.Types

Associated Types

type Rep SHA256 :: Type -> Type #

Methods

from :: SHA256 -> Rep SHA256 x #

to :: Rep SHA256 x -> SHA256 #

Hashable SHA256 Source # 
Instance details

Defined in NvFetcher.Types

Methods

hashWithSalt :: Int -> SHA256 -> Int #

hash :: SHA256 -> Int #

Binary SHA256 Source # 
Instance details

Defined in NvFetcher.Types

Methods

put :: SHA256 -> Put #

get :: Get SHA256 #

putList :: [SHA256] -> Put #

NFData SHA256 Source # 
Instance details

Defined in NvFetcher.Types

Methods

rnf :: SHA256 -> () #

type Rep SHA256 Source # 
Instance details

Defined in NvFetcher.Types

type Rep SHA256 = D1 ('MetaData "SHA256" "NvFetcher.Types" "nvfetcher-0.1.0.0-inplace" 'True) (C1 ('MetaCons "SHA256" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

type NixExpr = Text Source #

Nix expression

data VersionChange Source #

Version change of a package

>>> VersionChange "foo" Nothing "2.3.3"
foo: ∅ → 2.3.3
>>> VersionChange "bar" (Just "2.2.2") "2.3.3"
bar: 2.2.2 → 2.3.3

Instances

Instances details
Eq VersionChange Source # 
Instance details

Defined in NvFetcher.Types

Show VersionChange Source # 
Instance details

Defined in NvFetcher.Types

newtype WithPackageKey k Source #

Decorate a rule's key with PackageKey

Constructors

WithPackageKey (k, PackageKey) 

Instances

Instances details
Eq k => Eq (WithPackageKey k) Source # 
Instance details

Defined in NvFetcher.Types

Show k => Show (WithPackageKey k) Source # 
Instance details

Defined in NvFetcher.Types

Hashable k => Hashable (WithPackageKey k) Source # 
Instance details

Defined in NvFetcher.Types

Binary k => Binary (WithPackageKey k) Source # 
Instance details

Defined in NvFetcher.Types

NFData k => NFData (WithPackageKey k) Source # 
Instance details

Defined in NvFetcher.Types

Methods

rnf :: WithPackageKey k -> () #

type RuleResult (WithPackageKey k) Source # 
Instance details

Defined in NvFetcher.Types

data Core Source #

The key type of nvfetcher rule. See NvFetcher.Core

Constructors

Core 

Instances

Instances details
Eq Core Source # 
Instance details

Defined in NvFetcher.Types

Methods

(==) :: Core -> Core -> Bool #

(/=) :: Core -> Core -> Bool #

Ord Core Source # 
Instance details

Defined in NvFetcher.Types

Methods

compare :: Core -> Core -> Ordering #

(<) :: Core -> Core -> Bool #

(<=) :: Core -> Core -> Bool #

(>) :: Core -> Core -> Bool #

(>=) :: Core -> Core -> Bool #

max :: Core -> Core -> Core #

min :: Core -> Core -> Core #

Show Core Source # 
Instance details

Defined in NvFetcher.Types

Methods

showsPrec :: Int -> Core -> ShowS #

show :: Core -> String #

showList :: [Core] -> ShowS #

Generic Core Source # 
Instance details

Defined in NvFetcher.Types

Associated Types

type Rep Core :: Type -> Type #

Methods

from :: Core -> Rep Core x #

to :: Rep Core x -> Core #

Hashable Core Source # 
Instance details

Defined in NvFetcher.Types

Methods

hashWithSalt :: Int -> Core -> Int #

hash :: Core -> Int #

Binary Core Source # 
Instance details

Defined in NvFetcher.Types

Methods

put :: Core -> Put #

get :: Get Core #

putList :: [Core] -> Put #

NFData Core Source # 
Instance details

Defined in NvFetcher.Types

Methods

rnf :: Core -> () #

type Rep Core Source # 
Instance details

Defined in NvFetcher.Types

type Rep Core = D1 ('MetaData "Core" "NvFetcher.Types" "nvfetcher-0.1.0.0-inplace" 'False) (C1 ('MetaCons "Core" 'PrefixI 'False) (U1 :: Type -> Type))
type RuleResult Core Source # 
Instance details

Defined in NvFetcher.Types

Nvchecker types

data VersionSource Source #

The input of nvchecker

Constructors

GitHubRelease 

Fields

Git 

Fields

Pypi 

Fields

ArchLinux 

Fields

Aur 

Fields

Manual 

Fields

Repology 

Fields

Instances

Instances details
Eq VersionSource Source # 
Instance details

Defined in NvFetcher.Types

Ord VersionSource Source # 
Instance details

Defined in NvFetcher.Types

Show VersionSource Source # 
Instance details

Defined in NvFetcher.Types

Generic VersionSource Source # 
Instance details

Defined in NvFetcher.Types

Associated Types

type Rep VersionSource :: Type -> Type #

Hashable VersionSource Source # 
Instance details

Defined in NvFetcher.Types

Binary VersionSource Source # 
Instance details

Defined in NvFetcher.Types

NFData VersionSource Source # 
Instance details

Defined in NvFetcher.Types

Methods

rnf :: VersionSource -> () #

type Rep VersionSource Source # 
Instance details

Defined in NvFetcher.Types

type RuleResult VersionSource Source # 
Instance details

Defined in NvFetcher.Types

data NvcheckerResult Source #

The result of running nvchecker

Constructors

NvcheckerResult 

Fields

Instances

Instances details
Eq NvcheckerResult Source # 
Instance details

Defined in NvFetcher.Types

Show NvcheckerResult Source # 
Instance details

Defined in NvFetcher.Types

Generic NvcheckerResult Source # 
Instance details

Defined in NvFetcher.Types

Associated Types

type Rep NvcheckerResult :: Type -> Type #

Hashable NvcheckerResult Source # 
Instance details

Defined in NvFetcher.Types

FromJSON NvcheckerResult Source # 
Instance details

Defined in NvFetcher.Types

Binary NvcheckerResult Source # 
Instance details

Defined in NvFetcher.Types

NFData NvcheckerResult Source # 
Instance details

Defined in NvFetcher.Types

Methods

rnf :: NvcheckerResult -> () #

type Rep NvcheckerResult Source # 
Instance details

Defined in NvFetcher.Types

type Rep NvcheckerResult = D1 ('MetaData "NvcheckerResult" "NvFetcher.Types" "nvfetcher-0.1.0.0-inplace" 'False) (C1 ('MetaCons "NvcheckerResult" 'PrefixI 'True) (S1 ('MetaSel ('Just "nvNow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version) :*: S1 ('MetaSel ('Just "nvOld") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Version))))

Nix fetcher types

data NixFetcher (k :: Prefetch) Source #

If the package is prefetched, then we can obtain the SHA256

Instances

Instances details
Eq (PrefetchResult k) => Eq (NixFetcher k) Source # 
Instance details

Defined in NvFetcher.Types

Methods

(==) :: NixFetcher k -> NixFetcher k -> Bool #

(/=) :: NixFetcher k -> NixFetcher k -> Bool #

Ord (PrefetchResult k) => Ord (NixFetcher k) Source # 
Instance details

Defined in NvFetcher.Types

Show (PrefetchResult k) => Show (NixFetcher k) Source # 
Instance details

Defined in NvFetcher.Types

Generic (NixFetcher k) Source # 
Instance details

Defined in NvFetcher.Types

Associated Types

type Rep (NixFetcher k) :: Type -> Type #

Methods

from :: NixFetcher k -> Rep (NixFetcher k) x #

to :: Rep (NixFetcher k) x -> NixFetcher k #

Hashable (PrefetchResult k) => Hashable (NixFetcher k) Source # 
Instance details

Defined in NvFetcher.Types

Methods

hashWithSalt :: Int -> NixFetcher k -> Int #

hash :: NixFetcher k -> Int #

Binary (PrefetchResult k) => Binary (NixFetcher k) Source # 
Instance details

Defined in NvFetcher.Types

Methods

put :: NixFetcher k -> Put #

get :: Get (NixFetcher k) #

putList :: [NixFetcher k] -> Put #

NFData (PrefetchResult k) => NFData (NixFetcher k) Source # 
Instance details

Defined in NvFetcher.Types

Methods

rnf :: NixFetcher k -> () #

ToNixExpr (NixFetcher 'Fresh) Source # 
Instance details

Defined in NvFetcher.NixFetcher

ToNixExpr (NixFetcher 'Prefetched) Source # 
Instance details

Defined in NvFetcher.NixFetcher

type Rep (NixFetcher k) Source # 
Instance details

Defined in NvFetcher.Types

type RuleResult (NixFetcher 'Fresh) Source # 
Instance details

Defined in NvFetcher.Types

data Prefetch Source #

Prefetch status

Constructors

Fresh 
Prefetched 

type family PrefetchResult (k :: Prefetch) where ... Source #

Prefetched fetchers hold hashes

Package types

type PackageName = Text Source #

Package name, used in generating nix expr

type PackageFetcher = Version -> NixFetcher Fresh Source #

How to create package source fetcher given a version

data Package Source #

A package is defined with:

  1. its name
  2. how to track its version
  3. how to fetch it as we have the version

INVARIANT: Version passed to PackageFetcher MUST be used textually, i.e. can only be concatenated with other strings, in case we can't check the equality between fetcher functions.

newtype PackageKey Source #

Package key is the name of a package. We use this type to index packages.

Constructors

PackageKey PackageName 

Instances

Instances details
Eq PackageKey Source # 
Instance details

Defined in NvFetcher.Types

Ord PackageKey Source # 
Instance details

Defined in NvFetcher.Types

Show PackageKey Source # 
Instance details

Defined in NvFetcher.Types

Generic PackageKey Source # 
Instance details

Defined in NvFetcher.Types

Associated Types

type Rep PackageKey :: Type -> Type #

Hashable PackageKey Source # 
Instance details

Defined in NvFetcher.Types

Binary PackageKey Source # 
Instance details

Defined in NvFetcher.Types

NFData PackageKey Source # 
Instance details

Defined in NvFetcher.Types

Methods

rnf :: PackageKey -> () #

type Rep PackageKey Source # 
Instance details

Defined in NvFetcher.Types

type Rep PackageKey = D1 ('MetaData "PackageKey" "NvFetcher.Types" "nvfetcher-0.1.0.0-inplace" 'True) (C1 ('MetaCons "PackageKey" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageName)))