import Development.Shake import Development.Shake.Command import Development.Shake.FilePath import Development.Shake.Util main = shakeArgs shakeOptions $ do -- action $ do -- sourceFiles <- getDirectoryFiles "" ["//*.luasm"] -- need $ (-<.> "luac") <$> sourceFiles want ["silly.component.wasm"] alternatives $ do "*.component.wasm" %> \out -> do let wasm = out `replaceExtensions` "wasm" need [wasm] cmd_ "wasm-tools component new" [wasm] "-o" [out] "*.wasm" %> \out -> do let wit = out -<.> "wit" let wat = out -<.> "wat" need [wit,wat] cmd_ "wasm-tools component embed" [wit] [wat] "-o" [out] phony "run" $ do need ["silly.component.wasm"] cmd_ "wasmtime run --invoke silly() silly.component.wasm" phony "clean" $ do removeFilesAfter ".shake" ["//*"] liftIO $ removeFiles "." ["*.wasm"]