
That's perfect. Thanks!
On Sat, Jul 11, 2009 at 12:10 AM, Gwern Branwen
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512
On Fri, Jul 10, 2009 at 11:46 PM, Keith Sheppard wrote:
Is there a way for a cabalized program to get its own info. I'm specifically interested in version info.
Thanks Keith
Sure, via the Paths_* mechanism. For your reference, here's what it looks like for xmonad:
module Paths_xmonad ( version, getBinDir, getLibDir, getDataDir, getLibexecDir, getDataFileName ) where
import Data.Version (Version(..)) import System.Environment (getEnv)
version :: Version version = Version {versionBranch = [0,8,1], versionTags = []}
bindir, libdir, datadir, libexecdir :: FilePath
bindir = "/home/gwern/bin/bin" libdir = "/home/gwern/bin/lib/xmonad-0.8.1/ghc-6.10.2" datadir = "/home/gwern/bin/share/xmonad-0.8.1" libexecdir = "/home/gwern/bin/libexec"
getBinDir, getLibDir, getDataDir, getLibexecDir :: IO FilePath getBinDir = catch (getEnv "xmonad_bindir") (\_ -> return bindir) getLibDir = catch (getEnv "xmonad_libdir") (\_ -> return libdir) getDataDir = catch (getEnv "xmonad_datadir") (\_ -> return datadir) getLibexecDir = catch (getEnv "xmonad_libexecdir") (\_ -> return libexecdir)
getDataFileName :: FilePath -> IO FilePath getDataFileName name = do dir <- getDataDir return (dir ++ "/" ++ name)
So if you wanted the version number "081", you could do something like 'concatMap show $ versionBranch $ version'
- -- gwern -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux)
iEYEAREKAAYFAkpYD98ACgkQvpDo5Pfl1oI6gACZATzqwtJgBFhAl/qo0ZPauqhg zBcAnRdHtv5nFzNAo2Z9ulHdW1DxiJBE =XyEM -----END PGP SIGNATURE-----
-- keithsheppard.name