packages feed

pr-tools-0.2.0.0: pr-tools.cabal

cabal-version:       3.0
name:                pr-tools
version:             0.2.0.0
synopsis:            Decentralized git pull request and code review flows
description:         A set of command-line tools for managing descentralized
                     git pull requests and code review workflows. These tools
                     help with creating PR snapshots, sending notifications
                     to Slack, tracking approvals, merging PRs, reviewing
                     changes, and viewing annotated diffs.

                     - pr-snapshot: Generate a Markdown snapshot of the PR including commits and diff summary.
                     - pr-send: Send the PR snapshot to a Slack channel for review.
                     - pr-track: Track PR approvals, status, and commit history.
                     - pr-merge: Merge approved PRs with various strategies and update changelog.
                     - pr-review: Interactive code review tool with comment management.
                     - pr-view: View annotated diffs with review comments.
                     - pr-fix: Fix comments received in a review.
                     - pr-init: Interactively generate configuration file for pr-tools.

license:             BSD-3-Clause
license-file:        LICENSE
author:              Mihai Giurgeanu
copyright:           (c) 2025 Mihai Giurgeanu
maintainer:          mihai.giurgeanu@gmail.com
homepage:            https://github.com/mihaigiurgeanu/pr-tools
build-type:          Simple
extra-doc-files:     README.md, CHANGELOG.md
category:            Git, Development
stability:           beta
bug-reports:         https://github.com/mihaigiurgeanu/pr-tools/issues

source-repository head
  type:     git
  location: https://github.com/mihaigiurgeanu/pr-tools.git

source-repository this
  type:     git
  location: https://github.com/mihaigiurgeanu/pr-tools.git
  tag:      0.1.0.0

common commons
  default-language: Haskell2010
  build-depends:    base >=4.14 && <5

library
  import: commons
  exposed-modules:  PRTools.Config
                  , PRTools.PRState
                  , PRTools.ReviewState
                  , PRTools.CommentRenderer
                  , PRTools.CommentFormatter
                  , PRTools.Slack
                  , PRTools.ReviewLogic
                  , PRTools.FixParser
                  , PRTools.ContentHash
  build-depends:    aeson >= 2.2.3 && < 2.3
                  , containers >= 0.6.7 && < 0.7
                  , directory >= 1.3.8 && < 1.4
                  , process >= 1.6.19 && < 1.7
                  , yaml >= 0.11.11 && < 0.12
                  , Diff >= 1.0.2 && < 1.1
                  , time >= 1.12.2 && < 1.13
                  , extra >= 1.8 && < 1.9
                  , uuid >= 1.3.16 && < 1.4
                  , bytestring >= 0.11.5 && < 0.12
                  , http-client >= 0.7.19 && < 0.8
                  , http-client-tls >= 0.3.6 && < 0.4
                  , http-types >= 0.12.4 && < 0.13
                  , text >= 2.0.2 && < 2.1
                  , case-insensitive >= 1.2.1 && < 1.3
                  , split >= 0.2.5 && < 0.3
                  , hashable >= 1.3.0 && < 1.6
  hs-source-dirs:   src

executable pr-snapshot
  import: commons
  main-is:          pr-snapshot.hs
  build-depends:    pr-tools
                  , directory >= 1.3.8 && < 1.4
                  , filepath >= 1.4.301 && < 1.5
                  , optparse-applicative >= 0.19.0 && < 0.20
                  , process >= 1.6.19 && < 1.7
  hs-source-dirs:   app

executable pr-send
  import: commons
  main-is:          pr-send.hs
  build-depends:    aeson >= 2.2.3 && < 2.3
                  , bytestring >= 0.11.5 && < 0.12
                  , case-insensitive >= 1.2.1 && < 1.3
                  , directory >= 1.3.8 && < 1.4
                  , filepath >= 1.4.301 && < 1.5
                  , http-client >= 0.7.19 && < 0.8
                  , http-client-tls >= 0.3.6 && < 0.4
                  , http-types >= 0.12.4 && < 0.13
                  , process >= 1.6.19 && < 1.7
                  , pr-tools
  hs-source-dirs:   app

