packages feed

swarm-0.3.0.1: swarm.cabal

cabal-version:      2.4
name:               swarm
version:            0.3.0.1
synopsis:           2D resource gathering game with programmable robots

description:        Swarm is a 2D programming and resource gathering
                    game. Program your robots to explore the world and
                    collect resources, which in turn allows you to
                    build upgraded robots that can run more
                    interesting and complex programs. See the README
                    for more information and instructions on how to
                    play or contribute!

license:            BSD-3-Clause
license-file:       LICENSE
author:             Brent Yorgey
maintainer:         byorgey@gmail.com
bug-reports:        https://github.com/swarm-game/swarm/issues
copyright:          Brent Yorgey 2021
category:           Game
tested-with:        GHC ==8.10.7 || ==9.0.2 || ==9.2.4 || ==9.4.2
extra-source-files: CHANGELOG.md
                    example/*.sw
                    editors/emacs/*.el
                    editors/vscode/syntaxes/*.json
data-dir:           data/
data-files:         *.yaml, scenarios/**/*.yaml, scenarios/**/*.txt, scenarios/**/*.sw, *.txt, test/language-snippets/**/*.sw

source-repository head
    type:     git
    location: git://github.com/swarm-game/swarm.git

flag ci
  description: Make warnings error
  default:     False
  manual:      True

common common
  if flag(ci)
    ghc-options:    -Werror
  ghc-options:      -Wall
                    -Wcompat
                    -Widentities
                    -Wincomplete-uni-patterns
                    -Wincomplete-record-updates
                    -Wno-star-is-type
  if impl(ghc >= 8.4)
    ghc-options:    -Wpartial-fields
  default-language: Haskell2010

common stan-config
    ghc-options:      -fwrite-ide-info
                      -hiedir=.hie

-- Harmless extensions from GHC2021
common ghc2021-extensions
    ghc-options:  -Wprepositive-qualified-module
    default-extensions:
      BangPatterns
      DeriveAnyClass
      DeriveDataTypeable
      DeriveFunctor
      DeriveGeneric
      DeriveTraversable
      ExplicitForAll
      FlexibleContexts
      FlexibleInstances
      GADTSyntax
      MultiParamTypeClasses
      NumericUnderscores
      RankNTypes
      ScopedTypeVariables
      StandaloneDeriving
      TupleSections
      TypeApplications
      TypeOperators
      -- Note we warn on prequalified
      ImportQualifiedPost
      -- Not GHC2021, but until we get \cases we use \case a lot
      LambdaCase

library
    import:           stan-config, common, ghc2021-extensions
    exposed-modules:  Data.BoolExpr
                      Data.BoolExpr.Simplify
                      Swarm.App
                      Swarm.DocGen
                      Swarm.Game.CESK
                      Swarm.Game.Display
                      Swarm.Game.Entity
                      Swarm.Game.Exception
                      Swarm.Game.Log
                      Swarm.Game.Recipe
                      Swarm.Game.Robot
                      Swarm.Game.Scenario
                      Swarm.Game.Scenario.Cell
                      Swarm.Game.Scenario.Objective.Logic
                      Swarm.Game.Scenario.Objective.Graph
                      Swarm.Game.Scenario.Objective.Presentation.Model
                      Swarm.Game.Scenario.Objective.Presentation.Render
                      Swarm.Game.Scenario.Objective.Validation
                      Swarm.Game.Scenario.Objective.WinCheck
                      Swarm.Game.Scenario.Objective
                      Swarm.Game.Scenario.RobotLookup
                      Swarm.Game.Scenario.Style
                      Swarm.Game.Scenario.WorldDescription
                      Swarm.Game.ScenarioInfo
                      Swarm.Game.State
                      Swarm.Game.Step
                      Swarm.Game.Terrain
                      Swarm.Game.World
                      Swarm.Game.WorldGen
                      Swarm.Language.Context
                      Swarm.Language.Capability
                      Swarm.Language.Elaborate
                      Swarm.Language.LSP
                      Swarm.Language.LSP.Hover
                      Swarm.Language.LSP.VarUsage
                      Swarm.Language.Module
                      Swarm.Language.Parse
                      Swarm.Language.Parse.QQ
                      Swarm.Language.Pipeline
                      Swarm.Language.Pipeline.QQ
                      Swarm.Language.Pretty
                      Swarm.Language.Requirement
                      Swarm.Language.Syntax
                      Swarm.Language.Typecheck
                      Swarm.Language.Typed
                      Swarm.Language.Types
                      Swarm.Language.Value
                      Swarm.TUI.Attr
                      Swarm.TUI.Border
                      Swarm.TUI.Controller
                      Swarm.TUI.Controller.Util
                      Swarm.TUI.View.CustomStyling
                      Swarm.TUI.Inventory.Sorting
                      Swarm.TUI.List
                      Swarm.TUI.Model
                      Swarm.TUI.Model.Achievement.Attainment
                      Swarm.TUI.Model.Achievement.Definitions
                      Swarm.TUI.Model.Achievement.Description
                      Swarm.TUI.Model.Achievement.Persistence
                      Swarm.TUI.Model.Failure
                      Swarm.TUI.Model.Menu
                      Swarm.TUI.Model.Name
                      Swarm.TUI.Model.Repl
                      Swarm.TUI.Model.StateUpdate
                      Swarm.TUI.Model.UI
                      Swarm.TUI.Panel
                      Swarm.TUI.View
                      Swarm.TUI.View.Achievement
                      Swarm.TUI.View.CellDisplay
                      Swarm.TUI.View.Util
                      Swarm.Util
                      Swarm.Util.Location
                      Swarm.Util.Yaml
                      Swarm.Version
                      Swarm.Web
    other-modules:    Paths_swarm
    autogen-modules:  Paths_swarm

    build-depends:    base                          >= 4.14 && < 4.18,
                      aeson                         >= 2 && < 2.2,
                      array                         >= 0.5.4 && < 0.6,
                      brick                         >= 1.5 && < 1.7,
                      bytestring                    >= 0.10 && < 0.12,
                      clock                         >= 0.8.2 && < 0.9,
                      containers                    >= 0.6.2 && < 0.7,
                      directory                     >= 1.3 && < 1.4,
                      dotgen                        >= 0.4 && < 0.5,
                      either                        >= 5.0 && < 5.1,
                      extra                         >= 1.7 && < 1.8,
                      filepath                      >= 1.4 && < 1.5,
                      fused-effects                 >= 1.1.1.1 && < 1.2,
                      fused-effects-lens            >= 1.2.0.1 && < 1.3,
                      githash                       >= 0.1.6 && < 0.2,
                      hashable                      >= 1.3.4 && < 1.5,
                      hsnoise                       >= 0.0.3 && < 0.1,
                      http-client                   >= 0.7 && < 0.8,
                      http-client-tls               >= 0.3 && < 0.4,
                      http-types                    >= 0.12 && < 0.13,
                      lens                          >= 4.19 && < 5.3,
                      linear                        >= 1.21.6 && < 1.23,
                      lsp                           >= 1.6 && < 1.7,
                      megaparsec                    >= 9.0 && < 9.4,
                      minimorph                     >= 0.3 && < 0.4,
                      mtl                           >= 2.2.2 && < 2.3,
                      murmur3                       >= 1.0.4 && < 1.1,
                      natural-sort                  >= 0.1.2 && < 0.2,
                      parser-combinators            >= 1.2 && < 1.4,
                      prettyprinter                 >= 1.7.0 && < 1.8,
                      random                        >= 1.2.0 && < 1.3,
                      servant                       >= 0.19 && < 0.20,
                      servant-server                >= 0.19 && < 0.20,
                      simple-enumeration            >= 0.2 && < 0.3,
                      split                         >= 0.2.3 && < 0.3,
                      stm                           >= 2.5.0 && < 2.6,
                      syb                           >= 0.7 && < 0.8,
                      tagged                        >= 0.8 && < 0.9,
                      template-haskell              >= 2.16 && < 2.20,
                      text                          >= 1.2.4 && < 2.1,
                      text-rope                     >= 0.2 && < 0.3,
                      text-zipper                   >= 0.10 && < 0.13,
                      time                          >= 1.9 && < 1.14,
                      unification-fd                >= 0.11  && < 0.12,
                      unordered-containers          >= 0.2.14 && < 0.3,
                      vector                        >= 0.12 && < 0.14,
                      vty                           >= 5.33 && < 5.38,
                      wai                           >= 3.2 && < 3.3,
                      warp                          >= 3.2 && < 3.4,
                      witch                         >= 1.1.1.0 && < 1.2,
                      word-wrap                     >= 0.5 && < 0.6,
                      yaml                          >= 0.11 && < 0.12,
    hs-source-dirs:   src
    default-language: Haskell2010
    default-extensions:
      -- Avoid unexpected unevaluated thunk buildup
      -- See discussion in #415
      StrictData

