tools: expand shake file, show help by default
This commit is contained in:
		
							parent
							
								
									f331ebec16
								
							
						
					
					
						commit
						bded4b9221
					
				| @ -1,10 +1,55 @@ | |||||||
| #!/usr/bin/env stack | #!/usr/bin/env stack | ||||||
| -- stack runghc --package shake | {- stack runghc | ||||||
|  |    --package base-prelude | ||||||
|  |    --package directory | ||||||
|  |    --package extra | ||||||
|  |    --package here | ||||||
|  |    --package safe | ||||||
|  |    --package shake | ||||||
|  |    --package time | ||||||
|  | -} | ||||||
|  | {- | ||||||
|  | Usage: see below. | ||||||
|  | Shake.hs is a more powerful Makefile, providing a number of commands | ||||||
|  | for performing useful tasks. Compiling this script is suggested, so that | ||||||
|  | it runs quicker and will not be affected eg when exploring old code versions. | ||||||
|  | More about Shake: http://shakebuild.com/manual | ||||||
|  | Requires: https://www.haskell.org/downloads#stack | ||||||
| 
 | 
 | ||||||
| import Development.Shake | Shake notes: | ||||||
| import Development.Shake.FilePath | notes: | ||||||
| import Data.List |  unclear: | ||||||
| import System.Directory as S (getDirectoryContents) |   want | ||||||
|  |   oracles | ||||||
|  |  wishlist: | ||||||
|  |   wildcards in phony rules | ||||||
|  |   multiple individually accessible wildcards | ||||||
|  |   just one shake import | ||||||
|  | -} | ||||||
|  | 
 | ||||||
|  | {-# LANGUAGE PackageImports, QuasiQuotes #-} | ||||||
|  | 
 | ||||||
|  | import                Prelude () | ||||||
|  | import "base-prelude" BasePrelude | ||||||
|  | -- import "base"         System.Console.GetOpt | ||||||
|  | import "extra"        Data.List.Extra | ||||||
|  | import "here"         Data.String.Here | ||||||
|  | import "safe"         Safe | ||||||
|  | import "shake"        Development.Shake | ||||||
|  | import "shake"        Development.Shake.FilePath | ||||||
|  | import "time"         Data.Time | ||||||
|  | import "directory"    System.Directory as S (getDirectoryContents) | ||||||
|  | 
 | ||||||
|  | usage = [i|Usage: | ||||||
|  |  ./Shake.hs compile                     # compile this script (optional) | ||||||
|  |  ./Shake                                # show commands | ||||||
|  |  ./Shake --help                         # show options | ||||||
|  |  ./Shake [--color] COMMAND | ||||||
|  | 
 | ||||||
|  | Commands: | ||||||
|  |  compile | ||||||
|  |  manpages | ||||||
|  | |] | ||||||
| 
 | 
 | ||||||
| manpages :: [String] | manpages :: [String] | ||||||
| manpages = [ | manpages = [ | ||||||
| @ -33,6 +78,26 @@ main = do | |||||||
|     map ("tools" </>). nub . sort . map (-<.> "") . filter ("pandoc" `isPrefixOf`) |     map ("tools" </>). nub . sort . map (-<.> "") . filter ("pandoc" `isPrefixOf`) | ||||||
|     <$> S.getDirectoryContents "tools" |     <$> S.getDirectoryContents "tools" | ||||||
| 
 | 
 | ||||||
|  |   shakeArgs | ||||||
|  |     shakeOptions{ | ||||||
|  |        shakeFiles=buildDir | ||||||
|  |       ,shakeVerbosity=Loud | ||||||
|  |       -- ,shakeReport=[".shake.html"] | ||||||
|  |       } $ do | ||||||
|  | 
 | ||||||
|  |     want ["help"] | ||||||
|  | 
 | ||||||
|  |     phony "help" $ liftIO $ putStrLn usage | ||||||
|  | 
 | ||||||
|  |     phony "compile" $ need ["Shake"] | ||||||
|  | 
 | ||||||
|  |     "Shake" %> \out -> do | ||||||
|  |       need ["Shake.hs"] | ||||||
|  |       cmd "stack ghc Shake.hs" :: Action ExitCode | ||||||
|  |       putLoud "Compiled ./Shake, you can now use this instead of ./Shake.hs" | ||||||
|  | 
 | ||||||
|  |     -- docs | ||||||
|  | 
 | ||||||
|     -- man pages, still markdown but with man-only sections removed. |     -- man pages, still markdown but with man-only sections removed. | ||||||
|     -- (We let hakyll do the html rendering since it's good |     -- (We let hakyll do the html rendering since it's good | ||||||
|     -- at applying the site style, table of contents etc.) |     -- at applying the site style, table of contents etc.) | ||||||
| @ -41,9 +106,7 @@ main = do | |||||||
|     -- man pages, converted to man nroff with web-only sections removed |     -- man pages, converted to man nroff with web-only sections removed | ||||||
|     let manpageNroffs = [manpageDir p </> p | p <- manpages] |     let manpageNroffs = [manpageDir p </> p | p <- manpages] | ||||||
| 
 | 
 | ||||||
|   shakeArgs shakeOptions{shakeFiles=buildDir} $ do |     phony "manpages" $ need $ manpageNroffs ++ manpageFilteredMds | ||||||
| 
 |  | ||||||
|     want $ manpageNroffs ++ manpageFilteredMds |  | ||||||
| 
 | 
 | ||||||
|     manpageNroffs |%> \out -> do |     manpageNroffs |%> \out -> do | ||||||
|       let |       let | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user