Merge pull request #230 from Liqwid-Labs/seungheonoh/purslinker

Update types so that ply envlope can be used in Purescript
This commit is contained in:
SeungheonOh 2023-03-14 15:13:47 -05:00 committed by GitHub
commit 1e353cf8ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 163 additions and 106 deletions

View file

@ -13,21 +13,29 @@ import Agora.Bootstrap qualified as Bootstrap
import Agora.Linker (linker)
import Data.Aeson qualified as Aeson
import Data.Default (def)
import Plutarch (Config (Config), TracingMode (DoTracing))
import Plutarch (Config (Config), TracingMode (DoTracing, NoTracing))
import Ply (TypedScriptEnvelope)
import ScriptExport.Export (exportMain)
import ScriptExport.Types (
Builders,
insertBuilder,
insertScriptExportWithLinker,
insertStaticBuilder,
)
main :: IO ()
main = exportMain builders
rawScripts :: Config -> [TypedScriptEnvelope]
rawScripts conf =
either (error . show) id $ Bootstrap.agoraScripts' conf
builders :: Builders
builders =
mconcat
[ insertScriptExportWithLinker "agora" (Bootstrap.agoraScripts def) linker
[ insertStaticBuilder "raw" (rawScripts (Config NoTracing))
, insertStaticBuilder "rawDebug" (rawScripts (Config DoTracing))
, insertScriptExportWithLinker "agora" (Bootstrap.agoraScripts def) linker
, insertScriptExportWithLinker
"agoraDebug"
( Bootstrap.agoraScripts

View file

@ -221,7 +221,7 @@ mkPolicyScript ctx = mustCompile (go # pconstant ctx)
go = loudEval $
plam $ \sc ->
governorPolicy
# pconstant (view #gstOutRef governor)
# pdata (pconstant (view #gstOutRef governor))
# pforgetData (pconstantData ())
# sc

View file

@ -146,7 +146,7 @@ singleAuthorityTokenBurned gatCs inputs mint = unTermCont $ do
@since 0.1.0
-}
authorityTokenPolicy :: ClosedTerm (PTagged GovernorSTTag PAssetClassData :--> PMintingPolicy)
authorityTokenPolicy :: ClosedTerm (PAsData (PTagged GovernorSTTag PAssetClassData) :--> PMintingPolicy)
authorityTokenPolicy =
plam $ \gstAssetClass _redeemer ctx -> unTermCont $ do
ctxF <- pletFieldsC @'["txInfo", "purpose"] ctx
@ -176,7 +176,7 @@ authorityTokenPolicy =
passertPJust
# "GST should move"
#$ presolveGovernorRedeemer
# (ptoScottEncodingT # gstAssetClass)
# (ptoScottEncodingT # pfromData gstAssetClass)
# pfromData txInfoF.inputs
# txInfoF.redeemers
pguardC "Governor redeemr correct" $

View file

@ -4,7 +4,7 @@
Initialize a governance system
-}
module Agora.Bootstrap (agoraScripts, alwaysSucceedsPolicyRoledScript) where
module Agora.Bootstrap (agoraScripts, agoraScripts', alwaysSucceedsPolicyRoledScript) where
import Agora.AuthorityToken (authorityTokenPolicy)
import Agora.Effect.GovernorMutation (mutateGovernorValidator)
@ -53,6 +53,31 @@ agoraScripts conf =
(Text, TypedScriptEnvelope)
envelope d t = (d, either (error . unpack) id $ mkEnvelope conf d t)
agoraScripts' :: Config -> Either Text [TypedScriptEnvelope]
agoraScripts' conf =
sequenceA
[ envelope "Governor Policy" governorPolicy
, envelope "Governor Validator" governorValidator
, envelope "Stake Policy" stakePolicy
, envelope "Stake Validator" stakeValidator
, envelope "Proposal Policy" proposalPolicy
, envelope "Proposal Validator" proposalValidator
, envelope "Treasury Validator" treasuryValidator
, envelope "Authority Token Policy" authorityTokenPolicy
, envelope "NoOp Validator" noOpValidator
, envelope "Treasury Withdrawal Validator" treasuryWithdrawalValidator
, envelope "Mutate Governor Validator" mutateGovernorValidator
, envelope "Always Succeeds Policy" $ ((plam $ \_ _ -> popaque $ pcon PUnit) :: Term s PMintingPolicy)
]
where
envelope ::
forall (pt :: S -> Type).
TypedWriter pt =>
Text ->
ClosedTerm pt ->
Either Text TypedScriptEnvelope
envelope = mkEnvelope conf
{- | A minting policy that always succeeds.
NOTE(Emily, Jan 3rd 2023): Adding this in here because it's useful for testnet GT.

View file

@ -38,10 +38,11 @@ makeEffect ::
Term s (PAsData PTxInfo) ->
Term s POpaque
) ->
Term s (PTagged AuthorityTokenTag PCurrencySymbol) ->
Term s (PAsData (PTagged AuthorityTokenTag PCurrencySymbol)) ->
Term s PValidator
makeEffect f atSymbol =
makeEffect f atSymbol' =
plam $ \datum _redeemer ctx' -> unTermCont $ do
atSymbol <- pletC $ pfromData atSymbol'
ctx <- pletFieldsC @'["txInfo", "purpose"] ctx'
-- Convert input datum, PData, into desierable type

View file

@ -165,9 +165,9 @@ deriving anyclass instance PTryFrom PData (PAsData PMutateGovernorDatum)
-}
mutateGovernorValidator ::
ClosedTerm
( PScriptHash
:--> PTagged GovernorSTTag PCurrencySymbol
:--> PTagged AuthorityTokenTag PCurrencySymbol
( PAsData PScriptHash
:--> PAsData (PTagged GovernorSTTag PCurrencySymbol)
:--> PAsData (PTagged AuthorityTokenTag PCurrencySymbol)
:--> PValidator
)
mutateGovernorValidator =
@ -203,7 +203,7 @@ mutateGovernorValidator =
(#&&)
[ ptraceIfFalse "Governor UTxO should carry GST" $
ptaggedSymbolValueOf
# gstSymbol
# pfromData gstSymbol
# (pfield @"value" # inputF.resolved)
#== 1
, ptraceIfFalse "Can only modify the pinned governor" $
@ -214,7 +214,7 @@ mutateGovernorValidator =
#$ pscriptHashFromAddress
#$ pfield @"address"
# inputF.resolved
in inputScriptHash #== govValidatorHash
in inputScriptHash #== pfromData govValidatorHash
]
in isGovernorInput
)

View file

@ -40,7 +40,7 @@ instance PTryFrom PData (PAsData PNoOp)
@since 1.0.0
-}
noOpValidator :: ClosedTerm (PTagged AuthorityTokenTag PCurrencySymbol :--> PValidator)
noOpValidator :: ClosedTerm (PAsData (PTagged AuthorityTokenTag PCurrencySymbol) :--> PValidator)
noOpValidator = plam $
makeEffect $
\_ (_datum :: Term s (PAsData PNoOp)) _ _ -> popaque (pconstant ())

View file

@ -149,7 +149,7 @@ instance PTryFrom PData (PAsData PTreasuryWithdrawalDatum)
-}
treasuryWithdrawalValidator ::
forall (s :: S).
Term s (PTagged AuthorityTokenTag PCurrencySymbol :--> PValidator)
Term s (PAsData (PTagged AuthorityTokenTag PCurrencySymbol) :--> PValidator)
treasuryWithdrawalValidator = plam $
makeEffect @(PAsData PTreasuryWithdrawalDatum) $
\_cs (pfromData -> datum) effectInputRef txInfo -> unTermCont $ do

View file

@ -102,7 +102,7 @@ import "liqwid-plutarch-extra" Plutarch.Extra.TermCont (
@since 1.0.0
-}
governorPolicy :: ClosedTerm (PTxOutRef :--> PMintingPolicy)
governorPolicy :: ClosedTerm (PAsData PTxOutRef :--> PMintingPolicy)
governorPolicy =
plam $ \initialSpend _ ctx -> unTermCont $ do
PMinting ((pfield @"_0" #) -> gstSymbol) <-
@ -121,7 +121,7 @@ governorPolicy =
txInfo
pguardC "Referenced utxo should be spent" $
pisUTXOSpent # initialSpend # txInfoF.inputs
pisUTXOSpent # pfromData initialSpend # txInfoF.inputs
pguardC "Exactly one token should be minted" $
let vMap = pfromData $ pto txInfoF.mint
@ -258,15 +258,17 @@ governorPolicy =
governorValidator ::
-- | Lazy precompiled scripts.
ClosedTerm
( PScriptHash
:--> PTagged StakeSTTag PAssetClassData
:--> PTagged GovernorSTTag PCurrencySymbol
:--> PTagged ProposalSTTag PCurrencySymbol
:--> PTagged AuthorityTokenTag PCurrencySymbol
( PAsData PScriptHash
:--> PAsData (PTagged StakeSTTag PAssetClassData)
:--> PAsData (PTagged GovernorSTTag PCurrencySymbol)
:--> PAsData (PTagged ProposalSTTag PCurrencySymbol)
:--> PAsData (PTagged AuthorityTokenTag PCurrencySymbol)
:--> PValidator
)
governorValidator =
plam $ \proposalScriptHash sstClass gstSymbol pstSymbol atSymbol datum redeemer ctx -> unTermCont $ do
plam $ \proposalScriptHash sstClass gstSymbol pstSymbol' atSymbol' datum redeemer ctx -> unTermCont $ do
atSymbol <- pletC $ pfromData atSymbol'
pstSymbol <- pletC $ pfromData pstSymbol'
ctxF <- pletAllC ctx
txInfo <- pletC $ pfromData ctxF.txInfo
txInfoF <-
@ -315,7 +317,7 @@ governorValidator =
outputF.address
governorInputF.address
, ptraceIfFalse "Has governor ST" $
ptaggedSymbolValueOf # gstSymbol # outputF.value #== 1
ptaggedSymbolValueOf # pfromData gstSymbol # outputF.value #== 1
]
datum =
@ -341,7 +343,7 @@ governorValidator =
flip (pletFields @'["value", "datum", "address"]) $ \txOutF ->
let isProposalUTxO =
(pfromJust #$ pscriptHashFromAddress # pfromData txOutF.address)
#== proposalScriptHash
#== pfromData proposalScriptHash
#&& passetClassValueOf
# pstClass
# txOutF.value
@ -398,7 +400,7 @@ governorValidator =
# "Stake input should present"
#$ pfindJust
# ( presolveStakeInputDatum
# (ptoScottEncodingT # sstClass)
# (ptoScottEncodingT # pfromData sstClass)
# txInfoF.datums
)
# pfromData txInfoF.inputs

View file

@ -12,6 +12,7 @@ import Plutarch.Extra.AssetClass (AssetClass (AssetClass))
import Plutarch.Extra.ScriptContext (scriptHashToTokenName)
import PlutusLedgerApi.V2 (CurrencySymbol (CurrencySymbol), ScriptHash, TxOutRef, getScriptHash)
import Ply (
AsData (AsData),
ScriptRole (MintingPolicyRole, ValidatorRole),
(#),
)
@ -48,122 +49,122 @@ linker = do
govPol <-
fetchTS
@MintingPolicyRole
@'[TxOutRef]
@'[AsData TxOutRef]
"agora:governorPolicy"
govVal <-
fetchTS
@ValidatorRole
@'[ ScriptHash
, Tagged StakeSTTag AssetClass
, Tagged GovernorSTTag CurrencySymbol
, Tagged ProposalSTTag CurrencySymbol
, Tagged AuthorityTokenTag CurrencySymbol
@'[ AsData ScriptHash
, AsData (Tagged StakeSTTag AssetClass)
, AsData (Tagged GovernorSTTag CurrencySymbol)
, AsData (Tagged ProposalSTTag CurrencySymbol)
, AsData (Tagged AuthorityTokenTag CurrencySymbol)
]
"agora:governorValidator"
stkPol <-
fetchTS
@MintingPolicyRole
@'[Tagged GTTag AssetClass]
@'[AsData (Tagged GTTag AssetClass)]
"agora:stakePolicy"
stkVal <-
fetchTS
@ValidatorRole
@'[ Tagged StakeSTTag CurrencySymbol
, Tagged ProposalSTTag AssetClass
, Tagged GTTag AssetClass
@'[ AsData (Tagged StakeSTTag CurrencySymbol)
, AsData (Tagged ProposalSTTag AssetClass)
, AsData (Tagged GTTag AssetClass)
]
"agora:stakeValidator"
prpPol <-
fetchTS @MintingPolicyRole
@'[Tagged GovernorSTTag AssetClass]
@'[AsData (Tagged GovernorSTTag AssetClass)]
"agora:proposalPolicy"
prpVal <-
fetchTS
@ValidatorRole
@'[ Tagged StakeSTTag AssetClass
, Tagged GovernorSTTag CurrencySymbol
, Tagged ProposalSTTag CurrencySymbol
, Integer
@'[ AsData (Tagged StakeSTTag AssetClass)
, AsData (Tagged GovernorSTTag CurrencySymbol)
, AsData (Tagged ProposalSTTag CurrencySymbol)
, AsData Integer
]
"agora:proposalValidator"
treVal <-
fetchTS
@ValidatorRole
@'[Tagged AuthorityTokenTag CurrencySymbol]
@'[AsData (Tagged AuthorityTokenTag CurrencySymbol)]
"agora:treasuryValidator"
atkPol <-
fetchTS
@MintingPolicyRole
@'[Tagged GovernorSTTag AssetClass]
@'[AsData (Tagged GovernorSTTag AssetClass)]
"agora:authorityTokenPolicy"
noOpVal <-
fetchTS
@ValidatorRole
@'[Tagged AuthorityTokenTag CurrencySymbol]
@'[AsData (Tagged AuthorityTokenTag CurrencySymbol)]
"agora:noOpValidator"
treaWithdrawalVal <-
fetchTS
@ValidatorRole
@'[Tagged AuthorityTokenTag CurrencySymbol]
@'[AsData (Tagged AuthorityTokenTag CurrencySymbol)]
"agora:treasuryWithdrawalValidator"
mutateGovVal <-
fetchTS
@ValidatorRole
@'[ ScriptHash
, Tagged GovernorSTTag CurrencySymbol
, Tagged AuthorityTokenTag CurrencySymbol
@'[ AsData ScriptHash
, AsData (Tagged GovernorSTTag CurrencySymbol)
, AsData (Tagged AuthorityTokenTag CurrencySymbol)
]
"agora:mutateGovernorValidator"
governor <- getParam
let govPol' = govPol # governor.gstOutRef
let govPol' = govPol # AsData governor.gstOutRef
govVal' =
govVal
# propValHash
# Tagged sstAssetClass
# Tagged gstSymbol
# Tagged pstSymbol
# Tagged atSymbol
# AsData propValHash
# AsData (Tagged sstAssetClass)
# AsData (Tagged gstSymbol)
# AsData (Tagged pstSymbol)
# AsData (Tagged atSymbol)
gstSymbol = CurrencySymbol . getScriptHash . scriptHash $ toScript govPol'
gstAssetClass =
AssetClass gstSymbol ""
govValHash = scriptHash $ toScript govVal'
atPol' = atkPol # Tagged gstAssetClass
atPol' = atkPol # AsData (Tagged gstAssetClass)
atSymbol = CurrencySymbol . getScriptHash . scriptHash $ toScript atPol'
propPol' = prpPol # Tagged gstAssetClass
propPol' = prpPol # AsData (Tagged gstAssetClass)
propVal' =
prpVal
# Tagged sstAssetClass
# Tagged gstSymbol
# Tagged pstSymbol
# governor.maximumCosigners
# AsData (Tagged sstAssetClass)
# AsData (Tagged gstSymbol)
# AsData (Tagged pstSymbol)
# AsData governor.maximumCosigners
propValHash = scriptHash $ toScript propVal'
pstSymbol = CurrencySymbol . getScriptHash . scriptHash $ toScript propPol'
pstAssetClass = AssetClass pstSymbol ""
stakPol' = stkPol # governor.gtClassRef
stakPol' = stkPol # AsData governor.gtClassRef
stakVal' =
stkVal
# Tagged sstSymbol
# Tagged pstAssetClass
# governor.gtClassRef
# AsData (Tagged sstSymbol)
# AsData (Tagged pstAssetClass)
# AsData governor.gtClassRef
sstSymbol = CurrencySymbol . getScriptHash . scriptHash $ toScript stakPol'
stakValTokenName =
scriptHashToTokenName $ scriptHash $ toScript stakVal'
sstAssetClass = AssetClass sstSymbol stakValTokenName
treaVal' = treVal # Tagged atSymbol
treaVal' = treVal # AsData (Tagged atSymbol)
noOpVal' = noOpVal # Tagged atSymbol
treaWithdrawalVal' = treaWithdrawalVal # Tagged atSymbol
noOpVal' = noOpVal # AsData (Tagged atSymbol)
treaWithdrawalVal' = treaWithdrawalVal # AsData (Tagged atSymbol)
mutateGovVal' =
mutateGovVal
# govValHash
# Tagged gstSymbol
# Tagged atSymbol
# AsData govValHash
# AsData (Tagged gstSymbol)
# AsData (Tagged atSymbol)
return $
ScriptExport

View file

@ -113,7 +113,7 @@ import "plutarch-extra" Plutarch.Extra.Map (pupdate)
@since 1.0.0
-}
proposalPolicy :: ClosedTerm (PTagged GovernorSTTag PAssetClassData :--> PMintingPolicy)
proposalPolicy :: ClosedTerm (PAsData (PTagged GovernorSTTag PAssetClassData) :--> PMintingPolicy)
proposalPolicy =
plam $ \gstAssetClass _redeemer ctx -> unTermCont $ do
ctxF <- pletAllC ctx
@ -137,7 +137,7 @@ proposalPolicy =
passertPJust
# "GST should move"
#$ presolveGovernorRedeemer
# (ptoScottEncodingT # gstAssetClass)
# (ptoScottEncodingT # pfromData gstAssetClass)
# pfromData txInfoF.inputs
# txInfoF.redeemers
@ -224,10 +224,10 @@ instance DerivePlutusType PStakeInputsContext where
-}
proposalValidator ::
ClosedTerm
( PTagged StakeSTTag PAssetClassData
:--> PTagged GovernorSTTag PCurrencySymbol
:--> PTagged ProposalSTTag PCurrencySymbol
:--> PInteger
( PAsData (PTagged StakeSTTag PAssetClassData)
:--> PAsData (PTagged GovernorSTTag PCurrencySymbol)
:--> PAsData (PTagged ProposalSTTag PCurrencySymbol)
:--> PAsData PInteger
:--> PValidator
)
proposalValidator =
@ -289,7 +289,7 @@ proposalValidator =
outputF.address
proposalInputF.address
, ptraceIfFalse "Has proposal ST" $
ptaggedSymbolValueOf # pstSymbol # outputF.value #== 1
ptaggedSymbolValueOf # pfromData pstSymbol # outputF.value #== 1
]
handleProposalUTxO =
@ -335,7 +335,7 @@ proposalValidator =
resolveStakeInputDatum <-
pletC $
presolveStakeInputDatum
# (ptoScottEncodingT # sstClass)
# (ptoScottEncodingT # pfromData sstClass)
# txInfoF.datums
spendStakes' :: Term _ ((PStakeInputsContext :--> PUnit) :--> PUnit) <-
@ -450,7 +450,7 @@ proposalValidator =
# proposalInputDatumF.cosigners
pguardC "Less cosigners than maximum limit" $
plength # updatedSigs #<= maximumCosigners
plength # updatedSigs #<= pfromData maximumCosigners
pguardC "Meet minimum GT requirement" $
pfromData thresholdsF.cosign #<= stakeF.stakedAmount
@ -741,7 +741,7 @@ proposalValidator =
. (pfield @"resolved" #) ->
value
) ->
ptaggedSymbolValueOf # gstSymbol # value #== 1
ptaggedSymbolValueOf # pfromData gstSymbol # value #== 1
)
# pfromData txInfoF.inputs

