packages feed

swarm-0.4: swarm.cabal

cabal-version:      2.4
name:               swarm
version:            0.4
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.7 || ==9.4.5 || ==9.6.2
extra-source-files: CHANGELOG.md
                    example/*.sw
                    editors/emacs/*.el
                    editors/vscode/syntaxes/*.json
data-dir:           data/
data-files:         *.yaml, worlds/*.world, 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:  Control.Carrier.Accum.FixedStrict
                      Data.BoolExpr.Simplify
                      Swarm.App
                      Swarm.Constant
                      Swarm.Doc.Gen
                      Swarm.Doc.Pedagogy
                      Swarm.Game.Failure
                      Swarm.Game.Achievement.Attainment
                      Swarm.Game.Achievement.Definitions
                      Swarm.Game.Achievement.Description
                      Swarm.Game.Achievement.Persistence
                      Swarm.Game.CESK
                      Swarm.Game.Display
                      Swarm.Game.Entity
                      Swarm.Game.Exception
                      Swarm.Game.Location
                      Swarm.Game.Log
                      Swarm.Game.Recipe
                      Swarm.Game.ResourceLoading
                      Swarm.Game.Robot
                      Swarm.Game.Scenario
                      Swarm.Game.Scenario.Topography.Cell
                      Swarm.Game.Universe
                      Swarm.TUI.Launch.Controller
                      Swarm.TUI.Launch.Model
                      Swarm.TUI.Launch.Prep
                      Swarm.TUI.Launch.View
                      Swarm.Game.Scenario.Objective
                      Swarm.Game.Scenario.Objective.Graph
                      Swarm.Game.Scenario.Objective.Logic
                      Swarm.Game.Scenario.Objective.Validation
                      Swarm.Game.Scenario.Objective.WinCheck
                      Swarm.Game.Scenario.RobotLookup
                      Swarm.Game.Scenario.Scoring.Best
                      Swarm.Game.Scenario.Scoring.CodeSize
                      Swarm.Game.Scenario.Scoring.ConcreteMetrics
                      Swarm.Game.Scenario.Scoring.GenericMetrics
                      Swarm.Game.Scenario.Status
                      Swarm.Game.Scenario.Style
                      Swarm.Game.Scenario.Topography.EntityFacade
                      Swarm.Game.Scenario.Topography.Navigation.Portal
                      Swarm.Game.Scenario.Topography.Navigation.Waypoint
                      Swarm.Game.Scenario.Topography.Placement
                      Swarm.Game.Scenario.Topography.Structure
                      Swarm.Game.Scenario.Topography.WorldDescription
                      Swarm.Game.Scenario.Topography.WorldPalette
                      Swarm.Game.ScenarioInfo
                      Swarm.Game.State
                      Swarm.Game.Step
                      Swarm.Game.Terrain
                      Swarm.Game.Value
                      Swarm.Game.World
                      Swarm.Game.World.Abstract
                      Swarm.Game.World.Compile
                      Swarm.Game.World.Coords
                      Swarm.Game.World.Eval
                      Swarm.Game.World.Gen
                      Swarm.Game.World.Interpret
                      Swarm.Game.World.Load
                      Swarm.Game.World.Parse
                      Swarm.Game.World.Syntax
                      Swarm.Game.World.Typecheck
                      Swarm.Language.Capability
                      Swarm.Language.Context
                      Swarm.Language.Direction
                      Swarm.Language.Elaborate
                      Swarm.Language.Key
                      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.Text.Markdown
                      Swarm.Language.Typecheck
                      Swarm.Language.Typecheck.Unify
                      Swarm.Language.Typed
                      Swarm.Language.Types
                      Swarm.Language.Value
                      Swarm.ReadableIORef
                      Swarm.TUI.Attr
                      Swarm.TUI.Border
                      Swarm.Game.Scenario.Topography.Area
                      Swarm.TUI.Editor.Controller
                      Swarm.TUI.Editor.Json
                      Swarm.TUI.Editor.Masking
                      Swarm.TUI.Editor.Model
                      Swarm.TUI.Editor.Palette
                      Swarm.TUI.Editor.Util
                      Swarm.TUI.Editor.View
                      Swarm.TUI.Controller
                      Swarm.TUI.Controller.Util
                      Swarm.TUI.Inventory.Sorting
                      Swarm.TUI.List
                      Swarm.TUI.Model
                      Swarm.TUI.Model.Goal
                      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.CustomStyling
                      Swarm.TUI.View.Objective
                      Swarm.TUI.View.Util
                      Swarm.Util
                      Swarm.Util.Effect
                      Swarm.Util.Erasable
                      Swarm.Util.Lens
                      Swarm.Util.Parse
                      Swarm.Util.Yaml
                      Swarm.Version
                      Swarm.Web
    other-modules:    Paths_swarm
    autogen-modules:  Paths_swarm

    build-depends:    base                          >= 4.14 && < 4.19,
                      brick-list-skip               >= 0.1.1.2 && < 0.2,
                      aeson                         >= 2 && < 2.2,
                      array                         >= 0.5.4 && < 0.6,
                      blaze-html                    >= 0.9.1 && < 0.9.2,
                      boolexpr                      >= 0.2 && < 0.3,
                      brick                         >= 1.5 && < 1.10,
                      bytestring                    >= 0.10 && < 0.12,
                      clock                         >= 0.8.2 && < 0.9,
                      colour                        >= 2.3.6 && < 2.4,
                      commonmark                    >= 0.2 && < 0.3,
                      commonmark-extensions         >= 0.2 && < 0.3,
                      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,
                      fuzzy                         >= 0.1 && < 0.2,
                      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.5,
                      minimorph                     >= 0.3 && < 0.4,
                      transformers                  >= 0.5 && < 0.7,
                      mtl                           >= 2.2.2 && < 2.4,
                      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.21,
                      servant-docs                  >= 0.12 && < 0.14,
                      servant-server                >= 0.19 && < 0.21,
                      SHA                           >= 1.6.4 && < 1.6.5,
                      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.21,
                      text                          >= 1.2.4 && < 2.1,
                      text-rope                     >= 0.2 && < 0.3,
                      text-zipper                   >= 0.10 && < 0.14,
                      time                          >= 1.9 && < 1.14,
                      transformers                  >= 0.5.6.2 && < 0.6.2.0,
                      unification-fd                >= 0.11  && < 0.12,
                      unordered-containers          >= 0.2.14 && < 0.3,
                      vector                        >= 0.12 && < 0.14,
                      vty                           >= 5.33 && < 5.39,
                      wai                           >= 3.2 && < 3.3,
                      warp                          >= 3.2 && < 3.4,
                      witch                         >= 1.1.1.0 && < 1.3,
                      witherable                    >= 0.4 && < 0.5,
                      word-wrap                     >= 0.5 && < 0.6,
                      yaml                          >= 0.11 && < 0.11.12.0,
    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.19,
                      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
                      TestPedagogy
                      TestNotification
                      TestLanguagePipeline
                      TestPretty
                      TestBoolExpr
                      TestCommand
                      TestLSP
                      TestScoring
                      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,
                      boolexpr,
                      containers,
                      filepath,
                      hashable,
                      lens,
                      linear,
                      mtl,
                      swarm,
                      text,
                      time,
                      witch,
                      vty
    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,
                      fused-effects,
                      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,
                  containers
  default-language: Haskell2010
  ghc-options:      -threaded