Compare commits

..

13 Commits

Author SHA1 Message Date
Lennart Spitzner 5bde33baf7 Update/Correct changelog 2023-04-28 11:41:53 +02:00
Lennart Spitzner 0f87ce032b Expose types involved in the API of the module 2023-04-28 11:26:38 +02:00
Lennart Spitzner 7eb5fdf0c3 Support ghc-9.2 2022-12-14 17:54:00 +01:00
Lennart Spitzner ce3875d1fd Stop using Semigroups.Option 2022-12-14 17:53:45 +01:00
Lennart Spitzner 751ac69eaf Bump bounds for ghc-9.0 2022-12-14 15:02:47 +01:00
Lennart Spitzner 4f169af01c Bump to 2.0.0.0, Append changelog, Update readme 2022-12-14 15:02:47 +01:00
Lennart Spitzner 5486bf0737 Make examples non-buildable without new flag butcher-examples 2022-12-14 15:02:47 +01:00
Lennart Spitzner 9fc7d27fc0 Add example for butcher+barbies usage 2022-12-14 15:02:47 +01:00
Lennart Spitzner 071eacccfc Clean up existing examples, Remove redundant function
mainFromCmdParserWithHelpDesc is no longer required, because
peekCmdDesc can be used at the top-level to access the full
CmdDesc value. The knot-tying implementation is no longer
required either.
2022-12-14 15:02:47 +01:00
Lennart Spitzner 91d57b07c4 Clean up haddocks 2022-12-14 15:02:47 +01:00
Lennart Spitzner b4dc827b6e Update examples / Put examples in components 2022-12-14 15:02:47 +01:00
Lennart Spitzner 5d67167c87 Major changeset: Add applicative, Refactor monadic interface
- monadic interface now uses two-phase setup: First step is to create a
  full CommandDesc value, second is running the parser on input while the
  CommandDesc is chained along
- applicative interface has a somewhat nicer/cleaner implementation, is
  more secure by avoiding any demands on the API user that are not encoded
  in types, but is slightly less expressive and requires ApplicativeDo to
  get readable code.
- The applicative interface is *NOT* finished and the test-suite does not
  cover it.
- Add the `traverseBarbie` construct which introduces a dependency on
  the `barbies` library. This also effectively:
- Stop support for ghc < 8.4.
- Refactor the module structure a bit, and change the API of the central
  `runCmdParser` function. It now returns a `PartialParseInfo`. Essentially,
  `runCmdParser` is a combination of the previous `runCmdParser` and the
  previous `simpleCompletion`. This API design is a curious advantage to
  laziness: Returning a complex struct is harmless as fields that the user
  does not use won't be evaluated. The downside is that the core function now
  looks like a complex beast, but the upside is that there is no need to
  expose multiple functions that are supposed to be chained in a certain way
  to get all functionality (if desired), and we still _can_ provide simpler
  versions that are just projections on the `PartialParseInfo`.
- Stop support for an anti-feature: The implicit merging of multiple
  sub-commands definitions with the same name.
2022-12-14 15:02:47 +01:00
Lennart Spitzner 6eb306cfd0 Switch to new seaaye setup 2022-12-14 15:02:47 +01:00
20 changed files with 282 additions and 391 deletions

4
.gitignore vendored
View File

@ -15,3 +15,7 @@ cabal.sandbox.config
\#*.gui\#
cabal.project.local
.ghc.environment.*
/result*
/nix/seaaye-cache
/nix/gcroots
/nix/ci-out

View File

@ -1,9 +1,10 @@
# Revision history for butcher
## 2.0.0.0 -- Sept 2020
## 2.0.0.0 -- May 2023
Large internal refactor including some breaking API changes.
- Support ghc-9.0 and ghc-9.2
- Add the "Applicative" interface in addition to the existing "Monadic" one.
This is slightly less expressive but conceptually cleaner/safer (and its
implementation is nicer). For best readability you may need `ApplicativeDo`.

