560 lines
21 KiB
Text
560 lines
21 KiB
Text
cabal-version: 2.2
|
|
name: vervis
|
|
version: 0.2
|
|
synopsis: Federated project hosting platform
|
|
description:
|
|
Vervis a decentralized software project hosting web application, which
|
|
federates using ActivityPub and ForgeFed.
|
|
.
|
|
Most of the source code is in the public domain using the CC0 public domain
|
|
dedication, but the application as a whole has GPL dependencies, and is
|
|
released under the AGPL 3 license.
|
|
homepage: https://codeberg.org/ForgeFed/Vervis
|
|
bug-reports: https://codeberg.org/ForgeFed/Vervis/issues
|
|
license: AGPL-3.0-or-later
|
|
license-file: COPYING.AGPL3
|
|
author: Pere Lev
|
|
maintainer: pere@towards.vision
|
|
copyright: ♡ Copying is an act of love. Please copy, reuse and share.
|
|
category: Development, Distribution, Git, Web
|
|
build-type: Simple
|
|
extra-source-files: API.md
|
|
AUTHORS.md
|
|
CHANGELOG.md
|
|
COPYING
|
|
FEDERATION.md
|
|
INSTALL.md
|
|
README.md
|
|
|
|
source-repository head
|
|
type: git
|
|
location: https://codeberg.org/ForgeFed/Vervis
|
|
|
|
flag dev
|
|
description: Turn on development settings, like auto-reload templates.
|
|
default: False
|
|
|
|
flag library-only
|
|
description: Build for use with "yesod devel"
|
|
default: False
|
|
|
|
library
|
|
exposed-modules:
|
|
Vervis.Application
|
|
Vervis.Hook
|
|
other-modules:
|
|
Network.Git.Transport.HTTP.Fetch.RefDiscovery
|
|
Network.Git.Transport.HTTP.Fetch.UploadRequest
|
|
Network.Git.Get
|
|
Network.Git.Put
|
|
Network.Git.Types
|
|
Data.Binary.Get.Local
|
|
Data.Binary.Put.Local
|
|
|
|
Control.Applicative.Local
|
|
--Control.Concurrent.ActorOld
|
|
Control.Concurrent.Actor
|
|
Control.Concurrent.Local
|
|
Control.Concurrent.ResultShare
|
|
Control.Concurrent.Return
|
|
Control.Monad.Trans.Except.Local
|
|
Crypto.ActorKey
|
|
Crypto.PubKey.Encoding
|
|
Crypto.PublicVerifKey
|
|
--Darcs.Local.Repository
|
|
Data.Slab
|
|
Data.Slab.Backend
|
|
Data.Slab.Simple
|
|
Data.Aeson.Encode.Pretty.ToEncoding
|
|
Data.Aeson.Local
|
|
Data.Attoparsec.ByteString.Local
|
|
Data.Binary.Local
|
|
-- Data.Bitraversable.Local
|
|
Data.ByteString.Char8.Local
|
|
Data.ByteString.Local
|
|
Data.CaseInsensitive.Local
|
|
Data.Char.Local
|
|
--Data.DList.Local
|
|
Data.Either.Local
|
|
Data.EventTime.Local
|
|
Data.Functor.Local
|
|
Data.Graph.DirectedAcyclic.View.Tree
|
|
Data.Graph.Inductive.Query.Cycle
|
|
Data.Graph.Inductive.Query.Layer
|
|
Data.Graph.Inductive.Query.Path
|
|
Data.Graph.Inductive.Query.TransRed
|
|
Data.HashMap.Lazy.Local
|
|
--Data.Hourglass.Local
|
|
Data.Int.Local
|
|
Data.KeyFile
|
|
Data.List.Local
|
|
Data.List.NonEmpty.Local
|
|
Data.Maybe.Local
|
|
Data.MediaType
|
|
Data.ObjId
|
|
Data.Paginate.Local
|
|
Data.Patch.Local
|
|
Data.Text.UTF8.Local
|
|
Data.Text.Lazy.UTF8.Local
|
|
Data.Time.Clock.Local
|
|
Data.Tree.Local
|
|
Data.Tuple.Local
|
|
Data.VersionControl
|
|
Database.Esqueleto.Local
|
|
Database.Persist.Box
|
|
Database.Persist.Box.Internal
|
|
Database.Persist.Box.Via
|
|
Database.Persist.Class.Local
|
|
Database.Persist.JSON
|
|
Database.Persist.Sql.Local
|
|
Database.Persist.Sqlite.Local
|
|
Database.Persist.Local
|
|
--Database.Persist.Local.Class.PersistEntityHierarchy
|
|
Database.Persist.Local.RecursionDoc
|
|
Development.Darcs
|
|
Development.Git
|
|
Development.PatchMediaType
|
|
Development.PatchMediaType.JSON
|
|
Development.PatchMediaType.Persist
|
|
--Diagrams.IntransitiveDAG
|
|
Formatting.CaseInsensitive
|
|
Language.Haskell.TH.Quote.Local
|
|
Network.FedURI
|
|
Network.HTTP.Client.Conduit.ActivityPub
|
|
Network.HTTP.Digest
|
|
Network.SSH.Local
|
|
System.Process.Typed.Local
|
|
Text.Blaze.Local
|
|
Text.Display
|
|
Text.Email.Local
|
|
Text.FilePath.Local
|
|
Text.Jasmine.Local
|
|
Web.ActivityAccess
|
|
Web.ActivityPub
|
|
Web.ActivityPub.Internal
|
|
Web.Actor
|
|
Web.Actor.Deliver
|
|
Web.Actor.Persist
|
|
-- Web.Capability
|
|
Web.Text
|
|
Web.Hashids.Local
|
|
Web.PathPieces.Local
|
|
Yesod.ActivityPub
|
|
Yesod.Actor
|
|
Yesod.Auth.Unverified
|
|
Yesod.Auth.Unverified.Creds
|
|
Yesod.Auth.Unverified.Internal
|
|
Yesod.FedURI
|
|
Yesod.Form.Local
|
|
Yesod.Hashids
|
|
Yesod.MonadSite
|
|
Yesod.Paginate.Local
|
|
Yesod.Persist.Local
|
|
Yesod.RenderSource
|
|
Yesod.SessionEntity
|
|
|
|
Vervis.Access
|
|
Vervis.ActivityPub
|
|
Vervis.Actor
|
|
Vervis.Actor2
|
|
Vervis.Actor.Common
|
|
Vervis.Actor.Deck
|
|
Vervis.Actor.Factory
|
|
Vervis.Actor.Group
|
|
Vervis.Actor.Loom
|
|
Vervis.Actor.Person
|
|
Vervis.Actor.Person.Client
|
|
Vervis.Actor.Project
|
|
Vervis.Actor.Repo
|
|
Vervis.API
|
|
Vervis.Avatar
|
|
Vervis.BinaryBody
|
|
Vervis.Changes
|
|
Vervis.ChangeFeed
|
|
--Vervis.Class.Actor
|
|
Vervis.Client
|
|
Vervis.Cloth
|
|
--Vervis.Colour
|
|
--Vervis.Content
|
|
Vervis.Darcs
|
|
|
|
Vervis.Data.Actor
|
|
Vervis.Data.Collab
|
|
Vervis.Data.Discussion
|
|
Vervis.Data.Follow
|
|
Vervis.Data.Ticket
|
|
|
|
--Vervis.Federation
|
|
Vervis.Federation.Auth
|
|
Vervis.Federation.Discussion
|
|
Vervis.Federation.Offer
|
|
--Vervis.Federation.Push
|
|
Vervis.Federation.Ticket
|
|
Vervis.FedURI
|
|
Vervis.Fetch
|
|
Vervis.Field.Key
|
|
Vervis.Field.Person
|
|
--Vervis.Field.Project
|
|
--Vervis.Field.Repo
|
|
--Vervis.Field.Role
|
|
--Vervis.Field.Sharer
|
|
--Vervis.Field.Ticket
|
|
-- Vervis.Field.Workflow
|
|
Vervis.Form.Discussion
|
|
--Vervis.Form.Group
|
|
Vervis.Form.Key
|
|
Vervis.Form.Repo
|
|
--Vervis.Form.Role
|
|
Vervis.Form.Ticket
|
|
Vervis.Form.Tracker
|
|
-- Vervis.Form.Workflow
|
|
Vervis.Formatting
|
|
Vervis.Foundation
|
|
Vervis.Git
|
|
Vervis.GraphProxy
|
|
Vervis.Handler.Client
|
|
Vervis.Handler.Cloth
|
|
Vervis.Handler.Common
|
|
Vervis.Handler.Deck
|
|
Vervis.Handler.Factory
|
|
-- Vervis.Handler.Git
|
|
Vervis.Handler.Group
|
|
--Vervis.Handler.Inbox
|
|
Vervis.Handler.Key
|
|
Vervis.Handler.Loom
|
|
Vervis.Handler.Person
|
|
Vervis.Handler.Repo
|
|
--Vervis.Handler.Role
|
|
Vervis.Handler.Project
|
|
--Vervis.Handler.Sharer
|
|
Vervis.Handler.Ticket
|
|
-- Vervis.Handler.Wiki
|
|
-- Vervis.Handler.Workflow
|
|
Vervis.KeyFile
|
|
Vervis.Migration
|
|
Vervis.Migration.Entities
|
|
Vervis.Migration.Model2016
|
|
Vervis.Migration.Model2018
|
|
Vervis.Migration.Model2019
|
|
Vervis.Migration.Model2020
|
|
Vervis.Migration.Model2022
|
|
Vervis.Migration.Model2023
|
|
Vervis.Migration.Model2024
|
|
Vervis.Migration.TH
|
|
Vervis.Model
|
|
Vervis.Model.Entity
|
|
Vervis.Model.Group
|
|
Vervis.Model.Ident
|
|
Vervis.Model.Role
|
|
Vervis.Model.Ticket
|
|
Vervis.Model.TH
|
|
Vervis.Model.Workflow
|
|
Vervis.Paginate
|
|
Vervis.Palette
|
|
Vervis.Path
|
|
|
|
Vervis.Persist.Actor
|
|
Vervis.Persist.Collab
|
|
Vervis.Persist.Discussion
|
|
Vervis.Persist.Follow
|
|
Vervis.Persist.Ticket
|
|
|
|
Vervis.Readme
|
|
Vervis.Recipient
|
|
Vervis.RemoteActorStore
|
|
Vervis.RemoteActorStore.Types
|
|
--Vervis.Repo
|
|
Vervis.Secure
|
|
|
|
Vervis.Serve.Collab
|
|
|
|
Vervis.Settings
|
|
Vervis.Settings.StaticFiles
|
|
Vervis.Settings.TH
|
|
Vervis.SourceTree
|
|
Vervis.Ssh
|
|
Vervis.Style
|
|
Vervis.Ticket
|
|
Vervis.TicketFilter
|
|
Vervis.Time
|
|
|
|
Vervis.Web.Actor
|
|
Vervis.Web.Collab
|
|
Vervis.Web.Darcs
|
|
--Vervis.Web.Delivery
|
|
Vervis.Web.Discussion
|
|
Vervis.Web.Git
|
|
Vervis.Web.Repo
|
|
|
|
Vervis.Widget
|
|
Vervis.Widget.Discussion
|
|
Vervis.Widget.Person
|
|
Vervis.Widget.Repo
|
|
--Vervis.Widget.Role
|
|
Vervis.Widget.Ticket
|
|
Vervis.Widget.Tracker
|
|
-- Vervis.Widget.Workflow
|
|
-- Vervis.Wiki
|
|
--Vervis.WorkItem
|
|
|
|
default-extensions: TemplateHaskell
|
|
QuasiQuotes
|
|
OverloadedStrings
|
|
MultiParamTypeClasses
|
|
TypeFamilies
|
|
GADTs
|
|
GeneralizedNewtypeDeriving
|
|
FlexibleContexts
|
|
FlexibleInstances
|
|
EmptyDataDecls
|
|
NoMonomorphismRestriction
|
|
DeriveDataTypeable
|
|
ViewPatterns
|
|
TupleSections
|
|
RecordWildCards
|
|
LambdaCase
|
|
DerivingStrategies
|
|
StandaloneDeriving
|
|
DataKinds
|
|
|
|
build-depends: aeson
|
|
-- For activity JSOn display in /inbox test page
|
|
, aeson-pretty
|
|
-- For rethrowing in Control.Concurrent.Actor
|
|
, annotated-exception
|
|
-- for encoding and decoding of crypto public keys
|
|
, asn1-encoding
|
|
, asn1-types
|
|
-- for parsing commands sent over SSH and Darcs patch
|
|
-- metadata
|
|
, attoparsec
|
|
-- For LocalActorBy and LocalStageBy
|
|
, barbies
|
|
, base
|
|
-- for hex display of Darcs patch hashes
|
|
, base16-bytestring
|
|
, base58-bytestring
|
|
, base64-bytestring
|
|
-- for Data.Binary.Local
|
|
, binary
|
|
, blaze-html
|
|
-- for Data.EventTime.Local
|
|
, blaze-markup
|
|
, byteable
|
|
, bytestring
|
|
-- for Darcs.Local.PatchInfo.Parser
|
|
, bytestring-lexing
|
|
, case-insensitive
|
|
-- For slab/box/citron serialization
|
|
, cereal
|
|
, conduit
|
|
-- For httpAPEither
|
|
, conduit-extra
|
|
, containers
|
|
, cryptonite
|
|
, data-default
|
|
, data-default-class
|
|
, data-default-instances-bytestring
|
|
, data-ordlist
|
|
--, diff-parse
|
|
, directory
|
|
-- for Data.Git.Local
|
|
, directory-tree
|
|
, dlist
|
|
, dvara
|
|
, email-validate
|
|
, email-validate-json
|
|
, esqueleto
|
|
, exceptions
|
|
, fast-logger
|
|
-- for building a message tree using DFS in
|
|
-- Vervis.Discussion, possibly also used by some git
|
|
-- graph related code?
|
|
, fgl
|
|
, file-embed
|
|
, filepath
|
|
, formatting
|
|
, hashable
|
|
, hashids
|
|
-- for source file highlighting
|
|
, highlighter2
|
|
, http-client-signature
|
|
, html-entities
|
|
, http-signature
|
|
, gitrev
|
|
-- currently discarding all JS so no need for minifier
|
|
--, hjsmin
|
|
--, hourglass
|
|
, yesod-http-signature
|
|
, http-client
|
|
, http-client-tls
|
|
, http-conduit
|
|
, http-types
|
|
, libravatar
|
|
, memory
|
|
, mime-mail
|
|
, monad-control
|
|
, monad-logger
|
|
-- for Database.Persist.Local
|
|
, mtl
|
|
, network
|
|
, network-uri
|
|
, optics-core
|
|
, pandoc
|
|
, pandoc-types
|
|
-- for PathPiece instance for CI, Web.PathPieces.Local
|
|
, path-pieces
|
|
--, patience
|
|
, pem
|
|
, persistent
|
|
, persistent-email-address
|
|
, persistent-migration
|
|
, persistent-postgresql
|
|
, persistent-sqlite
|
|
, process
|
|
-- for generating hashids salt
|
|
, random
|
|
-- for Database.Persist.Local
|
|
, resourcet
|
|
, retry
|
|
, safe
|
|
, semialign
|
|
, shakespeare
|
|
-- for json debug highlighting in Yesod.RenderSource
|
|
, skylighting
|
|
, smtp-mail
|
|
, ssh
|
|
-- for holding actor key in a TVar
|
|
, stm
|
|
, template-haskell
|
|
, temporary
|
|
, text
|
|
, these
|
|
, time
|
|
, time-interval
|
|
, time-interval-aeson
|
|
, time-units
|
|
, tls
|
|
, transformers
|
|
-- probably should be replaced with lenses once I learn
|
|
, tuple
|
|
, typed-process
|
|
, first-class-families
|
|
, HList
|
|
-- For making git hooks executable, i.e. set file mode
|
|
, unix
|
|
-- For httpAPEither
|
|
, unliftio-core
|
|
, unliftio
|
|
, unordered-containers
|
|
, vary
|
|
, vector
|
|
, wai
|
|
, wai-extra
|
|
, wai-logger
|
|
, warp
|
|
-- for encoding and decoding of crypto public keys
|
|
, x509
|
|
-- for parsing darcs apply's changes XML from env var in
|
|
-- the vervis post-apply hook program
|
|
, xml
|
|
, xss-sanitize
|
|
, yaml
|
|
, yesod
|
|
, yesod-auth
|
|
, yesod-auth-account
|
|
, yesod-core
|
|
, yesod-form
|
|
, yesod-mail-send
|
|
, yesod-newsfeed
|
|
, yesod-static
|
|
, yesod-persistent
|
|
-- for reading gzipped darcs inventory via utils in
|
|
-- Data.Attoparsec.ByteString.Local
|
|
, zlib
|
|
|
|
hs-source-dirs: src
|
|
default-language: GHC2021
|
|
|
|
if flag(dev) || flag(library-only)
|
|
cpp-options: -DDEVELOPMENT
|
|
ghc-options: -Wall -fwarn-tabs -O0
|
|
-Werror=incomplete-patterns
|
|
-Werror=missing-fields
|
|
-Werror=overlapping-patterns
|
|
else
|
|
ghc-options: -Wall -fwarn-tabs -O2
|
|
|
|
executable vervis
|
|
main-is: main.hs
|
|
build-depends: base, vervis
|
|
hs-source-dirs: app
|
|
default-language: GHC2021
|
|
ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
|
|
|
|
if flag(library-only)
|
|
buildable: False
|
|
|
|
executable vervis-post-receive
|
|
main-is: main.hs
|
|
build-depends: base, vervis
|
|
hs-source-dirs: hook-git
|
|
default-language: GHC2021
|
|
ghc-options: -Wall
|
|
|
|
executable vervis-post-apply
|
|
main-is: main.hs
|
|
build-depends: base, vervis
|
|
hs-source-dirs: hook-darcs
|
|
default-language: GHC2021
|
|
ghc-options: -Wall
|
|
|
|
test-suite test
|
|
main-is: Spec.hs
|
|
|
|
default-extensions: TemplateHaskell
|
|
QuasiQuotes
|
|
OverloadedStrings
|
|
CPP
|
|
MultiParamTypeClasses
|
|
TypeFamilies
|
|
GADTs
|
|
GeneralizedNewtypeDeriving
|
|
FlexibleContexts
|
|
FlexibleInstances
|
|
EmptyDataDecls
|
|
NoMonomorphismRestriction
|
|
DeriveDataTypeable
|
|
ViewPatterns
|
|
TupleSections
|
|
|
|
build-depends: base
|
|
, vervis
|
|
, yesod-test
|
|
, yesod-core
|
|
, yesod
|
|
, persistent
|
|
, persistent-postgresql
|
|
, resourcet
|
|
, monad-logger
|
|
, shakespeare
|
|
, transformers
|
|
, hspec >= 2.0.0
|
|
, aeson
|
|
|
|
hs-source-dirs: test
|
|
default-language: GHC2021
|
|
ghc-options: -Wall
|
|
type: exitcode-stdio-1.0
|
|
|
|
-- test-suite test-graph
|
|
-- main-is: Test.hs
|
|
-- build-depends: base
|
|
-- , fgl
|
|
-- , fgl-arbitrary
|
|
-- , hspec
|
|
-- , vervis
|
|
-- hs-source-dirs: test
|
|
-- default-language: GHC2021
|
|
-- ghc-options: -Wall
|
|
-- type: exitcode-stdio-1.0
|