View file

@ -22,37 +22,37 @@ import PlutusLedgerApi.V1.Value (AssetClass (AssetClass))
@since 0.1.0
-}
data GTTag
type GTTag = "GTTag"
{- | ADA.
@since 0.1.0
-}
data ADATag
type ADATag = "ADATag"
{- | Governor ST token.
@since 0.1.0
-}
data GovernorSTTag
type GovernorSTTag = "GovernorSTTag"
{- | Stake ST token.
@since 0.1.0
-}
data StakeSTTag
type StakeSTTag = "StakeSTTag"
{- | Proposal ST token.
@since 0.1.0
-}
data ProposalSTTag
type ProposalSTTag = "ProposalSTTag"
{- | Authority token.
@since 1.0.0
-}
data AuthorityTokenTag
type AuthorityTokenTag = "AuthorityTokenTag"
{- | Resolves ada tags.

View file

@ -138,7 +138,7 @@ import Prelude hiding (Num ((+)))
@since 1.0.0
-}
stakePolicy ::
ClosedTerm (PTagged GTTag PAssetClassData :--> PMintingPolicy)
ClosedTerm (PAsData (PTagged GTTag PAssetClassData) :--> PMintingPolicy)
stakePolicy =
plam $ \gtClass _redeemer ctx' -> unTermCont $ do
ctx <- pletFieldsC @'["txInfo", "purpose"] ctx'
@ -207,7 +207,7 @@ stakePolicy =
(#&&)
[ ptraceIfFalse "Stake ouput has expected amount of stake token" $
passetClassValueOfT
# (ptoScottEncodingT # gtClass)
# (ptoScottEncodingT # pfromData gtClass)
# outputF.value
#== pfromData datumF.stakedAmount
, ptraceIfFalse "Stake Owner should sign the transaction" $
@ -656,9 +656,9 @@ mkStakeValidator impl sstSymbol pstClass gtClass =
-}
stakeValidator ::
ClosedTerm
( PTagged StakeSTTag PCurrencySymbol
:--> PTagged ProposalSTTag PAssetClassData
:--> PTagged GTTag PAssetClassData
( PAsData (PTagged StakeSTTag PCurrencySymbol)
:--> PAsData (PTagged ProposalSTTag PAssetClassData)
:--> PAsData (PTagged GTTag PAssetClassData)
:--> PValidator
)
stakeValidator =
@ -673,6 +673,6 @@ stakeValidator =
, onClearDelegate = pclearDelegate
}
)
sstSymbol
(ptoScottEncodingT # pstClass)
(ptoScottEncodingT # gstClass)
(pfromData sstSymbol)
(ptoScottEncodingT # pfromData pstClass)
(ptoScottEncodingT # pfromData gstClass)

View file

@ -30,7 +30,7 @@ import "liqwid-plutarch-extra" Plutarch.Extra.TermCont (pguardC, pletFieldsC, pm
@since 1.0.0
-}
treasuryValidator ::
ClosedTerm (PTagged AuthorityTokenTag PCurrencySymbol :--> PValidator)
ClosedTerm (PAsData (PTagged AuthorityTokenTag PCurrencySymbol) :--> PValidator)
treasuryValidator = plam $ \atSymbol _ _ ctx' -> unTermCont $ do
-- plet required fields from script context.
ctx <- pletFieldsC @["txInfo", "purpose"] ctx'
@ -44,6 +44,6 @@ treasuryValidator = plam $ \atSymbol _ _ ctx' -> unTermCont $ do
mint = txInfo.mint
pguardC "A single authority token has been burned" $
singleAuthorityTokenBurned atSymbol txInfo.inputs mint
singleAuthorityTokenBurned (pfromData atSymbol) txInfo.inputs mint
pure . popaque $ pconstant ()

18
flake.lock generated
View file

@ -3598,11 +3598,11 @@
"ply": "ply"
},
"locked": {
"lastModified": 1674830336,
"narHash": "sha256-KIJH4kJzBIaDqV3N/f8Dolt//GBc4Cwam7+10HKGg18=",
"lastModified": 1678823448,
"narHash": "sha256-vdaA8lP0AlUIKLlWfwkLoqix3eMxvFP4cDWEeyoFHHM=",
"owner": "Liqwid-Labs",
"repo": "liqwid-libs",
"rev": "45f591ddfbf6342f958c4ead6dc6175965f8ce1d",
"rev": "050b2b6a3ee29dbba5bd43c38786b2947f45b2cb",
"type": "github"
},
"original": {
@ -6290,16 +6290,16 @@
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
"lastModified": 1672869303,
"narHash": "sha256-hX2nxIpyJWTqQnllc9bLIqQH3LXtLxof56TYkMPSOZ0=",
"owner": "mlabs-haskell",
"lastModified": 1677814602,
"narHash": "sha256-evpKJ5aWZGlr1Y5xV9chmG6D/Vx2OdAjzBdLtctXPXo=",
"owner": "liqwid-labs",
"repo": "ply",
"rev": "2cda3b44f87c659980bea2bc0b4a822d1e9eaef4",
"rev": "8e686d78cd5a498df577376a502b49efa3e06fd8",
"type": "github"
},
"original": {
"owner": "mlabs-haskell",
"ref": "master",
"owner": "liqwid-labs",
"ref": "seungheonoh/purs",
"repo": "ply",
"type": "github"
}

View file

@ -19,7 +19,8 @@
inputs.nixpkgs-latest.follows = "nixpkgs-latest";
};
liqwid-libs.url = "github:Liqwid-Labs/liqwid-libs";
liqwid-libs.url =
"github:Liqwid-Labs/liqwid-libs";
};
outputs = inputs@{ self, flake-parts, ... }:
@ -53,6 +54,25 @@
];
};
ci.required = [ "all_onchain" ];
packages.export =
pkgs.stdenv.mkDerivation {
name = "export";
src = ./.;
buildInput = [
self'.packages."agora:exe:agora-scripts"
];
buildPhase = ''
export PATH=$PATH:${self'.packages."agora:exe:agora-scripts"}/bin
agora-scripts file --builder raw
agora-scripts file --builder rawDebug
'';
installPhase = ''
NAME=${if self ? rev then self.shortRev else "dirty"}
mkdir $out
cp raw.json $out/agora-"$NAME".json
cp rawDebug.json $out/agora-debug-"$NAME".json
'';
};
};
flake.hydraJobs.x86_64-linux = (