#! /usr/bin/env runhaskell import Development.Shake import Development.Shake.FilePath import Control.Monad main = shakeArgs shakeOptions $ do phony "clean" $ do removeFilesAfter "completion" ["//*"] removeFilesAfter "." ["README.md"] want ["README.md", "completion/argotk.sh"] "completion/*.sh" %> \out -> mkCompletionRule out "bash" $ "argotk" takeFileName out -<.> "hs" "README.md" %> \out -> do let template = ".README.md" need [template] (Stdout panpipe) <- cmd "which panpipe" cmd_ "pandoc --filter" [take (length panpipe - 1) panpipe, template, "-o", out] where mkCompletionAction str sn = (sn, cmd ("./" ++ sn) ["--" ++ str ++ "-completion-script", "." sn]) mkCompletionRule out str fn = do let (needed, cplA) = mkCompletionAction str fn need [needed] (Stdout cplScript) <- cplA liftIO $ writeFile out cplScript