diff options
| -rwxr-xr-x | Setup.lhs | 80 | ||||
| -rw-r--r-- | xmobar.cabal | 16 | ||||
| -rw-r--r-- | xmobar.hs | 2 | 
3 files changed, 97 insertions, 1 deletions
| diff --git a/Setup.lhs b/Setup.lhs new file mode 100755 index 0000000..d7acc7f --- /dev/null +++ b/Setup.lhs @@ -0,0 +1,80 @@ +#!/usr/bin/env runhaskell + +> import Distribution.Simple +> import Distribution.PackageDescription +> import Distribution.Setup +> import Distribution.Simple.Utils +> import Distribution.Simple.LocalBuildInfo +> import Distribution.Program +> import Distribution.PreProcess + +> import System.FilePath.Posix +> import System.Directory +> import Data.List + + +> main = defaultMainWithHooks defaultUserHooks {haddockHook = xmonadHaddock} + +> -- a different implementation of haddock hook from +> -- from Distribution.Simple: will use synopsis and description for  +> -- building executables' documentation. + +> xmonadHaddock pkg_descr lbi hooks (HaddockFlags hoogle verbose) = do +>   confHaddock <- do let programConf = withPrograms lbi +>                         haddockName = programName haddockProgram +>                     mHaddock <- lookupProgram haddockName programConf +>                     maybe (die "haddock command not found") return mHaddock + +>   let tmpDir = (buildDir lbi) </> "tmp" +>   createDirectoryIfMissing True tmpDir +>   createDirectoryIfMissing True haddockPref +>   preprocessSources pkg_descr lbi verbose (allSuffixHandlers hooks) +>   setupMessage "Running Haddock for" pkg_descr + +>   let outputFlag  = if hoogle then "--hoogle" else "--html" +>       showPkg     = showPackageId (package pkg_descr) +>       showDepPkgs = map showPackageId (packageDeps lbi) +                           +>   withExe pkg_descr $ \exe -> do  +>     let bi = buildInfo exe +>     inFiles <- getModulePaths bi (otherModules bi) +>     srcMainPath <- findFile (hsSourceDirs bi) (modulePath exe) + +>     let prologName = showPkg ++ "-haddock-prolog.txt" +>     writeFile prologName (description pkg_descr ++ "\n") + +>     let exeTargetDir = haddockPref </> exeName exe +>         outFiles = srcMainPath : inFiles +>         haddockFile = exeTargetDir </> (haddockName pkg_descr) + +>     createDirectoryIfMissing True exeTargetDir +>     rawSystemProgram verbose confHaddock +>                          ([outputFlag, +>                            "--odir=" ++ exeTargetDir, +>                            "--title=" ++ showPkg ++ ": " ++ synopsis pkg_descr, +>                            "--package=" ++ showPkg, +>                            "--dump-interface=" ++ haddockFile, +>                            "--prologue=" ++ prologName +>                           ] +>                           ++ map ("--use-package=" ++) showDepPkgs +>                           ++ programArgs confHaddock +>                           ++ (if verbose > 4 then ["--verbose"] else []) +>                           ++ outFiles +>                          ) +>     removeFile prologName +   +> getModulePaths :: BuildInfo -> [String] -> IO [FilePath] +> getModulePaths bi = +>    fmap concat . +>       mapM (flip (moduleToFilePath (hsSourceDirs bi)) ["hs", "lhs"]) +     + +> allSuffixHandlers :: Maybe UserHooks +>                   -> [PPSuffixHandler] +> allSuffixHandlers hooks +>     = maybe knownSuffixHandlers +>       (\h -> overridesPP (hookedPreProcessors h) knownSuffixHandlers) +>       hooks +>     where +>       overridesPP :: [PPSuffixHandler] -> [PPSuffixHandler] -> [PPSuffixHandler] +>       overridesPP = unionBy (\x y -> fst x == fst y) diff --git a/xmobar.cabal b/xmobar.cabal new file mode 100644 index 0000000..5ad58ba --- /dev/null +++ b/xmobar.cabal @@ -0,0 +1,16 @@ +name:               xmobar +version:            0.1 +homepage:           http://gorgias.mine.nu/repos/xmobar/ +synopsis:           A Statusbar for the XMonad Window Manager +description:        A Statusbar for the XMonad Window Manager +category:           System +license:            BSD3 +license-file:       LICENSE +author:             Andrea Rossato +maintainer:         andrea.rossato@unibz.it +build-depends:      base>=2.0, X11>=1.2.1, mtl>=1.0, unix>=1.0, parsec>=2.0 + +executable:         xmobar +main-is:            xmobar.hs +ghc-options:        -funbox-strict-fields -O2 -fasm -Wall -optl-Wl,-s +ghc-prof-options:   -prof -auto-all @@ -2,7 +2,7 @@  -- |  -- Module      :  XMobar  -- Copyright   :  (c) Andrea Rossato --- License     :  BSD-style (see xmonad/LICENSE) +-- License     :  BSD-style (see LICENSE)  --   -- Maintainer  :  Andrea Rossato <andrea.rossato@unibz.it>  -- Stability   :  unstable | 
