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 ["complete.component.wasm"] alternatives $ do "complete.component.wasm" %> \out -> do need ["provider.component.wasm","importing.component.wasm"] cmd_ "wac plug --plug" "provider.component.wasm" "importing.component.wasm" "-o" "complete.component.wasm" "*.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 ["complete.component.wasm"] cmd_ "wasmtime run --invoke add(1) complete.component.wasm" phony "clean" $ do removeFilesAfter ".shake" ["//*"] liftIO $ removeFiles "." ["*.wasm"]