|
| 1 | +-- | |
| 2 | + |
| 3 | +module Main (main) where |
| 4 | + |
| 5 | +import qualified Data.ByteString.Lazy as BL |
| 6 | +import qualified Data.ByteString.Lazy.UTF8 as BL8 |
| 7 | +import qualified Test.Cardano.Ledger.Allegra.Binary.Cddl as Allegra |
| 8 | +import qualified Test.Cardano.Ledger.Alonzo.Binary.Cddl as Alonzo |
| 9 | +import qualified Test.Cardano.Ledger.Babbage.Binary.Cddl as Babbage |
| 10 | +import qualified Paths_cardano_ledger_byron as Byron |
| 11 | +import qualified Test.Cardano.Ledger.Conway.Binary.Cddl as Conway |
| 12 | +import qualified Test.Cardano.Ledger.Mary.Binary.Cddl as Mary |
| 13 | +import qualified Test.Cardano.Ledger.Shelley.Binary.Cddl as Shelley |
| 14 | +import qualified Data.List as L |
| 15 | +import qualified System.Process.ByteString.Lazy as P |
| 16 | +import qualified System.Environment as E |
| 17 | +import qualified System.FilePath as F |
| 18 | + |
| 19 | +main :: IO () |
| 20 | +main = do |
| 21 | + byron <- forwardize . (:[]) <$> Byron.getDataFileName "cddl-spec/byron.cddl" |
| 22 | + shelley <- forwardize <$> Shelley.readShelleyCddlFileNames |
| 23 | + allegra <- forwardize <$> Allegra.readAllegraCddlFileNames |
| 24 | + mary <- forwardize <$> Mary.readMaryCddlFileNames |
| 25 | + alonzo <- forwardize <$> Alonzo.readAlonzoCddlFileNames |
| 26 | + babbage <- forwardize <$> Babbage.readBabbageCddlFileNames |
| 27 | + conway <- forwardize <$> Conway.readConwayCddlFileNames |
| 28 | + |
| 29 | + let include_path = mconcat $ L.intersperse ":" $ [byron, shelley, allegra, mary, alonzo, babbage, conway] |
| 30 | + E.setEnv "CDDL_INCLUDE_PATH" (include_path <> ":") |
| 31 | + |
| 32 | + putStrLn . BL8.toString =<< cddlc "ouroboros-consensus-cardano/cddl/disk/block.cddl" |
| 33 | + where |
| 34 | + forwardize [x] = |
| 35 | + let f = [ if c /= '\\' then c else '/' | c <- F.takeDirectory x ] |
| 36 | + in if "C:" `L.isPrefixOf` f |
| 37 | + then drop 2 f |
| 38 | + else f |
| 39 | + forwardize x = error $ "match: " <> show x |
| 40 | + |
| 41 | + |
| 42 | +-- | A 'CDDL' specifcation for a protocol 'ps'. |
| 43 | +-- |
| 44 | +-- newtype CDDLSpec ps = CDDLSpec BL.ByteString |
| 45 | + |
| 46 | +cddlc :: FilePath -> IO BL.ByteString |
| 47 | +cddlc path = do |
| 48 | + (_, cddl, err) <- P.readProcessWithExitCode "ruby" ["C:/msys64/clang64/bin/cddlc", "-u", "-2", "-t", "cddl", path] mempty |
| 49 | + putStrLn $ BL8.toString err |
| 50 | + return cddl |
0 commit comments