From 61217324917b5c41d35ef5bdf59fb77ea3ac3489 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jann=20M=C3=BCller?= Date: Wed, 29 Jan 2025 20:01:37 +0100 Subject: [PATCH] Move compiled scripts to generated folder --- .github/workflows/ci-compiled-scripts.yaml | 4 +- ...0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json | 5 - ...268d4a7ecb51d5c44c096685dfb2cb881d7d3.json | 5 - ...164285b050c6a24ef10576b9fbf091a870b3f.json | 0 ...ac45c1ad59263e282fa00a7083620fb449413.json | 0 ...6d1fd415358a27ba829024ee0b90af5e32f14.json | 0 ...714bfa2d105df42a13283ca53f62692ec3f8d.json | 0 ...0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json | 0 ...268d4a7ecb51d5c44c096685dfb2cb881d7d3.json | 0 ...3544caecefef5242025f45c3fa5213d7662a9.json | 0 ...01b4fef9437a4d768700c313415fc2ad5ee09.json | 0 ...bad27450f7dcc81376ae6ebda8d25e942508e.json | 0 ...784066fa3c03684fee2bfac7b571654ae8f55.json | 0 ...a73d1f38a186655599c69c932e8acb2ae099a.json | 0 ...1a5266bba7dc685b786b1cc33551aa66867c9.json | 0 .../scripts/unapplied/binds}/alwaysFail.json | 0 .../unapplied/binds}/blacklistSpending.json | 0 .../binds}/directoryNodeMintingPolicy.json | 0 .../unapplied/binds}/directorySpending.json | 0 .../binds}/freezeAndSeizeTransfer.json | 0 .../unapplied/binds}/permissionedMinting.json | 0 .../binds}/permissionedTransfer.json | 0 .../binds}/programmableLogicBase.json | 0 .../binds}/programmableLogicGlobal.json | 0 .../binds}/programmableTokenMinting.json | 0 .../binds}/protocolParametersNFTMinting.json | 0 .../scripts/unapplied/prod}/alwaysFail.json | 0 .../unapplied/prod}/blacklistSpending.json | 0 .../prod}/directoryNodeMintingPolicy.json | 0 .../unapplied/prod}/directorySpending.json | 0 .../prod}/freezeAndSeizeTransfer.json | 0 .../unapplied/prod}/permissionedMinting.json | 0 .../unapplied/prod}/permissionedTransfer.json | 0 .../prod}/programmableLogicBase.json | 0 .../prod}/programmableLogicGlobal.json | 0 .../prod}/programmableTokenMinting.json | 0 .../prod}/protocolParametersNFTMinting.json | 0 .../unapplied/tracing}/alwaysFail.json | 0 .../unapplied/tracing}/blacklistSpending.json | 0 .../tracing}/directoryNodeMintingPolicy.json | 0 .../unapplied/tracing}/directorySpending.json | 0 .../tracing}/freezeAndSeizeTransfer.json | 0 .../tracing}/permissionedMinting.json | 0 .../tracing}/permissionedTransfer.json | 0 .../tracing}/programmableLogicBase.json | 0 .../tracing}/programmableLogicGlobal.json | 0 .../tracing}/programmableTokenMinting.json | 0 .../protocolParametersNFTMinting.json | 0 src/exe/export-smart-tokens/Main.hs | 150 +++++++++++------- src/wst-poc.cabal | 2 + 50 files changed, 95 insertions(+), 71 deletions(-) delete mode 100644 applied-prod/programmableLogicBase-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json delete mode 100644 applied-prod/programmableLogicGlobal-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json rename {applied-prod => generated/scripts/preview}/blacklistMinting-8ea903ae40af4e0cff4164285b050c6a24ef10576b9fbf091a870b3f.json (100%) rename {applied-prod => generated/scripts/preview}/blacklistSpending-9f6381bdf046fd671ebac45c1ad59263e282fa00a7083620fb449413.json (100%) rename {applied-prod => generated/scripts/preview}/directoryNodeMinting-f1f838a525637791ca06d1fd415358a27ba829024ee0b90af5e32f14.json (100%) rename {applied-prod => generated/scripts/preview}/directoryNodeSpending-9c0b7840bea475b3b20714bfa2d105df42a13283ca53f62692ec3f8d.json (100%) rename {applied-prod => generated/scripts/preview}/programmableLogicBaseSpending-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json (100%) rename {applied-prod => generated/scripts/preview}/programmableLogicGlobalStake-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json (100%) rename {applied-prod => generated/scripts/preview}/programmableTokenMinting-b34a184f1f2871aa4d33544caecefef5242025f45c3fa5213d7662a9.json (100%) rename {applied-prod => generated/scripts/preview}/protocolParametersNFTMinting-c348817600e8cd22ddf01b4fef9437a4d768700c313415fc2ad5ee09.json (100%) rename {applied-prod => generated/scripts/preview}/protocolParametersSpending-b8459bc5cc1dae2962abad27450f7dcc81376ae6ebda8d25e942508e.json (100%) rename {applied-prod => generated/scripts/preview}/transferLogicIssuerSpending-b427cc9d5b829bbf66a784066fa3c03684fee2bfac7b571654ae8f55.json (100%) rename {applied-prod => generated/scripts/preview}/transferLogicMinting-6714325b1663ff1e81aa73d1f38a186655599c69c932e8acb2ae099a.json (100%) rename {applied-prod => generated/scripts/preview}/transferLogicSpending-5b7d265e7d862937c6e1a5266bba7dc685b786b1cc33551aa66867c9.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/alwaysFail.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/blacklistSpending.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/directoryNodeMintingPolicy.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/directorySpending.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/freezeAndSeizeTransfer.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/permissionedMinting.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/permissionedTransfer.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/programmableLogicBase.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/programmableLogicGlobal.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/programmableTokenMinting.json (100%) rename {compiled-binds => generated/scripts/unapplied/binds}/protocolParametersNFTMinting.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/alwaysFail.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/blacklistSpending.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/directoryNodeMintingPolicy.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/directorySpending.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/freezeAndSeizeTransfer.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/permissionedMinting.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/permissionedTransfer.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/programmableLogicBase.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/programmableLogicGlobal.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/programmableTokenMinting.json (100%) rename {compiled-prod => generated/scripts/unapplied/prod}/protocolParametersNFTMinting.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/alwaysFail.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/blacklistSpending.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/directoryNodeMintingPolicy.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/directorySpending.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/freezeAndSeizeTransfer.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/permissionedMinting.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/permissionedTransfer.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/programmableLogicBase.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/programmableLogicGlobal.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/programmableTokenMinting.json (100%) rename {compiled-tracing => generated/scripts/unapplied/tracing}/protocolParametersNFTMinting.json (100%) diff --git a/.github/workflows/ci-compiled-scripts.yaml b/.github/workflows/ci-compiled-scripts.yaml index 59e86e9..2e31dea 100644 --- a/.github/workflows/ci-compiled-scripts.yaml +++ b/.github/workflows/ci-compiled-scripts.yaml @@ -44,6 +44,8 @@ jobs: - name: check compiled scripts are consistent # git diff --quiet implies --exit-code run: | - cabal run export-smart-tokens 08a8d0bb8717839931b0a594f7c28b0a3b7c78f6e9172e977e250eab7637d879.0 '"addr_test1qq986m3uel86pl674mkzneqtycyg7csrdgdxj6uf7v7kd857kquweuh5kmrj28zs8czrwkl692jm67vna2rf7xtafhpqk3hecm"' + cabal run export-smart-tokens ./generated/scripts/unapplied + cabal run export-smart-tokens ./generated/scripts/preview 08a8d0bb8717839931b0a594f7c28b0a3b7c78f6e9172e977e250eab7637d879.0 '"addr_test1qq986m3uel86pl674mkzneqtycyg7csrdgdxj6uf7v7kd857kquweuh5kmrj28zs8czrwkl692jm67vna2rf7xtafhpqk3hecm"' + cabal run export-smart-tokens ./generated/scripts/mainnet b1977c1eb33590ca1311384ab68cd36209832213ad4483feb8a1b7cb64828946.0 '"addr_test1qq986m3uel86pl674mkzneqtycyg7csrdgdxj6uf7v7kd857kquweuh5kmrj28zs8czrwkl692jm67vna2rf7xtafhpqk3hecm"' cabal run write-openapi-schema -- generated/openapi/schema.json git diff --quiet diff --git a/applied-prod/programmableLogicBase-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json b/applied-prod/programmableLogicBase-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json deleted file mode 100644 index ada584f..0000000 --- a/applied-prod/programmableLogicBase-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "PlutusScriptV3", - "description": "Programmable Logic Base", - "cborHex": "58af58ad01000032323232323232232533300453330043375e600a600e00200629444cc8c8c8c0088cc0080080048c0088cc008008004894ccd55cf8008b0a999803980198050008a5113002300900123375e600c002008600c0022930b1bab323007323007300730073007300730070013008001300630070014c0122d87a9f581c36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3ff005734aae755d12ba1230023754002aae781" -} diff --git a/applied-prod/programmableLogicGlobal-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json b/applied-prod/programmableLogicGlobal-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json deleted file mode 100644 index 2c25c4f..0000000 --- a/applied-prod/programmableLogicGlobal-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "PlutusScriptV3", - "description": "Programmable Logic Global", - "cborHex": "5907a259079f01000032323232323232323232323232323232323232323232323232323232323223232323232323232323253330223370e90020010991919191919299981419b87480080084c8c8c8c8c8c94ccc0b8cdc3a400800426464646464646464a66606c6604c6604c6604c6604c66e1cccc0cc8894ccc0dc004400854ccc0e4cdd780b19181f182000099181f182000099181f181f9820000981e80089980199b8000248008c0f80044cc00c008c0f8005200000e48008cdd7981d181e00180999baf33027375860740346eb4c0e8034cdd2a400066060607400a660606e98004cc0c0c0e8c0ec010cc0c0cdd2a400405e05e660546074607a6ea8c0e8c0ec018048c8ccc0dc005282513375e6e98008dd30008a4c2c646606644a66606c00220602a66607066ebcc0e8c0f000400c4c0f40044cc0c8c0f0004c008c0f4004008c0e401cdd5981c001181b801181b800981b99181b181b981c000998110049bad303500a30350013034001375860640022c6068004605c0026ea8c0bcc0c0004c0bcc0c0c8c0bcc0c0c0c4004cc06c030dd69817181780098170011bac302c00e13232533302a3301a3370e60586ea8c0b8c0bc04520043322330172330182337126eb4c0d4004cc88cccc07800920002333301f00248001d69bab0010063030002303000137566068002002646060666050444a66605800220042660066464a66606066ebcc0d0c0d80040344ccc095c00021bab30343035002100430330013034303200130330010230013758605c01c0022930b19999911111919998161111299981880108008991919299981b19b87480080084c8c8c8c94ccc0e8cdc3a4008004264646464a66607c6605c6605c66e4000800ccdc80018009981c80a9bab3042008133300f304300e304300d00c16375c608260840066eb8c100008dd7181e981f8051bac303e001163040002303a001375460766078002607660786460766078607a00260106eb4c0e80044c8c8c8c94ccc0e8cdc3a400800426464a666078660586605866060608060866ea8c100c104004040cdd79820001181f18200059981b8099bab3040006133300d304100c304100b33036304000b00a1630400013758607c0022c608000460740026ea8c0ecc0f0004c0ecc0f0c8c0ecc0f0c0f4004c020dd6981d000981e001181b0009baa30370030043034002027301f004302d00700b3758605a00400a002666444666050444a66605800220042660066464a66606066ebcc0d0c0d80040344c8c8c94ccc0cccdc3a40040042c2646464a66606c66e1d200200216132323253330393370e90000010a99981c99816981e800808899981738000d3756607a607c0162c2a6660726605a607a002020266605ce00034dd5981e981f0058b181f801181c8009baa303a001303c00230360013754606e002607200460660026ea8c0d0c0d4c0d80044010c0cc004c0d0c8c0ccc0d0c0d4004c0c8004c0cc00408c004dd61816181698168058021bac302c00e302e002302800137546052018664604444a66604a002204026604260066056002600460580024605260586ea8c09c004dd59814003981398140009bac3026001163028002302200137546460486046604c002646048604a604c002664603a44a6660400022c2a6660446006604c0022604c00226004604e002466036014646eacc094c098c09c004c090c094c098004004dd6181100199181198108009811000981080098100009810180f001180f000980f000a6011e581cc348817600e8cd22ddf01b4fef9437a4d768700c313415fc2ad5ee09002301322533301600114a22a660086006603800226004603a0024466602c00400200629400048888cc048894ccc054004401454ccc05ccdd7980c980d80080309802180f180d80089801180e00080091199809001000a50300c222533301233710900a000899801980200119b810014805054ccc048cdc424014002266006602e602e602e602e602e00466e04005200a13300500200123014301430143014301430143014301430143014001300a22253330103370e00290000980a001099801980a80119b81001480088c028894ccc0340045280a99980799baf301300100314a22600460280024446660084466600e00a004002004002444a666016004200226666460164444a6660200022660180060042646464a66602a66ebc0080044cc03ccdd80011ba63300b3756603800c6eacc07000cccc02001c014c06801054ccc054cdc81bae002375c00226601e00c66601000e00a00826601e00666601000e60340086601e00c00a602c004602a008602c002444a66601c004200226660066028004602a00400260220046024004002444a666014004200226666460144444a66601e0022660160060042646464a66602866ebc0080044cc038cdd80011ba83300b375a603600c6eb4c06c00cccc02001c014c06401054ccc050cdc81bae002375c00226601c00c66601000e00a00826601c00666601000e60320086601c00c00a602a0046028008602a002444a66601a00420022666006602600460280040026020004602200400297adef6c604bd702ba0223300323375e60140020060024600444a66600a002294054cc018c00cc02c0044c008c0300048c8c0088cc0080080048c0088cc00800800555cf919801000801ab9a14a2aae748c00cc00c0055d0aba2230023754002aae781" -} diff --git a/applied-prod/blacklistMinting-8ea903ae40af4e0cff4164285b050c6a24ef10576b9fbf091a870b3f.json b/generated/scripts/preview/blacklistMinting-8ea903ae40af4e0cff4164285b050c6a24ef10576b9fbf091a870b3f.json similarity index 100% rename from applied-prod/blacklistMinting-8ea903ae40af4e0cff4164285b050c6a24ef10576b9fbf091a870b3f.json rename to generated/scripts/preview/blacklistMinting-8ea903ae40af4e0cff4164285b050c6a24ef10576b9fbf091a870b3f.json diff --git a/applied-prod/blacklistSpending-9f6381bdf046fd671ebac45c1ad59263e282fa00a7083620fb449413.json b/generated/scripts/preview/blacklistSpending-9f6381bdf046fd671ebac45c1ad59263e282fa00a7083620fb449413.json similarity index 100% rename from applied-prod/blacklistSpending-9f6381bdf046fd671ebac45c1ad59263e282fa00a7083620fb449413.json rename to generated/scripts/preview/blacklistSpending-9f6381bdf046fd671ebac45c1ad59263e282fa00a7083620fb449413.json diff --git a/applied-prod/directoryNodeMinting-f1f838a525637791ca06d1fd415358a27ba829024ee0b90af5e32f14.json b/generated/scripts/preview/directoryNodeMinting-f1f838a525637791ca06d1fd415358a27ba829024ee0b90af5e32f14.json similarity index 100% rename from applied-prod/directoryNodeMinting-f1f838a525637791ca06d1fd415358a27ba829024ee0b90af5e32f14.json rename to generated/scripts/preview/directoryNodeMinting-f1f838a525637791ca06d1fd415358a27ba829024ee0b90af5e32f14.json diff --git a/applied-prod/directoryNodeSpending-9c0b7840bea475b3b20714bfa2d105df42a13283ca53f62692ec3f8d.json b/generated/scripts/preview/directoryNodeSpending-9c0b7840bea475b3b20714bfa2d105df42a13283ca53f62692ec3f8d.json similarity index 100% rename from applied-prod/directoryNodeSpending-9c0b7840bea475b3b20714bfa2d105df42a13283ca53f62692ec3f8d.json rename to generated/scripts/preview/directoryNodeSpending-9c0b7840bea475b3b20714bfa2d105df42a13283ca53f62692ec3f8d.json diff --git a/applied-prod/programmableLogicBaseSpending-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json b/generated/scripts/preview/programmableLogicBaseSpending-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json similarity index 100% rename from applied-prod/programmableLogicBaseSpending-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json rename to generated/scripts/preview/programmableLogicBaseSpending-fca77bcce1e5e73c97a0bfa8c90f7cd2faff6fd6ed5b6fec1c04eefa.json diff --git a/applied-prod/programmableLogicGlobalStake-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json b/generated/scripts/preview/programmableLogicGlobalStake-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json similarity index 100% rename from applied-prod/programmableLogicGlobalStake-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json rename to generated/scripts/preview/programmableLogicGlobalStake-36775ef231d797f8234268d4a7ecb51d5c44c096685dfb2cb881d7d3.json diff --git a/applied-prod/programmableTokenMinting-b34a184f1f2871aa4d33544caecefef5242025f45c3fa5213d7662a9.json b/generated/scripts/preview/programmableTokenMinting-b34a184f1f2871aa4d33544caecefef5242025f45c3fa5213d7662a9.json similarity index 100% rename from applied-prod/programmableTokenMinting-b34a184f1f2871aa4d33544caecefef5242025f45c3fa5213d7662a9.json rename to generated/scripts/preview/programmableTokenMinting-b34a184f1f2871aa4d33544caecefef5242025f45c3fa5213d7662a9.json diff --git a/applied-prod/protocolParametersNFTMinting-c348817600e8cd22ddf01b4fef9437a4d768700c313415fc2ad5ee09.json b/generated/scripts/preview/protocolParametersNFTMinting-c348817600e8cd22ddf01b4fef9437a4d768700c313415fc2ad5ee09.json similarity index 100% rename from applied-prod/protocolParametersNFTMinting-c348817600e8cd22ddf01b4fef9437a4d768700c313415fc2ad5ee09.json rename to generated/scripts/preview/protocolParametersNFTMinting-c348817600e8cd22ddf01b4fef9437a4d768700c313415fc2ad5ee09.json diff --git a/applied-prod/protocolParametersSpending-b8459bc5cc1dae2962abad27450f7dcc81376ae6ebda8d25e942508e.json b/generated/scripts/preview/protocolParametersSpending-b8459bc5cc1dae2962abad27450f7dcc81376ae6ebda8d25e942508e.json similarity index 100% rename from applied-prod/protocolParametersSpending-b8459bc5cc1dae2962abad27450f7dcc81376ae6ebda8d25e942508e.json rename to generated/scripts/preview/protocolParametersSpending-b8459bc5cc1dae2962abad27450f7dcc81376ae6ebda8d25e942508e.json diff --git a/applied-prod/transferLogicIssuerSpending-b427cc9d5b829bbf66a784066fa3c03684fee2bfac7b571654ae8f55.json b/generated/scripts/preview/transferLogicIssuerSpending-b427cc9d5b829bbf66a784066fa3c03684fee2bfac7b571654ae8f55.json similarity index 100% rename from applied-prod/transferLogicIssuerSpending-b427cc9d5b829bbf66a784066fa3c03684fee2bfac7b571654ae8f55.json rename to generated/scripts/preview/transferLogicIssuerSpending-b427cc9d5b829bbf66a784066fa3c03684fee2bfac7b571654ae8f55.json diff --git a/applied-prod/transferLogicMinting-6714325b1663ff1e81aa73d1f38a186655599c69c932e8acb2ae099a.json b/generated/scripts/preview/transferLogicMinting-6714325b1663ff1e81aa73d1f38a186655599c69c932e8acb2ae099a.json similarity index 100% rename from applied-prod/transferLogicMinting-6714325b1663ff1e81aa73d1f38a186655599c69c932e8acb2ae099a.json rename to generated/scripts/preview/transferLogicMinting-6714325b1663ff1e81aa73d1f38a186655599c69c932e8acb2ae099a.json diff --git a/applied-prod/transferLogicSpending-5b7d265e7d862937c6e1a5266bba7dc685b786b1cc33551aa66867c9.json b/generated/scripts/preview/transferLogicSpending-5b7d265e7d862937c6e1a5266bba7dc685b786b1cc33551aa66867c9.json similarity index 100% rename from applied-prod/transferLogicSpending-5b7d265e7d862937c6e1a5266bba7dc685b786b1cc33551aa66867c9.json rename to generated/scripts/preview/transferLogicSpending-5b7d265e7d862937c6e1a5266bba7dc685b786b1cc33551aa66867c9.json diff --git a/compiled-binds/alwaysFail.json b/generated/scripts/unapplied/binds/alwaysFail.json similarity index 100% rename from compiled-binds/alwaysFail.json rename to generated/scripts/unapplied/binds/alwaysFail.json diff --git a/compiled-binds/blacklistSpending.json b/generated/scripts/unapplied/binds/blacklistSpending.json similarity index 100% rename from compiled-binds/blacklistSpending.json rename to generated/scripts/unapplied/binds/blacklistSpending.json diff --git a/compiled-binds/directoryNodeMintingPolicy.json b/generated/scripts/unapplied/binds/directoryNodeMintingPolicy.json similarity index 100% rename from compiled-binds/directoryNodeMintingPolicy.json rename to generated/scripts/unapplied/binds/directoryNodeMintingPolicy.json diff --git a/compiled-binds/directorySpending.json b/generated/scripts/unapplied/binds/directorySpending.json similarity index 100% rename from compiled-binds/directorySpending.json rename to generated/scripts/unapplied/binds/directorySpending.json diff --git a/compiled-binds/freezeAndSeizeTransfer.json b/generated/scripts/unapplied/binds/freezeAndSeizeTransfer.json similarity index 100% rename from compiled-binds/freezeAndSeizeTransfer.json rename to generated/scripts/unapplied/binds/freezeAndSeizeTransfer.json diff --git a/compiled-binds/permissionedMinting.json b/generated/scripts/unapplied/binds/permissionedMinting.json similarity index 100% rename from compiled-binds/permissionedMinting.json rename to generated/scripts/unapplied/binds/permissionedMinting.json diff --git a/compiled-binds/permissionedTransfer.json b/generated/scripts/unapplied/binds/permissionedTransfer.json similarity index 100% rename from compiled-binds/permissionedTransfer.json rename to generated/scripts/unapplied/binds/permissionedTransfer.json diff --git a/compiled-binds/programmableLogicBase.json b/generated/scripts/unapplied/binds/programmableLogicBase.json similarity index 100% rename from compiled-binds/programmableLogicBase.json rename to generated/scripts/unapplied/binds/programmableLogicBase.json diff --git a/compiled-binds/programmableLogicGlobal.json b/generated/scripts/unapplied/binds/programmableLogicGlobal.json similarity index 100% rename from compiled-binds/programmableLogicGlobal.json rename to generated/scripts/unapplied/binds/programmableLogicGlobal.json diff --git a/compiled-binds/programmableTokenMinting.json b/generated/scripts/unapplied/binds/programmableTokenMinting.json similarity index 100% rename from compiled-binds/programmableTokenMinting.json rename to generated/scripts/unapplied/binds/programmableTokenMinting.json diff --git a/compiled-binds/protocolParametersNFTMinting.json b/generated/scripts/unapplied/binds/protocolParametersNFTMinting.json similarity index 100% rename from compiled-binds/protocolParametersNFTMinting.json rename to generated/scripts/unapplied/binds/protocolParametersNFTMinting.json diff --git a/compiled-prod/alwaysFail.json b/generated/scripts/unapplied/prod/alwaysFail.json similarity index 100% rename from compiled-prod/alwaysFail.json rename to generated/scripts/unapplied/prod/alwaysFail.json diff --git a/compiled-prod/blacklistSpending.json b/generated/scripts/unapplied/prod/blacklistSpending.json similarity index 100% rename from compiled-prod/blacklistSpending.json rename to generated/scripts/unapplied/prod/blacklistSpending.json diff --git a/compiled-prod/directoryNodeMintingPolicy.json b/generated/scripts/unapplied/prod/directoryNodeMintingPolicy.json similarity index 100% rename from compiled-prod/directoryNodeMintingPolicy.json rename to generated/scripts/unapplied/prod/directoryNodeMintingPolicy.json diff --git a/compiled-prod/directorySpending.json b/generated/scripts/unapplied/prod/directorySpending.json similarity index 100% rename from compiled-prod/directorySpending.json rename to generated/scripts/unapplied/prod/directorySpending.json diff --git a/compiled-prod/freezeAndSeizeTransfer.json b/generated/scripts/unapplied/prod/freezeAndSeizeTransfer.json similarity index 100% rename from compiled-prod/freezeAndSeizeTransfer.json rename to generated/scripts/unapplied/prod/freezeAndSeizeTransfer.json diff --git a/compiled-prod/permissionedMinting.json b/generated/scripts/unapplied/prod/permissionedMinting.json similarity index 100% rename from compiled-prod/permissionedMinting.json rename to generated/scripts/unapplied/prod/permissionedMinting.json diff --git a/compiled-prod/permissionedTransfer.json b/generated/scripts/unapplied/prod/permissionedTransfer.json similarity index 100% rename from compiled-prod/permissionedTransfer.json rename to generated/scripts/unapplied/prod/permissionedTransfer.json diff --git a/compiled-prod/programmableLogicBase.json b/generated/scripts/unapplied/prod/programmableLogicBase.json similarity index 100% rename from compiled-prod/programmableLogicBase.json rename to generated/scripts/unapplied/prod/programmableLogicBase.json diff --git a/compiled-prod/programmableLogicGlobal.json b/generated/scripts/unapplied/prod/programmableLogicGlobal.json similarity index 100% rename from compiled-prod/programmableLogicGlobal.json rename to generated/scripts/unapplied/prod/programmableLogicGlobal.json diff --git a/compiled-prod/programmableTokenMinting.json b/generated/scripts/unapplied/prod/programmableTokenMinting.json similarity index 100% rename from compiled-prod/programmableTokenMinting.json rename to generated/scripts/unapplied/prod/programmableTokenMinting.json diff --git a/compiled-prod/protocolParametersNFTMinting.json b/generated/scripts/unapplied/prod/protocolParametersNFTMinting.json similarity index 100% rename from compiled-prod/protocolParametersNFTMinting.json rename to generated/scripts/unapplied/prod/protocolParametersNFTMinting.json diff --git a/compiled-tracing/alwaysFail.json b/generated/scripts/unapplied/tracing/alwaysFail.json similarity index 100% rename from compiled-tracing/alwaysFail.json rename to generated/scripts/unapplied/tracing/alwaysFail.json diff --git a/compiled-tracing/blacklistSpending.json b/generated/scripts/unapplied/tracing/blacklistSpending.json similarity index 100% rename from compiled-tracing/blacklistSpending.json rename to generated/scripts/unapplied/tracing/blacklistSpending.json diff --git a/compiled-tracing/directoryNodeMintingPolicy.json b/generated/scripts/unapplied/tracing/directoryNodeMintingPolicy.json similarity index 100% rename from compiled-tracing/directoryNodeMintingPolicy.json rename to generated/scripts/unapplied/tracing/directoryNodeMintingPolicy.json diff --git a/compiled-tracing/directorySpending.json b/generated/scripts/unapplied/tracing/directorySpending.json similarity index 100% rename from compiled-tracing/directorySpending.json rename to generated/scripts/unapplied/tracing/directorySpending.json diff --git a/compiled-tracing/freezeAndSeizeTransfer.json b/generated/scripts/unapplied/tracing/freezeAndSeizeTransfer.json similarity index 100% rename from compiled-tracing/freezeAndSeizeTransfer.json rename to generated/scripts/unapplied/tracing/freezeAndSeizeTransfer.json diff --git a/compiled-tracing/permissionedMinting.json b/generated/scripts/unapplied/tracing/permissionedMinting.json similarity index 100% rename from compiled-tracing/permissionedMinting.json rename to generated/scripts/unapplied/tracing/permissionedMinting.json diff --git a/compiled-tracing/permissionedTransfer.json b/generated/scripts/unapplied/tracing/permissionedTransfer.json similarity index 100% rename from compiled-tracing/permissionedTransfer.json rename to generated/scripts/unapplied/tracing/permissionedTransfer.json diff --git a/compiled-tracing/programmableLogicBase.json b/generated/scripts/unapplied/tracing/programmableLogicBase.json similarity index 100% rename from compiled-tracing/programmableLogicBase.json rename to generated/scripts/unapplied/tracing/programmableLogicBase.json diff --git a/compiled-tracing/programmableLogicGlobal.json b/generated/scripts/unapplied/tracing/programmableLogicGlobal.json similarity index 100% rename from compiled-tracing/programmableLogicGlobal.json rename to generated/scripts/unapplied/tracing/programmableLogicGlobal.json diff --git a/compiled-tracing/programmableTokenMinting.json b/generated/scripts/unapplied/tracing/programmableTokenMinting.json similarity index 100% rename from compiled-tracing/programmableTokenMinting.json rename to generated/scripts/unapplied/tracing/programmableTokenMinting.json diff --git a/compiled-tracing/protocolParametersNFTMinting.json b/generated/scripts/unapplied/tracing/protocolParametersNFTMinting.json similarity index 100% rename from compiled-tracing/protocolParametersNFTMinting.json rename to generated/scripts/unapplied/tracing/protocolParametersNFTMinting.json diff --git a/src/exe/export-smart-tokens/Main.hs b/src/exe/export-smart-tokens/Main.hs index 17a835a..8963ee9 100644 --- a/src/exe/export-smart-tokens/Main.hs +++ b/src/exe/export-smart-tokens/Main.hs @@ -14,13 +14,15 @@ import Data.Bifunctor (first) import Data.ByteString.Base16 qualified as Base16 import Data.ByteString.Lazy qualified as LBS import Data.ByteString.Lazy.Char8 qualified as LBS8 +import Data.Foldable (traverse_) import Data.String (IsString (..)) import Data.Text (Text, pack) import Data.Text qualified as Text import Data.Text.Encoding qualified as Text import Options.Applicative (Parser, argument, customExecParser, disambiguate, eitherReader, help, helper, idm, info, metavar, - prefs, showHelpOnEmpty, showHelpOnError) + optional, prefs, showHelpOnEmpty, showHelpOnError, + strArgument) import Options.Applicative.Builder (ReadM) import Plutarch (Config (..), LogLevel (..), TracingMode (..), compile) import Plutarch.Evaluate (applyArguments, evalScript) @@ -39,6 +41,8 @@ import SmartTokens.Core.Scripts (ScriptTarget (Production)) import SmartTokens.LinkedList.MintDirectory (mkDirectoryNodeMP) import SmartTokens.LinkedList.SpendBlacklist (pmkBlacklistSpending) import SmartTokens.LinkedList.SpendDirectory (pmkDirectorySpending) +import System.Directory (createDirectoryIfMissing) +import System.FilePath (()) import Text.Read (readMaybe) import Wst.Offchain.Env (BlacklistTransferLogicScriptRoot (..), DirectoryEnv (..), @@ -92,14 +96,15 @@ runMain = (info (helper <*> parseExportCommand) idm) >>= runExportCommand -runExportCommand :: ExportCommand -> IO () -runExportCommand ExportCommand{ecTxIn, ecIssuerAddress=SerialiseAddress issuerAddr} = do +writeAppliedScripts :: FilePath -> AppliedScriptArgs -> IO () +writeAppliedScripts baseFolder AppliedScriptArgs{asaTxIn, asaIssuerAddress=SerialiseAddress issuerAddr} = do let opkh = case issuerAddr of (C.ShelleyAddress _ntw (C.fromShelleyPaymentCredential -> C.PaymentCredentialByKey pmt) _stakeRef) -> pmt _ -> error "Expected public key address" -- FIXME: proper error - dirRoot = DirectoryScriptRoot ecTxIn Production + dirRoot = DirectoryScriptRoot asaTxIn Production blacklistTransferRoot = BlacklistTransferLogicScriptRoot Production (mkDirectoryEnv dirRoot) opkh - + putStrLn "Writing applied Plutus scripts to files" + createDirectoryIfMissing True baseFolder withEnv $ withDirectoryFor dirRoot $ do withTransferFor blacklistTransferRoot $ do @@ -119,20 +124,24 @@ runExportCommand ExportCommand{ecTxIn, ecIssuerAddress=SerialiseAddress issuerAd , dsProgrammableLogicGlobalScript } <- asks directoryEnv let programmableMinting = programmableTokenMintingScript dirEnv transferEnv - writeAppliedScript "./applied-prod/protocolParametersNFTMinting" "Protocol Parameters NFT" dsProtocolParamsMintingScript - writeAppliedScript "./applied-prod/protocolParametersSpending" "Protocol Parameters Spending" dsProtocolParamsSpendingScript - writeAppliedScript "./applied-prod/programmableLogicBaseSpending" "Programmable Logic Base" dsProgrammableLogicBaseScript - writeAppliedScript "./applied-prod/programmableLogicGlobalStake" "Programmable Logic Global" dsProgrammableLogicGlobalScript - writeAppliedScript "./applied-prod/directoryNodeMinting" "Directory Node Minting Policy" dsDirectoryMintingScript - writeAppliedScript "./applied-prod/directoryNodeSpending" "Directory Spending" dsDirectorySpendingScript - writeAppliedScript "./applied-prod/blacklistSpending" "Blacklist Spending" tleBlacklistSpendingScript - writeAppliedScript "./applied-prod/blacklistMinting" "Blacklist Minting" tleBlacklistMintingScript - writeAppliedScript "./applied-prod/transferLogicMinting" "Transfer Logic Minting" tleMintingScript - writeAppliedScript "./applied-prod/transferLogicSpending" "Transfer Logic Spending" tleTransferScript - writeAppliedScript "./applied-prod/transferLogicIssuerSpending" "Transfer Logic Issuer Spending" tleIssuerScript - writeAppliedScript "./applied-prod/programmableTokenMinting" "Programmable Token Minting" programmableMinting - - exportUnapplied + writeAppliedScript (baseFolder "protocolParametersNFTMinting") "Protocol Parameters NFT" dsProtocolParamsMintingScript + writeAppliedScript (baseFolder "protocolParametersSpending") "Protocol Parameters Spending" dsProtocolParamsSpendingScript + writeAppliedScript (baseFolder "programmableLogicBaseSpending") "Programmable Logic Base" dsProgrammableLogicBaseScript + writeAppliedScript (baseFolder "programmableLogicGlobalStake") "Programmable Logic Global" dsProgrammableLogicGlobalScript + writeAppliedScript (baseFolder "directoryNodeMinting") "Directory Node Minting Policy" dsDirectoryMintingScript + writeAppliedScript (baseFolder "directoryNodeSpending") "Directory Spending" dsDirectorySpendingScript + writeAppliedScript (baseFolder "blacklistSpending") "Blacklist Spending" tleBlacklistSpendingScript + writeAppliedScript (baseFolder "blacklistMinting") "Blacklist Minting" tleBlacklistMintingScript + writeAppliedScript (baseFolder "transferLogicMinting") "Transfer Logic Minting" tleMintingScript + writeAppliedScript (baseFolder "transferLogicSpending") "Transfer Logic Spending" tleTransferScript + writeAppliedScript (baseFolder "transferLogicIssuerSpending") "Transfer Logic Issuer Spending" tleIssuerScript + writeAppliedScript (baseFolder "programmableTokenMinting") "Programmable Token Minting" programmableMinting + + +runExportCommand :: ExportCommand -> IO () +runExportCommand ExportCommand{exBaseFolder, exAppliedScript} = case exAppliedScript of + Nothing -> exportUnapplied exBaseFolder + Just args -> writeAppliedScripts exBaseFolder args writeAppliedScript :: forall m lang. (MonadIO m, C.IsPlutusScriptLanguage lang) => FilePath -> C.TextEnvelopeDescr -> C.PlutusScript lang -> m () writeAppliedScript path desc script = liftIO $ do @@ -143,52 +152,73 @@ writeAppliedScript path desc script = liftIO $ do C.writeFileTextEnvelope (C.File path') (Just desc) script >>= either (error . show) pure -exportUnapplied :: IO () -exportUnapplied = do - putStrLn "Writing Plutus Scripts to files" - writePlutusScriptTraceBind "Programmable Logic Base" "./compiled-binds/programmableLogicBase.json" mkProgrammableLogicBase - writePlutusScriptTraceBind "Programmable Logic Global" "./compiled-binds/programmableLogicGlobal.json" mkProgrammableLogicGlobal - writePlutusScriptTraceBind "Issuance" "./compiled-binds/programmableTokenMinting.json" mkProgrammableLogicMinting - writePlutusScriptTraceBind "Protocol Parameters NFT" "./compiled-binds/protocolParametersNFTMinting.json" mkProtocolParametersMinting - writePlutusScriptTraceBind "Always Fail" "./compiled-binds/alwaysFail.json" alwaysFailScript - writePlutusScriptTraceBind "Permissioned Minting" "./compiled-binds/permissionedMinting.json" mkPermissionedMinting - writePlutusScriptTraceBind "Permissioned Transfer" "./compiled-binds/permissionedTransfer.json" mkPermissionedTransfer - writePlutusScriptTraceBind "Freeze and Seize Transfer" "./compiled-binds/freezeAndSeizeTransfer.json" mkFreezeAndSeizeTransfer - writePlutusScriptTraceBind "Directory Node Minting Policy" "./compiled-binds/directoryNodeMintingPolicy.json" mkDirectoryNodeMP - writePlutusScriptTraceBind "Directory Spending" "./compiled-binds/directorySpending.json" pmkDirectorySpending - writePlutusScriptTraceBind "Blacklist Spending" "./compiled-binds/blacklistSpending.json" pmkBlacklistSpending - - writePlutusScriptTrace "Programmable Logic Base" "./compiled-tracing/programmableLogicBase.json" mkProgrammableLogicBase - writePlutusScriptTrace "Programmable Logic Global" "./compiled-tracing/programmableLogicGlobal.json" mkProgrammableLogicGlobal - writePlutusScriptTrace "Issuance" "./compiled-tracing/programmableTokenMinting.json" mkProgrammableLogicMinting - writePlutusScriptTrace "Protocol Parameters NFT" "./compiled-tracing/protocolParametersNFTMinting.json" mkProtocolParametersMinting - writePlutusScriptTrace "Always Fail" "./compiled-tracing/alwaysFail.json" alwaysFailScript - writePlutusScriptTrace "Permissioned Minting" "./compiled-tracing/permissionedMinting.json" mkPermissionedMinting - writePlutusScriptTrace "Permissioned Transfer" "./compiled-tracing/permissionedTransfer.json" mkPermissionedTransfer - writePlutusScriptTrace "Freeze and Seize Transfer" "./compiled-tracing/freezeAndSeizeTransfer.json" mkFreezeAndSeizeTransfer - writePlutusScriptTrace "Directory Node Minting Policy" "./compiled-tracing/directoryNodeMintingPolicy.json" mkDirectoryNodeMP - writePlutusScriptTrace "Directory Spending" "./compiled-tracing/directorySpending.json" pmkDirectorySpending - writePlutusScriptTrace "Blacklist Spending" "./compiled-tracing/blacklistSpending.json" pmkBlacklistSpending - - writePlutusScriptNoTrace "Programmable Logic Base" "./compiled-prod/programmableLogicBase.json" mkProgrammableLogicBase - writePlutusScriptNoTrace "Programmable Logic Global" "./compiled-prod/programmableLogicGlobal.json" mkProgrammableLogicGlobal - writePlutusScriptNoTrace "Issuance" "./compiled-prod/programmableTokenMinting.json" mkProgrammableLogicMinting - writePlutusScriptNoTrace "Protocol Parameters NFT" "./compiled-prod/protocolParametersNFTMinting.json" mkProtocolParametersMinting - writePlutusScriptNoTrace "Always Fail" "./compiled-prod/alwaysFail.json" alwaysFailScript - writePlutusScriptNoTrace "Permissioned Minting" "./compiled-prod/permissionedMinting.json" mkPermissionedMinting - writePlutusScriptNoTrace "Permissioned Transfer" "./compiled-prod/permissionedTransfer.json" mkPermissionedTransfer - writePlutusScriptNoTrace "Freeze and Seize Transfer" "./compiled-prod/freezeAndSeizeTransfer.json" mkFreezeAndSeizeTransfer - writePlutusScriptNoTrace "Directory Node Minting Policy" "./compiled-prod/directoryNodeMintingPolicy.json" mkDirectoryNodeMP - writePlutusScriptNoTrace "Directory Spending" "./compiled-prod/directorySpending.json" pmkDirectorySpending - writePlutusScriptNoTrace "Blacklist Spending" "./compiled-prod/blacklistSpending.json" pmkBlacklistSpending +exportUnapplied :: FilePath -> IO () +exportUnapplied fp = do + putStrLn "Writing unapplied Plutus scripts to files" + let prod = fp "prod" + binds = fp "binds" + tracing = fp "tracing" + traverse_ (createDirectoryIfMissing True) [prod, binds, tracing] + + -- TODO: Why is there no difference between the scripts?? + + writePlutusScriptTraceBind "Programmable Logic Base" (binds "programmableLogicBase.json") mkProgrammableLogicBase + writePlutusScriptTraceBind "Programmable Logic Global" (binds "programmableLogicGlobal.json") mkProgrammableLogicGlobal + writePlutusScriptTraceBind "Issuance" (binds "programmableTokenMinting.json") mkProgrammableLogicMinting + writePlutusScriptTraceBind "Protocol Parameters NFT" (binds "protocolParametersNFTMinting.json") mkProtocolParametersMinting + writePlutusScriptTraceBind "Always Fail" (binds "alwaysFail.json") alwaysFailScript + writePlutusScriptTraceBind "Permissioned Minting" (binds "permissionedMinting.json") mkPermissionedMinting + writePlutusScriptTraceBind "Permissioned Transfer" (binds "permissionedTransfer.json") mkPermissionedTransfer + writePlutusScriptTraceBind "Freeze and Seize Transfer" (binds "freezeAndSeizeTransfer.json") mkFreezeAndSeizeTransfer + writePlutusScriptTraceBind "Directory Node Minting Policy" (binds "directoryNodeMintingPolicy.json") mkDirectoryNodeMP + writePlutusScriptTraceBind "Directory Spending" (binds "directorySpending.json") pmkDirectorySpending + writePlutusScriptTraceBind "Blacklist Spending" (binds "blacklistSpending.json") pmkBlacklistSpending + + writePlutusScriptTrace "Programmable Logic Base" (tracing "programmableLogicBase.json") mkProgrammableLogicBase + writePlutusScriptTrace "Programmable Logic Global" (tracing "programmableLogicGlobal.json") mkProgrammableLogicGlobal + writePlutusScriptTrace "Issuance" (tracing "programmableTokenMinting.json") mkProgrammableLogicMinting + writePlutusScriptTrace "Protocol Parameters NFT" (tracing "protocolParametersNFTMinting.json") mkProtocolParametersMinting + writePlutusScriptTrace "Always Fail" (tracing "alwaysFail.json") alwaysFailScript + writePlutusScriptTrace "Permissioned Minting" (tracing "permissionedMinting.json") mkPermissionedMinting + writePlutusScriptTrace "Permissioned Transfer" (tracing "permissionedTransfer.json") mkPermissionedTransfer + writePlutusScriptTrace "Freeze and Seize Transfer" (tracing "freezeAndSeizeTransfer.json") mkFreezeAndSeizeTransfer + writePlutusScriptTrace "Directory Node Minting Policy" (tracing "directoryNodeMintingPolicy.json") mkDirectoryNodeMP + writePlutusScriptTrace "Directory Spending" (tracing "directorySpending.json") pmkDirectorySpending + writePlutusScriptTrace "Blacklist Spending" (tracing "blacklistSpending.json") pmkBlacklistSpending + + writePlutusScriptNoTrace "Programmable Logic Base" (prod "programmableLogicBase.json") mkProgrammableLogicBase + writePlutusScriptNoTrace "Programmable Logic Global" (prod "programmableLogicGlobal.json") mkProgrammableLogicGlobal + writePlutusScriptNoTrace "Issuance" (prod "programmableTokenMinting.json") mkProgrammableLogicMinting + writePlutusScriptNoTrace "Protocol Parameters NFT" (prod "protocolParametersNFTMinting.json") mkProtocolParametersMinting + writePlutusScriptNoTrace "Always Fail" (prod "alwaysFail.json") alwaysFailScript + writePlutusScriptNoTrace "Permissioned Minting" (prod "permissionedMinting.json") mkPermissionedMinting + writePlutusScriptNoTrace "Permissioned Transfer" (prod "permissionedTransfer.json") mkPermissionedTransfer + writePlutusScriptNoTrace "Freeze and Seize Transfer" (prod "freezeAndSeizeTransfer.json") mkFreezeAndSeizeTransfer + writePlutusScriptNoTrace "Directory Node Minting Policy" (prod "directoryNodeMintingPolicy.json") mkDirectoryNodeMP + writePlutusScriptNoTrace "Directory Spending" (prod "directorySpending.json") pmkDirectorySpending + writePlutusScriptNoTrace "Blacklist Spending" (prod "blacklistSpending.json") pmkBlacklistSpending + +{-| Arguments for computing the applied scripts +-} +data AppliedScriptArgs = + AppliedScriptArgs + { asaTxIn :: C.TxIn + , asaIssuerAddress :: SerialiseAddress (C.Address C.ShelleyAddr) + } data ExportCommand = ExportCommand - { ecTxIn :: C.TxIn - , ecIssuerAddress :: SerialiseAddress (C.Address C.ShelleyAddr) + { exBaseFolder :: FilePath + , exAppliedScript :: Maybe AppliedScriptArgs } parseExportCommand :: Parser ExportCommand -parseExportCommand = ExportCommand <$> parseTxIn <*> parseAddress +parseExportCommand = + ExportCommand + <$> strArgument (help "The folder to write the scripts to" <> metavar "FOLDER") + <*> optional parseAppliedScriptArgs + +parseAppliedScriptArgs :: Parser AppliedScriptArgs +parseAppliedScriptArgs = AppliedScriptArgs <$> parseTxIn <*> parseAddress parseAddress :: Parser (SerialiseAddress (C.Address C.ShelleyAddr)) parseAddress = argument (eitherReader (eitherDecode . LBS8.pack)) (help "The address to use for the issuer" <> metavar "ISSUER_ADDRESS") diff --git a/src/wst-poc.cabal b/src/wst-poc.cabal index 13a8b77..22a18c6 100644 --- a/src/wst-poc.cabal +++ b/src/wst-poc.cabal @@ -175,6 +175,8 @@ executable export-smart-tokens , bytestring , cardano-api , cardano-binary + , directory + , filepath , mtl , optparse-applicative , plutarch