View File

@ -53,7 +53,7 @@ library
UI.Butcher.Internal.Pretty
UI.Butcher.Internal.Interactive
build-depends:
{ base >=4.11 && <4.15
{ base >=4.11 && <4.17
, free < 5.2
, unsafe < 0.1
, microlens <0.5

3
nix/.gitignore vendored
View File

@ -1,3 +0,0 @@
nixpkgs.nix
local-extra-deps.nix
gcroots

View File

@ -1,32 +0,0 @@
This nix setup expects the iohk haskell-nix overlay to be available/included
when importing `<nixpkgs>`. Also, you might need a specific commit if you
want to test against all supported ghcs (8.4 - 8.10, currently).
# Useful commands:
~~~~.sh
# enter a shell for a specific build-plan
# (cabal-solved with ghc-8.4 in this case)
nix-shell nix/all.nix -A '"hackage-8.4".shell'
# run tests against ghcs 8.4 through 8.10, both against hackage and stackage package sets
nix/ci.sh
~~~~
# Files in this directory:
all.nix - main entrypoint into this package's nix world
via-hackage.nix - how to build this via cabal-solved package-set
via-stackage.nix - how to build via stackage-based package set
nixpkgs.nix - optional - if you want to use a custom nixpkgs channel
(the replacement needs to have haskell-nix overlay _and_
the cabal-check feature enabled though!)
local-extra-deps.nix - optional - for defining local addition deps for
dev testing
(plus some currently unused:)
materialized - materializations of cabal-solved build-plans
plan.nix - manual materialization of unsolved build-plan (used with
stackage snapshot to build package set)

View File

@ -1,103 +0,0 @@
let
importOrElse = maybePath: otherwise:
if builtins.pathExists maybePath then import maybePath else otherwise;
pkgs = importOrElse ./nixpkgs.nix
( let
haskellNix = import (
builtins.fetchTarball
https://github.com/lspitzner/haskell.nix/archive/efbc254a495e65f8d264b3232ddfdf5b8ddc52de.tar.gz
) { version = 2; };
nixpkgsSrc = haskellNix.sources.nixpkgs-2003;
in
import nixpkgsSrc haskellNix.nixpkgsArgs
);
gitignoreSrc = pkgs.fetchFromGitHub {
owner = "hercules-ci";
repo = "gitignore.nix";
rev = "c4662e662462e7bf3c2a968483478a665d00e717";
sha256 = "sha256:1npnx0h6bd0d7ql93ka7azhj40zgjp815fw2r6smg8ch9p7mzdlx";
};
inherit (import gitignoreSrc { inherit (pkgs) lib; }) gitignoreSource gitignoreFilter;
cleanedSource = pkgs.lib.cleanSourceWith {
name = "butcher";
src = ./..;
filter = p: t:
let baseName = baseNameOf (toString p);
in gitignoreFilter ./.. p t
&& baseName != ".gitignore"
&& baseName != "nix"
&& baseName != "shell.nix"
&& baseName != "default.nix";
};
localExtraDeps = importOrElse ./local-extra-deps.nix (_: []) {inherit pkgs;};
args = {
inherit pkgs;
inherit cleanedSource;
pkg-def-extras = localExtraDeps;
};
inherit (builtins) hasAttr;
in
assert pkgs.lib.assertMsg (hasAttr "haskell-nix" pkgs) "need iohk haskell-nix overlay!";
let
versions = {
# "stack-8.0" = import ./via-stack.nix (args // { resolver = "lts-9.21"; });
# "stack-8.2" = import ./via-stack.nix (args // { resolver = "lts-11.22"; });
"stackage-8.4" = import ./via-stackage.nix (args // {
# resolver = "lts-12.26";
stackFile = "stack-8.4.yaml";
ghc-ver = "ghc844";
});
"stackage-8.6" = import ./via-stackage.nix (args // {
# resolver = "lts-14.27";
stackFile = "stack-8.6.yaml";
ghc-ver = "ghc865";
});
"stackage-8.8" = import ./via-stackage.nix (args // {
# resolver = "lts-15.12";
stackFile = "stack-8.8.yaml";
ghc-ver = "ghc883";
});
"hackage-8.4" = import ./via-hackage.nix (args // {
ghc-ver = "ghc844";
index-state = "2020-08-10T00:00:00Z";
# plan-sha256 = "0s6rfanb6zxhr5zbinp7h25ahwasciwj3ambsr6zdxm1l782b3ap";
# materialized = ./materialized/hackage-8.4;
configureArgs = "--allow-newer='multistate:*'";
});
"hackage-8.6" = import ./via-hackage.nix (args // {
ghc-ver = "ghc865";
index-state = "2020-08-10T00:00:00Z";
# plan-sha256 = "01m95xirrh00dvdxrpsx8flhcwlwcvgr3diwlnkw7lj5f3i7rfrl";
# materialized = ./materialized/hackage-8.6;
configureArgs = "--allow-newer='multistate:*'";
});
"hackage-8.8" = import ./via-hackage.nix (args // {
ghc-ver = "ghc883";
index-state = "2020-08-10T00:00:00Z";
# plan-sha256 = "14qs7ynlf7p2qvdk8sf498y87ss5vab3ylnbpc8sacqbpv2hv4pf";
# materialized = ./materialized/hackage-8.8;
configureArgs = "--allow-newer='multistate:*'";
});
} // (if hasAttr "ghc8101" pkgs.haskell-nix.compiler
then {
"hackage-8.10" = import ./via-hackage.nix (args // {
ghc-ver = "ghc8101";
index-state = "2020-08-10T00:00:00Z";
# index-sha256 = "1h1x65840jl6w2qvyq9csc7b3ivadr933glarnmydk2b23vw2i77";
# plan-sha256 = "1s8a6cb5qgf4ky5s750rzx6aa52slp1skazh8kbx0dbfjd6df7yw";
# materialized = ./materialized/hackage-8.10;
configureArgs = "--allow-newer='multistate:*' --constraint 'splitmix<0.1'";
});
} else builtins.trace "warn: ghc 8.10 is not avaiable, will not be tested!" {}
);
in
versions // {
inherit cleanedSource;
default = versions."stackage-8.8";
roots = pkgs.linkFarm "haskell-nix-roots"
[ { name = "haskell-nix-roots-ghc844" ; path = pkgs.haskell-nix.roots "ghc844"; }
{ name = "haskell-nix-roots-ghc865" ; path = pkgs.haskell-nix.roots "ghc865"; }
{ name = "haskell-nix-roots-ghc883" ; path = pkgs.haskell-nix.roots "ghc883"; }
{ name = "haskell-nix-roots-ghc8101"; path = pkgs.haskell-nix.roots "ghc8101"; }
];
}