executable pr-track
  import: commons
  main-is:          pr-track.hs
  build-depends:    pr-tools
                  , containers >= 0.6.7 && < 0.7
                  , optparse-applicative >= 0.19.0 && < 0.20
                  , process >= 1.6.19 && < 1.7
                  , time >= 1.12.2 && < 1.13
  hs-source-dirs:   app

executable pr-merge
  import: commons
  main-is:          pr-merge.hs
  build-depends:    pr-tools
                  , aeson >= 2.2.3 && < 2.3
                  , bytestring >= 0.11.5 && < 0.12
                  , case-insensitive >= 1.2.1 && < 1.3
                  , containers >= 0.6.7 && < 0.7
                  , filepath >= 1.4.301 && < 1.5
                  , http-client >= 0.7.19 && < 0.8
                  , http-client-tls >= 0.3.6 && < 0.4
                  , http-types >= 0.12.4 && < 0.13
                  , optparse-applicative >= 0.19.0 && < 0.20
                  , process >= 1.6.19 && < 1.7
                  , time >= 1.12.2 && < 1.13
  hs-source-dirs:   app

executable pr-review
  import: commons
  main-is:          pr-review.hs
  build-depends:    pr-tools
                  , aeson >= 2.2.3 && < 2.3
                  , bytestring >= 0.11.5 && < 0.12
                  , containers >= 0.6.7 && < 0.7
                  , Diff >= 1.0.2 && < 1.1
                  , directory >= 1.3.8 && < 1.4
                  , filepath >= 1.4.301 && < 1.5
                  , Glob >= 0.10.2 && < 0.11
                  , http-client >= 0.7.19 && < 0.8
                  , http-client-tls >= 0.3.6 && < 0.4
                  , http-types >= 0.12.4 && < 0.13
                  , optparse-applicative >= 0.19.0 && < 0.20
                  , process >= 1.6.19 && < 1.7
                  , temporary >= 1.3 && < 1.4
                  , uuid >= 1.3.16 && < 1.4
                  , split >= 0.2.5 && < 0.3
  hs-source-dirs:   app

executable pr-view
  import: commons
  main-is:          pr-view.hs
  build-depends:    pr-tools
                  , containers >= 0.6.7 && < 0.7
                  , filepath >= 1.4.301 && < 1.5
                  , Glob >= 0.10.2 && < 0.11
                  , optparse-applicative >= 0.19.0 && < 0.20
                  , process >= 1.6.19 && < 1.7
                  , yaml >= 0.11.11 && < 0.12
  hs-source-dirs:   app

executable pr-fix
  import: commons
  main-is:          pr-fix.hs
  build-depends:    pr-tools
                  , aeson >= 2.2.3 && < 2.3
                  , bytestring >= 0.11.5 && < 0.12
                  , containers >= 0.6.7 && < 0.7
                  , directory >= 1.3.8 && < 1.4
                  , filepath >= 1.4.301 && < 1.5
                  , http-client >= 0.7.19 && < 0.8
                  , http-client-tls >= 0.3.6 && < 0.4
                  , http-types >= 0.12.4 && < 0.13
                  , optparse-applicative >= 0.19.0 && < 0.20
                  , process >= 1.6.19 && < 1.7
                  , split >= 0.2.5 && < 0.3
                  , temporary >= 1.3 && < 1.4
                  , uuid >= 1.3.16 && < 1.4
                  , yaml >= 0.11.11 && < 0.12
  hs-source-dirs:   app

executable pr-init
  import: commons
  main-is:          pr-init.hs
  build-depends:    pr-tools
                  , directory >= 1.3.8 && < 1.4
                  , process >= 1.6.19 && < 1.7
  hs-source-dirs:   app


test-suite pr-tools-tests
  type:                exitcode-stdio-1.0
  main-is:             Spec.hs
  hs-source-dirs:      test
  build-depends:
      base >=4.7 && <5
    , pr-tools
    , hspec
    , hspec-discover
    , containers
  build-tool-depends:
      hspec-discover:hspec-discover
  other-modules:
      FixParserSpec
    , ReviewLogicSpec
    , PRStateSpec
    , CommentRendererSpec
  ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010