executable swarm
    import:           stan-config, common
    main-is:          Main.hs
    build-depends:    optparse-applicative          >= 0.16 && < 0.18,
                      githash                       >= 0.1.6 && < 0.2,
                      -- Imports shared with the library don't need bounds
                      base,
                      text,
                      swarm
    hs-source-dirs:   app
    default-language: Haskell2010
    ghc-options:      -threaded
    default-extensions: ImportQualifiedPost

test-suite swarm-unit
    import:           stan-config, common, ghc2021-extensions
    main-is:          Main.hs
    type:             exitcode-stdio-1.0
    other-modules:    TestEval
                      TestInventory
                      TestModel
                      TestNotification
                      TestLanguagePipeline
                      TestPretty
                      TestBoolExpr
                      TestLSP
                      TestUtil

    build-depends:    tasty                         >= 0.10 && < 1.5,
                      tasty-hunit                   >= 0.10 && < 0.11,
                      tasty-quickcheck              >= 0.10 && < 0.11,
                      QuickCheck                    >= 2.14 && < 2.15,
                      -- Imports shared with the library don't need bounds
                      aeson,
                      base,
                      containers,
                      filepath,
                      hashable,
                      lens,
                      linear,
                      mtl,
                      swarm,
                      text,
                      witch
    hs-source-dirs:   test/unit
    default-language: Haskell2010
    ghc-options:      -threaded

test-suite swarm-integration
    import:           stan-config, common, ghc2021-extensions
    main-is:          Main.hs
    type:             exitcode-stdio-1.0

    build-depends:    tasty                         >= 0.10 && < 1.5,
                      tasty-hunit                   >= 0.10 && < 0.11,
                      tasty-expected-failure        >= 0.12 && < 0.13,
                      -- Imports shared with the library don't need bounds
                      base,
                      containers,
                      directory,
                      filepath,
                      lens,
                      linear,
                      mtl,
                      swarm,
                      text,
                      transformers,
                      witch,
                      yaml
    hs-source-dirs:   test/integration
    default-language: Haskell2010
    ghc-options:      -threaded

benchmark benchmark
  import:         stan-config, common, ghc2021-extensions
  main-is:        Benchmark.hs
  hs-source-dirs: bench
  type:           exitcode-stdio-1.0
  build-depends:  criterion                         >= 1.6.0.0 && < 1.7,
                  -- Import shared with the library don't need bounds
                  base,
                  lens,
                  linear,
                  mtl,
                  random,
                  swarm,
                  text
  default-language: Haskell2010
  ghc-options:      -threaded