View File

@ -1,53 +0,0 @@
#!/bin/bash
OUTDIR="ci-out"
SUMMARY="$OUTDIR/0-summary"
CABAL_CHECK_ATTRPATH="hackage-8.10"
set -x
mkdir -p "$OUTDIR"
echo "# test summary" > "$SUMMARY"
function build-one {
local ATTRPATH=$1
# nix-build --no-out-link nix/all.nix -A "\"$ATTRPATH\".butcher.components.library"\
# 2> >(tee "$OUTDIR/$ATTRPATH-1-build-lib.txt" >&2)
# (($? == 0)) || { echo "$ATTRPATH: build src failed" >> "$SUMMARY"; return 1; }
# nix-build --no-out-link nix/all.nix -A "\"$ATTRPATH\".butcher.components.tests"\
# 2> >(tee "$OUTDIR/$ATTRPATH-2-build-test.txt" >&2)
# (($? == 0)) || { echo "$ATTRPATH: build test failed" >> "$SUMMARY"; return 1; }
nix-build -o "$OUTDIR/$ATTRPATH-build" nix/all.nix -Q -A "\"$ATTRPATH\".allComponents"\
2> >(tee "$OUTDIR/$ATTRPATH-build.txt" >&2)
(($? == 0)) || { echo "$ATTRPATH: all-component build failed" >> "$SUMMARY"; return 1; }
nix-build -o "$OUTDIR/$ATTRPATH-test-result.txt" -Q nix/all.nix -A "\"$ATTRPATH\".butcher.checks.tests"
(($? == 0)) || { echo "$ATTRPATH: run test failed" >> "$SUMMARY"; return 1; }
echo "$ATTRPATH: $(grep examples "$OUTDIR/$ATTRPATH-test-result.txt")" >> "$SUMMARY"
}
function cabal-check {
nix-build --no-out-link nix/all.nix -A "\"$CABAL_CHECK_ATTRPATH\".checks.cabal-check"\
2> >(tee "$OUTDIR/cabal-check.txt" >&2)
(($? == 0)) || { echo "cabal-check: failed" >> "$SUMMARY"; return 1; }
echo "cabal-check: success" >> "$SUMMARY"
}
find "$OUTDIR" -name "stackage*" -delete
find "$OUTDIR" -name "hackage*" -delete
rm "$OUTDIR/cabal-check.txt"
CLEANEDSOURCE=$(nix-instantiate --eval --read-write-mode nix/all.nix -A "cleanedSource.outPath")
(($? == 0)) || exit 1
( eval "cd $CLEANEDSOURCE; find" ) > "$OUTDIR/1-cleanedSource.txt"
build-one "stackage-8.4"
build-one "stackage-8.6"
build-one "stackage-8.8"
build-one "hackage-8.4"
build-one "hackage-8.6"
build-one "hackage-8.8"
build-one "hackage-8.10"
cabal-check
cat "$SUMMARY"

