Eventually-decentralized project hosting and management platform

[[ 🗃 ^WvWbo vervis ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Changes]

Clone

HTTPS: darcs clone https://vervis.peers.community/repos/WvWbo

SSH: darcs clone USERNAME@vervis.peers.community:WvWbo

Tags

TODO

vervis.cabal

name:                vervis
version:             0.1
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://vervis.peers.community/repos/WvWbo
bug-reports:         fr33domlover@riseup.net
license:             AGPL-3
license-file:        COPYING.AGPL3
author:              fr33domlover
maintainer:          fr33domlover@riseup.net
copyright:           ♡ Copying is an act of love. Please copy, reuse and share.
category:            Development, Distribution, Git, Web
build-type:          Simple
extra-source-files:  AUTHORS.md
                     CHANGELOG.md
                     COPYING
                     FEDERATION.md
                     INSTALL.md
                     README.md
cabal-version:       >=1.10

source-repository head
  type:                darcs
  location:            https://vervis.peers.community/repos/WvWbo

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:
                       Control.Applicative.Local
                       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.Git.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.Paginate.Local
                       Data.Patch.Local
                       Data.Text.UTF8.Local
                       Data.Text.Lazy.UTF8.Local
                       Data.Time.Clock.Local
                       Data.Tree.Local
                       Data.Tuple.Local
                       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.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.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.Deck
                       Vervis.Actor.Group
                       Vervis.Actor.Loom
                       Vervis.Actor.Person
                       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.Collab
                       Vervis.Federation.Discussion
                       Vervis.Federation.Offer
                       --Vervis.Federation.Push
                       Vervis.Federation.Ticket
                       Vervis.Federation.Util
                       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.Git
                       Vervis.Handler.Group
                       --Vervis.Handler.Inbox
                       Vervis.Handler.Key
                       Vervis.Handler.Loom
                       Vervis.Handler.Person
                       Vervis.Handler.Repo
                       --Vervis.Handler.Role
                       --Vervis.Handler.Sharer
                       Vervis.Handler.Ticket
                       -- Vervis.Handler.Wiki
                       -- Vervis.Handler.Workflow
                       Vervis.KeyFile
                       Vervis.Migration
                       Vervis.Migration.Entities
                       Vervis.Migration.Model
                       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.Query
                       Vervis.Readme
                       Vervis.Recipient
                       Vervis.RemoteActorStore
                       --Vervis.Repo
                       --Vervis.Role
                       Vervis.Secure
                       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.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

  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
                     , 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
                       -- for defining colors for use with diagrams
                     , colour
                     , conduit
                       -- For httpAPEither
                     , conduit-extra
                     , containers
                     , cryptonite
                       -- for Storage.Hashed because hashed-storage seems
                       -- unmaintained and darcs has its own copy
                     , darcs
                     , darcs-lights
                     , darcs-rev
                     , data-default
                     , data-default-class
                     , data-default-instances-bytestring
                     , data-ordlist
                       -- for drawing DAGs: RBAC role inheritance, etc.
                       , diagrams-core
                       , diagrams-lib
                       , diagrams-svg
                     , 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
                     , git
                     , hit-graph
                     , hit-harder
                     , hit-network
                     -- currently discarding all JS so no need for minifier
                     --, hjsmin
                     -- 'git' uses it for 'GitTime'
                     , 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
                     , pandoc
                     , pandoc-types
                       -- for PathPiece instance for CI, Web.PathPieces.Local
                     , path-pieces
                     , patience
                     , pem
                     , persistent
                     , persistent-email-address
                     , persistent-graph
                     , persistent-migration
                     , persistent-postgresql
                     , persistent-sqlite
                     , persistent-template
                     , process
                       -- for generating hashids salt
                     , random
                       -- for Database.Persist.Local
                     , resourcet
                     , retry
                     , safe
                     , shakespeare
                       -- for json debug highlighting in Yesod.RenderSource
                     , skylighting
                     , smtp-mail
                     , ssh
                       -- for holding actor key in a TVar
                     , stm
                       -- for rendering diagrams
                     , svg-builder
                       -- for text drawing in 'diagrams'
                     , SVGFonts
                     , 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
                       -- For making git hooks executable, i.e. set file mode
                     , unix
                       -- For httpAPEither
                     , unliftio-core
                     , unliftio
                     , unordered-containers
                     , 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:    Haskell2010

  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:    Haskell2010
  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:    Haskell2010
  ghc-options:         -Wall

executable vervis-post-apply
  main-is:             main.hs
  build-depends:       base, vervis
  hs-source-dirs:      hook-darcs
  default-language:    Haskell2010
  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:    Haskell2010
  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:    Haskell2010
--   ghc-options:         -Wall
--   type:                exitcode-stdio-1.0

[See repo JSON]