packages feed

wasmedge-hs-0.17.1.0: examples/Plugin.hs

{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE OverloadedStrings #-}

module Main (main) where

import Control.Monad (forM_)
import Data.Text qualified as T
import WasmEdge.Plugin

main :: IO ()
main = do
  putStrLn "=== WasmEdge Haskell Binding: Plugin Discovery Example ==="
  putStrLn "Loading plugins from default installation paths..."
  loadPluginsWithDefaultPaths

  plugins <- listPlugins
  putStrLn $ "Found " ++ show (length plugins) ++ " plugin(s)."

  forM_ plugins $ \pName -> do
    putStrLn $ "\nPlugin: " ++ T.unpack pName
    mPlug <- findPlugin pName
    case mPlug of
      Nothing -> putStrLn "  Could not open plugin context"
      Just plug -> do
        name <- getPluginName plug
        putStrLn $ "  Plugin Name: " ++ T.unpack name
        mods <- listPluginModules plug
        putStrLn $ "  Exported Modules: " ++ show (map T.unpack mods)