View File

@ -1,25 +0,0 @@
set -ex
ROOTSDIR="nix/gcroots"
function create-root {
local ATTRPATH=$1
nix-build -Q -o "${ROOTSDIR}/${ATTRPATH}-shell" nix/all.nix -A "\"$ATTRPATH\".shell"
nix-build -Q -o "${ROOTSDIR}/${ATTRPATH}-test" nix/all.nix -A "\"$ATTRPATH\".butcher.components.tests.tests"
nix-build -Q -o "${ROOTSDIR}/${ATTRPATH}-plan" nix/all.nix -A "\"$ATTRPATH\".butcher-plan"
nix-build -Q -o "${ROOTSDIR}/${ATTRPATH}-nix" nix/all.nix -A "\"$ATTRPATH\".butcher-nix" || true
}
mkdir -p "$ROOTSDIR"
nix-build -Q -o "${ROOTSDIR}/haskell-nix-roots" nix/all.nix -A "roots"
create-root "stackage-8.4"
create-root "stackage-8.6"
create-root "stackage-8.8"
create-root "hackage-8.4"
create-root "hackage-8.6"
create-root "hackage-8.8"
create-root "hackage-8.10"

View File

@ -1,70 +0,0 @@
{ pkgs
, cleanedSource
, pkg-def-extras ? []
, ghc-ver
, index-state
, index-sha256 ? null
, plan-sha256 ? null
, materialized ? null
, configureArgs ? ""
}:
let
butcher-nix = pkgs.haskell-nix.callCabalProjectToNix {
src = cleanedSource;
inherit index-state index-sha256 plan-sha256 materialized;
configureArgs = configureArgs + " -fbutcher-examples";
# ghc = pkgs.haskell-nix.compiler.${ghc-ver};
compiler-nix-name = ghc-ver;
};
butcher-plan = pkgs.haskell-nix.importAndFilterProject { inherit (butcher-nix) projectNix sourceRepos src; };
in rec {
inherit butcher-nix butcher-plan pkgs;
hsPkgs =
let
in let pkg-set = pkgs.haskell-nix.mkCabalProjectPkgSet
{ plan-pkgs = butcher-plan;
pkg-def-extras = pkg-def-extras;
modules = [
{ ghc.package = pkgs.haskell-nix.compiler.${ghc-ver}; }
# (pkgs.haskell-nix.mkCacheModule generatedCache)
{ packages.butcher.flags.butcher-examples = true; }
];
};
in pkg-set.config.hsPkgs;
inherit (hsPkgs) butcher;
inherit (hsPkgs.butcher) checks;
allComponents = pkgs.linkFarm
"allComponents"
(builtins.map
(x: { name = x.name; path = x; })
(pkgs.haskell-nix.haskellLib.getAllComponents butcher));
shell = hsPkgs.shellFor {
# Include only the *local* packages of your project.
packages = ps: with ps; [
butcher
];
# Builds a Hoogle documentation index of all dependencies,
# and provides a "hoogle" command to search the index.
withHoogle = false;
# You might want some extra tools in the shell (optional).
# Some common tools can be added with the `tools` argument
# tools = { cabal = "3.2.0.0"; };
# See overlays/tools.nix for more details
tools = { ghcid = "0.8.7"; cabal = "3.2.0.0"; };
# Some you may need to get some other way.
buildInputs = with pkgs.haskellPackages;
[ bash pkgs.nix ];
# Prevents cabal from choosing alternate plans, so that
# *all* dependencies are provided by Nix.
exactDeps = true;
};
}

