diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index 097343d..d0d85eb 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -15,11 +15,21 @@ on: - "flake.lock" - "agora.cabal" jobs: - check-formatting: + flake: runs-on: ubuntu-latest + strategy: + matrix: + tasks: ["agora", "formatCheck", "benchCheck"] steps: - uses: actions/checkout@v2.4.0 + - uses: webfactory/ssh-agent@v0.5.4 + with: + ssh-private-key: | + ${{ secrets.LIQWID_PLUTARCH_EXTRA_PRIVATE }} + ${{ secrets.PLUTARCH_NUMERIC_PRIVATE }} + ${{ secrets.PLUTARCH_SAFE_MONEY_PRIVATE }} + - uses: cachix/install-nix-action@v16 name: Set up Nix and IOHK caches with: @@ -34,67 +44,20 @@ jobs: name: mlabs authToken: ${{ secrets.CACHIX_KEY }} - - run: nix build .#checks.x86_64-linux.formatCheck - name: Run 'formatCheck' from flake.nix - - check-bench: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2.4.0 - - - uses: cachix/install-nix-action@v16 - name: Set up Nix and IOHK caches - with: - nix_path: nixpkgs=channel:nixos-unstable - extra_nix_config: | - trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= - substituters = https://hydra.iohk.io https://iohk.cachix.org https://cache.nixos.org/ - experimental-features = nix-command flakes - - - uses: cachix/cachix-action@v10 - with: - name: mlabs - authToken: ${{ secrets.CACHIX_KEY }} - - - run: nix build .#checks.x86_64-linux.benchCheck - name: Run 'benchCheck' from flake.nix - - check-build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2.4.0 - - - uses: cachix/install-nix-action@v16 - name: Set up Nix and IOHK caches - with: - nix_path: nixpkgs=channel:nixos-unstable - extra_nix_config: | - trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= - substituters = https://hydra.iohk.io https://iohk.cachix.org https://cache.nixos.org/ - experimental-features = nix-command flakes - - - uses: cachix/cachix-action@v10 - with: - name: mlabs - authToken: ${{ secrets.CACHIX_KEY }} - - - name: Add cabal folder to cache - id: cabal - uses: actions/cache@v2.1.4 - with: - path: | - ~/.cabal/packages - ~/.cabal/store - dist-newstyle - key: ${{ runner.os }}-cabal - - - name: Build the project - run: nix build .#check.x86_64-linux + - run: nix build .#checks.x86_64-linux.${{ matrix.tasks }} + name: Run '${{ matrix.tasks }}' from flake.nix haddock: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.4.0 + + - uses: webfactory/ssh-agent@v0.5.4 + with: + ssh-private-key: | + ${{ secrets.LIQWID_PLUTARCH_EXTRA_PRIVATE }} + ${{ secrets.PLUTARCH_NUMERIC_PRIVATE }} + ${{ secrets.PLUTARCH_SAFE_MONEY_PRIVATE }} - uses: cachix/install-nix-action@v16 name: Set up Nix and IOHK caches diff --git a/agora-sample/Sample/Effect/GovernorMutation.hs b/agora-sample/Sample/Effect/GovernorMutation.hs index fe65403..b2f851f 100644 --- a/agora-sample/Sample/Effect/GovernorMutation.hs +++ b/agora-sample/Sample/Effect/GovernorMutation.hs @@ -22,8 +22,8 @@ import Agora.Proposal (ProposalId (..), ProposalThresholds (..)) -------------------------------------------------------------------------------- -import Plutarch.Api.V1 (mkValidator, validatorHash) import Data.Tagged (Tagged (..)) +import Plutarch.Api.V1 (mkValidator, validatorHash) import Plutus.V1.Ledger.Address (scriptHashAddress) import Plutus.V1.Ledger.Api ( Address, diff --git a/agora-sample/Sample/Governor.hs b/agora-sample/Sample/Governor.hs index e7d1871..b05e3a1 100644 --- a/agora-sample/Sample/Governor.hs +++ b/agora-sample/Sample/Governor.hs @@ -14,8 +14,8 @@ module Sample.Governor ( -------------------------------------------------------------------------------- +import Data.Tagged (Tagged (..), untag) import Plutarch.Api.V1 (mkValidator, validatorHash) -import Data.Tagged (Tagged(..), untag) -------------------------------------------------------------------------------- diff --git a/agora-sample/Sample/Proposal.hs b/agora-sample/Sample/Proposal.hs index 7e57216..9dbdb93 100644 --- a/agora-sample/Sample/Proposal.hs +++ b/agora-sample/Sample/Proposal.hs @@ -56,7 +56,7 @@ import Agora.Proposal ( ) import Agora.Proposal.Time (ProposalStartingTime (ProposalStartingTime), ProposalTimingConfig (..)) import Agora.Stake (ProposalLock (ProposalLock), Stake (..), StakeDatum (..)) -import Data.Tagged (Tagged(..), untag) +import Data.Tagged (Tagged (..), untag) import Sample.Shared import Test.Util (closedBoundedInterval, datumPair, toDatumHash, updateMap) diff --git a/agora-sample/Sample/Shared.hs b/agora-sample/Sample/Shared.hs index d359d00..41292ff 100644 --- a/agora-sample/Sample/Shared.hs +++ b/agora-sample/Sample/Shared.hs @@ -86,13 +86,13 @@ import Agora.Stake (Stake (..)) import Agora.Treasury (treasuryValidator) import Agora.Utils (validatorHashToTokenName) import Data.Default.Class (Default (..)) +import Data.Tagged (Tagged (..)) import Plutarch.Api.V1 ( mintingPolicySymbol, mkMintingPolicy, mkValidator, validatorHash, ) -import Data.Tagged (Tagged (..)) import Plutus.V1.Ledger.Address (scriptHashAddress) import Plutus.V1.Ledger.Api ( Address (Address), diff --git a/agora-scripts/Scripts.hs b/agora-scripts/Scripts.hs index 34ecf47..b66991d 100644 --- a/agora-scripts/Scripts.hs +++ b/agora-scripts/Scripts.hs @@ -27,10 +27,10 @@ import Agora.Stake.Scripts (stakePolicy, stakeValidator) import Agora.Treasury (treasuryValidator) import Control.Monad ((>=>)) import Data.Aeson qualified as Aeson +import Data.Tagged (Tagged) import GHC.Generics qualified as GHC import Options (Options (..), parseOptions) import Plutarch.Api.V1 (mintingPolicySymbol, mkMintingPolicy) -import Data.Tagged (Tagged) import Plutus.V1.Ledger.Api (TxOutRef) import Plutus.V1.Ledger.Value (AssetClass, CurrencySymbol) import Plutus.V1.Ledger.Value qualified as Value diff --git a/agora.cabal b/agora.cabal index acaa9ec..ac9e215 100644 --- a/agora.cabal +++ b/agora.cabal @@ -23,7 +23,6 @@ common lang pprelude (PPrelude as Prelude) default-extensions: - PackageImports NoStarIsType BangPatterns BinaryLiterals @@ -63,6 +62,7 @@ common lang NumericUnderscores OverloadedLabels OverloadedStrings + PackageImports PartialTypeSignatures PatternGuards PolyKinds @@ -88,7 +88,7 @@ common deps build-depends: , aeson , ansi-terminal - , base >=4.14 && <5 + , base >=4.14 && <5 , base-compat , bytestring , cardano-prelude @@ -96,9 +96,9 @@ common deps , data-default , data-default-class , generics-sop + , liqwid-plutarch-extra , plutarch , plutarch-extra - , liqwid-plutarch-extra , plutarch-numeric , plutarch-safe-money , plutus-core @@ -108,11 +108,11 @@ common deps , prettyprinter , recursion-schemes , serialise + , tagged , template-haskell , text - , tagged + mixins: - common test-deps build-depends: diff --git a/agora/Agora/AuthorityToken.hs b/agora/Agora/AuthorityToken.hs index 8a08105..113b65f 100644 --- a/agora/Agora/AuthorityToken.hs +++ b/agora/Agora/AuthorityToken.hs @@ -24,8 +24,8 @@ import Plutarch.Api.V1 ( PTxInfo (..), PTxOut (..), ) -import Plutarch.Api.V1.AssocMap (PMap (PMap)) import Plutarch.Api.V1.AssetClass (passetClass, passetClassValueOf) +import Plutarch.Api.V1.AssocMap (PMap (PMap)) import "plutarch" Plutarch.Api.V1.Value (PValue (PValue)) import Plutarch.Builtin (pforgetData) import Plutus.V1.Ledger.Value (AssetClass (AssetClass)) diff --git a/agora/Agora/Governor.hs b/agora/Agora/Governor.hs index cdd71e3..0c5e5d7 100644 --- a/agora/Agora/Governor.hs +++ b/agora/Agora/Governor.hs @@ -48,18 +48,18 @@ import Agora.Utils (tclet) -------------------------------------------------------------------------------- +import Data.Tagged (Tagged (..)) import Plutarch.DataRepr ( DerivePConstantViaData (..), PDataFields, PIsDataReprInstances (PIsDataReprInstances), ) -import Plutarch.Lift (PConstantDecl, PUnsafeLiftDecl (..)) -import Data.Tagged (Tagged (..)) import Plutarch.Extra.Comonad (pextract) +import Plutarch.Extra.TermCont (pmatchC) +import Plutarch.Lift (PConstantDecl, PUnsafeLiftDecl (..)) +import Plutarch.SafeMoney (PDiscrete (..)) import Plutarch.TryFrom (PTryFrom (..)) import Plutarch.Unsafe (punsafeCoerce) -import Plutarch.SafeMoney (PDiscrete (..)) -import Plutarch.Extra.TermCont (pmatchC) -------------------------------------------------------------------------------- diff --git a/agora/Agora/Governor/Scripts.hs b/agora/Agora/Governor/Scripts.hs index 3b22079..9e3b891 100644 --- a/agora/Agora/Governor/Scripts.hs +++ b/agora/Agora/Governor/Scripts.hs @@ -114,19 +114,15 @@ import Plutarch.Api.V1.AssetClass ( passetClass, passetClassValueOf, ) +import Plutarch.Extra.Comonad (pextract) import Plutarch.Extra.Map ( pkeys, plookup, plookup', ) -import Plutarch.Extra.Comonad ( pextract) -import Plutarch.SafeMoney ( - PDiscrete, - pvalueDiscrete', - ) -import Plutarch.TryFrom () -import Plutarch.SafeMoney (PDiscrete (..)) import Plutarch.Extra.TermCont (pmatchC) +import Plutarch.SafeMoney (PDiscrete (..), pvalueDiscrete') +import Plutarch.TryFrom () -------------------------------------------------------------------------------- diff --git a/agora/Agora/Proposal.hs b/agora/Agora/Proposal.hs index ef39e39..e79e360 100644 --- a/agora/Agora/Proposal.hs +++ b/agora/Agora/Proposal.hs @@ -51,6 +51,7 @@ import Agora.SafeMoney (GTTag) import Agora.Utils (pkeysEqual, pmapMap, pnotNull) import Control.Applicative (Const) import Control.Arrow (first) +import Data.Tagged (Tagged) import Plutarch.DataRepr (DerivePConstantViaData (..), PDataFields, PIsDataReprInstances (..)) import Plutarch.Lift ( DerivePConstantViaNewtype (..), @@ -58,7 +59,6 @@ import Plutarch.Lift ( PUnsafeLiftDecl (..), ) import Plutarch.SafeMoney (PDiscrete) -import Data.Tagged (Tagged) import Plutarch.TryFrom (PTryFrom (PTryFromExcess, ptryFrom')) import Plutarch.Unsafe (punsafeCoerce) import Plutus.V1.Ledger.Api (DatumHash, PubKeyHash, ValidatorHash) diff --git a/agora/Agora/Proposal/Scripts.hs b/agora/Agora/Proposal/Scripts.hs index b04b8d9..95a8266 100644 --- a/agora/Agora/Proposal/Scripts.hs +++ b/agora/Agora/Proposal/Scripts.hs @@ -45,12 +45,11 @@ import Plutarch.Api.V1 ( PValidator, ) import Plutarch.Api.V1.AssetClass (passetClass, passetClassValueOf) -import Plutarch.Extra.Map (plookup) import Plutarch.Extra.Comonad (pextract) +import Plutarch.Extra.Map (plookup) +import Plutarch.Extra.TermCont (pmatchC) import Plutarch.SafeMoney (PDiscrete (..)) import Plutus.V1.Ledger.Value (AssetClass (AssetClass)) -import Plutarch.Extra.TermCont (pmatchC) - {- | Policy for Proposals. diff --git a/agora/Agora/SafeMoney.hs b/agora/Agora/SafeMoney.hs index a579f0d..2285aa8 100644 --- a/agora/Agora/SafeMoney.hs +++ b/agora/Agora/SafeMoney.hs @@ -18,7 +18,7 @@ module Agora.SafeMoney ( import Plutus.V1.Ledger.Value (AssetClass (AssetClass)) -import Data.Tagged ( Tagged(Tagged) ) +import Data.Tagged (Tagged (Tagged)) -------------------------------------------------------------------------------- -- Tags diff --git a/agora/Agora/Stake.hs b/agora/Agora/Stake.hs index 750f99a..1e2a389 100644 --- a/agora/Agora/Stake.hs +++ b/agora/Agora/Stake.hs @@ -66,8 +66,8 @@ import Agora.Utils ( tcmatch, ) import Control.Applicative (Const) +import Data.Tagged (Tagged (..)) import Plutarch.Api.V1.AssetClass (PAssetClass, passetClassValueOf) -import Data.Tagged (Tagged (..) ) import Plutarch.SafeMoney (PDiscrete) import Plutarch.TryFrom (PTryFrom (PTryFromExcess, ptryFrom')) diff --git a/agora/Agora/Stake/Scripts.hs b/agora/Agora/Stake/Scripts.hs index 1e27e18..7081ee2 100644 --- a/agora/Agora/Stake/Scripts.hs +++ b/agora/Agora/Stake/Scripts.hs @@ -27,6 +27,7 @@ import Agora.Utils ( tcmatch, tctryFrom, ) +import Data.Tagged (Tagged (..), untag) import Plutarch.Api.V1 ( PCredential (PPubKeyCredential, PScriptCredential), PMintingPolicy, @@ -39,8 +40,7 @@ import Plutarch.Api.V1 ( ) import Plutarch.Api.V1.AssetClass (passetClass, passetClassValueOf, pvalueOf) import Plutarch.Internal (punsafeCoerce) -import Plutarch.Numeric.Additive ( AdditiveMonoid(zero), AdditiveSemigroup((+)) ) -import Data.Tagged (Tagged (..), untag) +import Plutarch.Numeric.Additive (AdditiveMonoid (zero), AdditiveSemigroup ((+))) import Plutarch.SafeMoney ( pdiscreteValue', pvalueDiscrete', diff --git a/agora/Agora/Utils.hs b/agora/Agora/Utils.hs index 0f697ab..5a9b17b 100644 --- a/agora/Agora/Utils.hs +++ b/agora/Agora/Utils.hs @@ -96,14 +96,13 @@ import Plutarch.Api.V1 ( mintingPolicySymbol, mkMintingPolicy, ) -import Plutarch.Api.V1.AssocMap (PMap (PMap)) import Plutarch.Api.V1.AssetClass (PAssetClass, passetClassValueOf, pvalueOf) +import Plutarch.Api.V1.AssocMap (PMap (PMap)) import "plutarch" Plutarch.Api.V1.Value (PValue (PValue)) import Plutarch.Builtin (pforgetData, ppairDataBuiltin) +import Plutarch.Extra.Map (pkeys) import Plutarch.Reducible (Reducible (Reduce)) import Plutarch.TryFrom (PTryFrom (PTryFromExcess)) -import Plutarch.Extra.Map (pkeys) - -------------------------------------------------------------------------------- -- TermCont-based combinators. Some of these will live in plutarch eventually. diff --git a/flake.nix b/flake.nix index 553b271..38fc890 100644 --- a/flake.nix +++ b/flake.nix @@ -14,14 +14,14 @@ "plutarch/haskell-nix/nixpkgs-unstable"; inputs.plutarch.inputs.nixpkgs.follows = "plutarch/haskell-nix/nixpkgs-unstable"; - + inputs.liqwid-plutarch-extra.url = "git+ssh://git@github.com/Liqwid-Labs/liqwid-plutarch-extra?ref=main"; inputs.plutarch-numeric.url = "git+ssh://git@github.com/Liqwid-Labs/plutarch-numeric?ref=main"; inputs.plutarch-safe-money.url = "git+ssh://git@github.com/Liqwid-Labs/plutarch-safe-money?ref=main"; - + # Follows jhodgdev's forks of apropos and apropos-tx, as these # are not constrained to `base ^>= 4.14`. Once these are merged # to their respective master branches, we should change the @@ -139,7 +139,7 @@ ps.apropos-tx ps.apropos ps.apropos - + ]; }; };