View File

@ -1,100 +0,0 @@
{ pkgs
, ghc-ver
, cleanedSource
, stackFile
, pkg-def-extras ? []
}:
let
# package-desc = import ./plan.nix;
# butcher-plan = {
# inherit resolver;
# extras = hackage:
# { butcher = args: package-desc args // {
# src = pkgs.haskell-nix.cleanSourceHaskell {
# src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./..; name = "butcher"; };
# name = "butcher";
# };
# };
# };
# };
# this does not work at all, does not use local package (!)
# butcher-plan = (pkgs.haskell-nix.importAndFilterProject (
# (pkgs.haskell-nix.callStackToNix {
# name = "butcher-plan";
# src = ./..;
# stackYamlFile = builtins.toFile "stack.yaml" ''
# resolver: ${resolver}
# packages:
# - '.'
# extra-deps: []
# extra-package-dbs: []
# '';
# ignorePackageYaml = true;
# })
# ));
cleanedSource = pkgs.haskell-nix.cleanSourceHaskell { name = "butcher-"+stackFile; src = ./..; };
butcher-nix = pkgs.haskell-nix.callStackToNix {
name = "butcher";
src = cleanedSource;
stackYaml = stackFile;
};
butcher-plan = pkgs.haskell-nix.importAndFilterProject butcher-nix;
# butcher-pkgs = {
# inherit (butcher-plan.pkgs) modules resolver;
# extras = butcher-plan.pkgs.extras ps;
# };
generatedCache = pkgs.haskell-nix.genStackCache {
src = cleanedSource;
stackYaml = stackFile;
};
hsPkgs = (pkgs.haskell-nix.mkStackPkgSet {
stack-pkgs = butcher-plan;
pkg-def-extras = pkg-def-extras;
modules = [ (pkgs.haskell-nix.mkCacheModule generatedCache)
{ packages.butcher.flags.butcher-examples = true; }
];
}).config.hsPkgs;
in rec {
inherit butcher-nix butcher-plan hsPkgs pkgs;
inherit (hsPkgs) butcher;
inherit (hsPkgs.butcher) checks;
allComponents = pkgs.linkFarm
"allComponents"
(builtins.map
(x: { name = x.name; path = x; })
(pkgs.haskell-nix.haskellLib.getAllComponents butcher));
shell = hsPkgs.shellFor {
# Include only the *local* packages of your project.
packages = ps: with ps; [
butcher
];
# Builds a Hoogle documentation index of all dependencies,
# and provides a "hoogle" command to search the index.
withHoogle = false;
# You might want some extra tools in the shell (optional).
# Some common tools can be added with the `tools` argument
# tools = { cabal = "3.2.0.0"; };
# See overlays/tools.nix for more details
tools = { ghcid = "0.8.7"; cabal = "3.2.0.0"; };
# Some you may need to get some other way.
buildInputs = with pkgs.haskellPackages;
[ bash pkgs.nix ];
# Prevents cabal from choosing alternate plans, so that
# *all* dependencies are provided by Nix.
exactDeps = true;
};
}
# pkgs.haskell-nix.stackProject {
# src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; name = "butcher"; };
# pkg-def-extras = pkg-def-extras;
# modules = [
# { doHaddock = false; }
# ];
# }

74
seaaye.nix Normal file
View File

@ -0,0 +1,74 @@
{ seaaye-spec = 1;
haskell-nix-url = https://github.com/input-output-hk/haskell.nix/archive/506208fc9226e207a7beb1b4a26bbd9504a0f680.tar.gz;
haskell-nix-nixpkgs = "nixpkgs-2205";
package-name = "butcher";
targets =
{
hackage-8-06 = {
resolver = "hackage";
index-state = "2022-07-01T00:00:00Z";
ghc-ver = "ghc865";
};
hackage-8-08 = {
resolver = "hackage";
index-state = "2022-07-01T00:00:00Z";
ghc-ver = "ghc884";
};
hackage-8-10 = {
resolver = "hackage";
index-state = "2022-07-01T00:00:00Z";
ghc-ver = "ghc8107";
};
hackage-9-00 = {
resolver = "hackage";
index-state = "2022-07-01T00:00:00Z";
ghc-ver = "ghc902";
};
hackage-9-02 = {
resolver = "hackage";
index-state = "2022-07-01T00:00:00Z";
ghc-ver = "ghc925";
};
stackage-8-06 = {
resolver = "stackage";
stackFile = "stack-8-6.yaml";
ghc-ver = "ghc865";
};
stackage-8-08 = {
resolver = "stackage";
stackFile = "stack-8-8.yaml";
ghc-ver = "ghc884";
};
stackage-8-10 = {
resolver = "stackage";
stackFile = "stack-8-10.yaml";
ghc-ver = "ghc8107";
};
stackage-9-00 = {
resolver = "stackage";
stackFile = "stack-9-0.yaml";
ghc-ver = "ghc902";
};
stackage-9-02 = {
resolver = "stackage";
stackFile = "stack-9-2.yaml";
ghc-ver = "ghc925";
};
};
module-flags = [
# N.B.: There are haskell-nix module options. See the haskell-nix docs
# for details. Also, be careful about typos: In many cases you
# will not get errors but the typo'd flag will just not have any
# effect!
# { packages.my-package.flags.my-package-examples-examples = true; }
{ packages.butcher.flags.butcher-examples = true; }
];
default-target = "hackage-8-06";
do-check-hackage = "hackage.haskell.org";
do-check-changelog = "changelog.md";
cabal-project-local = ''
package butcher
flags: +butcher-examples
'';
# local-config-path = ./seaaye-local.nix;
}

View File

@ -157,7 +157,7 @@ data MyFlagStruct (c :: Type) (f :: Type -> Type) = MyFlagStruct
instance Barbies.FunctorB (MyFlagStruct Barbies.Covered)
instance Barbies.BareB MyFlagStruct
instance Barbies.TraversableB (MyFlagStruct Barbies.Covered)
instance Semigroup (MyFlagStruct Barbies.Covered Option) where
instance Semigroup (MyFlagStruct Barbies.Covered Maybe) where
(<>) = gmappend
_test :: IO ()

View File

@ -77,6 +77,8 @@ module UI.Butcher.Monadic.Command
, addAlternatives
, ManyUpperBound (..)
, varPartDesc
, PartParser
, PartParseResult(..)
)
where

View File

@ -116,7 +116,7 @@ import Data.Monoid ( Endo(..), All(..), Any(..), Sum(..), Product(..), Alt(..),
import Data.Void ( Void )
-- import Data.Proxy ( Proxy(..) )
import Data.Sequence ( Seq )
import Data.Semigroup ( Semigroup(..), Option )
import Data.Semigroup ( Semigroup(..) )
import Data.Map ( Map )
import Data.Set ( Set )

View File

@ -11,7 +11,7 @@
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver: lts-15.12
resolver: lts-18.13
# User packages to be built.
# Various formats can be used as shown in the example below.

66
stack-8-8.yaml Normal file
View File

@ -0,0 +1,66 @@
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example:
#
# resolver: lts-3.5
# resolver: nightly-2015-09-21
# resolver: ghc-7.10.2
#
# The location of a snapshot can be provided as a file or url. Stack assumes
# a snapshot provided as a file might change, whereas a url resource does not.
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver: lts-16.31
# User packages to be built.
# Various formats can be used as shown in the example below.
#
# packages:
# - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
# subdirs:
# - auto-update
# - wai
packages:
- .
# The following packages have been ignored due to incompatibility with the
# resolver compiler, dependency conflicts with other packages
# or unsatisfied dependencies.
#- .
# Dependency packages to be pulled from upstream that are not in the resolver.
# These entries can reference officially published versions as well as
# forks / in-progress versions pinned to a git hash. For example:
#
# extra-deps:
# - acme-missiles-0.3
# - git: https://github.com/commercialhaskell/stack.git
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
#
extra-deps:
- barbies-2.0.2.0
# Override default flag values for local packages and extra-deps
# flags: {}
# Extra package databases containing global packages
# extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=2.1"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor

100
stack-8-8_.yaml Normal file
View File

@ -0,0 +1,100 @@
# This file was automatically generated by 'stack init'
#
# Some commonly used options have been documented as comments in this file.
# For advanced use and comprehensive documentation of the format, please see:
# https://docs.haskellstack.org/en/stable/yaml_configuration/
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example:
#
# resolver: lts-3.5
# resolver: nightly-2015-09-21
# resolver: ghc-7.10.2
#
# The location of a snapshot can be provided as a file or url. Stack assumes
# a snapshot provided as a file might change, whereas a url resource does not.
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver:
compiler: ghc-8.8.1
# User packages to be built.
# Various formats can be used as shown in the example below.
#
# packages:
# - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
# subdirs:
# - auto-update
# - wai
packages:
# The following packages have been ignored due to incompatibility with the
# resolver compiler, dependency conflicts with other packages
# or unsatisfied dependencies.
- .
# Dependency packages to be pulled from upstream that are not in the resolver.
# These entries can reference officially published versions as well as
# forks / in-progress versions pinned to a git hash. For example:
#
# extra-deps:
# - acme-missiles-0.3
# - git: https://github.com/commercialhaskell/stack.git
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
#
extra-deps:
- bifunctors-5.5.5@sha256:e89def05aa5a9c729435592c11a35b54747558b1ec15c7283c7d61df03873ab6,3300
- deque-0.4.2.3@sha256:7cc8ddfc77df351ff9c16e838ccdb4a89f055c80a3111e27eba8d90e8edde7d0,1853
- extra-1.6.18@sha256:5f1fff126f0ae47b701fff5aa8462dc63cb44465d5a724b0afd20a3d731903af,2705
- free-5.1.2@sha256:cd57d8cbaf8ef37620219095694b83e3b3baf3b06e1c59f422a4954d3a5f4c42,4116
- microlens-0.4.11.2@sha256:765ec5cdd12a459e65161f0e3cdbce84652bf634d62af3911ba24e4bf8d4d944,4455
- microlens-th-0.4.3.2@sha256:dd09aa02b7dc235a91b1e9ea6cd4be2f24c74ef067bc4e5fa2a5453c8b999d2c,2199
- multistate-0.8.0.2@sha256:fbb0d8ade9ef73c8ed92488f5804d0ebe75d3a9c24bf53452bc3a4f32b34cb2e,3713
- unsafe-0.0@sha256:93e58ac9aa1f4f9c50e12662a211f6c0b6f28b65c570ff17359851451c9bcb3a,1851
- void-0.7.3@sha256:13d30f62fcdf065e595d679d4ac8b4b0c1bb1a1b73db7b5b5a8f857cb5c8a546,1857
- base-orphans-0.8.1@sha256:defd0057b5db93257528d89b5b01a0fee9738e878c121c686948ac4aa5dded63,2927
- clock-0.8@sha256:b4ae207e2d3761450060a0d0feb873269233898039c76fceef9cc1a544067767,4113
- comonad-5.0.5@sha256:b33bc635615647916e374a27e96c3de4df390684001eab6291283471cd3a9b62,3345
- distributive-0.6@sha256:26507cf231eb10db1eb54bc358477418ce87d5077ff76c66743925fb49494b54,3018
- exceptions-0.10.3@sha256:6e8e66f3acf2ea59f9e100c55a885591c1981789ac2222022ff523c30990efb8,2251
- monad-control-1.0.2.3@sha256:a3ae888d2fed2e2a0ca33ae11e2480219e07312bccf1a02ffe2ba2e3ec5913ee,2255
- profunctors-5.4@sha256:545fdbc05131fa29e6612e915ec5d4dadfbcf3a6def86c8b95ca26593b21b259,2073
- semigroupoids-5.3.3@sha256:260b62cb8539bb988e7f551f10a45ef1c81421c0d79010e9bde9321bad4982a7,7363
- semigroups-0.19.1@sha256:ecae129621e0d2f77bef2f01e4458c2e0567ab6e1f39579c61d7cec8058ebb0e,6262
- strict-list-0.1.4@sha256:0fa869e2c21b710b7133e8628169f120fe6299342628edd3d5087ded299bc941,1631
- tagged-0.8.6@sha256:7093ee39c9779beeacffa4b0035a0e8a25da16afcd1c1a876930207fb8e31d1c,2606
- th-abstraction-0.3.1.0@sha256:96042f6658f2dccfac03b33f0fd59f62b1f65b9b0a765d8a2ea6026f4081ee4a,1838
- transformers-base-0.4.5.2@sha256:e4d8155470905ba2942033a1537fc4cf91927d1c9b34693fd57ddf3bc02334af,1550
- cabal-doctest-1.0.7@sha256:2a9d524b9593fc5054c0bcfda9aeaffd4203f3663b77fab57db35ddd48ce6ad3,1573
- contravariant-1.5.2@sha256:853259271870000c007a281f0bf0bf6e1aaa97c5fd5cd5734d7b0d79b9de2af5,2761
- hashable-1.3.0.0@sha256:7ad8edaa681e81162ddddb4d703a9cffe6a0c9ddcfede31cf6569507ed3f1ddb,5179
- transformers-compat-0.6.5@sha256:50b00c57bf3fc379ec2477bfc261a2aebc983084488478adb29854f193af4696,5490
- unordered-containers-0.2.10.0@sha256:5e9b095a9283d9e2f064fec73a81a6b6ea0b7fda3f219a8175785d2d2a3de204,5199
- StateVar-1.2@sha256:9ab3e4a0e252d28bc2f799c83e0725c3e23e8d3b722cff0fdb9822e64b6c16ac,1413
allow-newer: True
# Override default flag values for local packages and extra-deps
# flags: {}
# Extra package databases containing global packages
# extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=2.1"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor

30
stack-9-0.yaml Normal file
View File

@ -0,0 +1,30 @@
resolver: lts-19.33
packages:
- .
extra-deps: []
# Override default flag values for local packages and extra-deps
# flags: {}
# Extra package databases containing global packages
# extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=2.1"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor