Skip to content
This repository has been archived by the owner on Feb 3, 2022. It is now read-only.

Commit

Permalink
generate the prior.html page
Browse files Browse the repository at this point in the history
  • Loading branch information
mzero committed Aug 9, 2014
1 parent 0fc9d06 commit a710765
Show file tree
Hide file tree
Showing 3 changed files with 166 additions and 15 deletions.
103 changes: 103 additions & 0 deletions hptool/src/ReleaseFiles.hs
@@ -0,0 +1,103 @@
module ReleaseFiles
(
Version, Date, OSType, Arch, Url, Hash, FileInfo, ReleaseFiles
, releaseFiles
)
where

type Version = String

type Date = (Int,Int)
jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec :: Int -> Date
[ jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec ] = map (,) [1..12]

type OSType = String
type Arch = String
type Url = String
type Hash = String
type FileInfo = (OSType, Maybe Arch, Url, Maybe Hash)
type ReleaseFiles = (Version, Date, [FileInfo])

i386, x86_64 :: Arch
i386 = "32bit"
x86_64 = "64bit"

mac, win :: Arch -> Url -> Maybe Hash -> FileInfo
mac a u mh = ("Mac OS X", Just a, u, mh)
win a u mh = ("Windows", Just a, u, mh)

src :: Url -> Maybe Hash -> FileInfo
src u mh = ("Source", Nothing, u, mh)

nohash :: Maybe Hash
nohash = Nothing

hash :: String -> Maybe Hash
hash = Just


releaseFiles :: [ReleaseFiles]
releaseFiles =
[ ("2012.4.0.0", nov 2012,
[ mac i386 "download/2012.4.0.0/Haskell%20Platform%202012.4.0.0%2032bit.pkg" nohash
, mac x86_64 "download/2012.4.0.0/Haskell%20Platform%202012.4.0.0%2064bit.pkg" nohash
, win i386 "download/2012.4.0.0/HaskellPlatform-2012.4.0.0-setup.exe" nohash
, src "download/2012.4.0.0/haskell-platform-2012.4.0.0.tar.gz" nohash
])

, ("2012.2.0.0", jun 2012,
[ mac i386 "download/2012.2.0.0/Haskell%20Platform%202012.2.0.0%2032bit.pkg" nohash
, mac x86_64 "download/2012.2.0.0/Haskell%20Platform%202012.2.0.0%2064bit.pkg" nohash
, win i386 "download/2012.2.0.0/HaskellPlatform-2012.2.0.0-setup.exe" nohash
, src "download/2012.2.0.0/haskell-platform-2012.2.0.0.tar.gz" nohash
])

, ("2011.4.0.0", apr 2011,
[ mac i386 "download/2011.4.0.0/Haskell%20Platform%202011.4.0.0%2032bit.pkg" nohash
, mac x86_64 "download/2011.4.0.0/Haskell%20Platform%202011.4.0.0%2064bit.pkg" nohash
, win i386 "download/2011.4.0.0/HaskellPlatform-2011.4.0.0-setup.exe" nohash
, src "download/2011.4.0.0/haskell-platform-2011.4.0.0.tar.gz" nohash
])

, ("2011.2.0.1", apr 2011,
[ mac i386 "download/2011.2.0.1/Haskell%20Platform%202011.2.0.1-i386.pkg" nohash
, mac x86_64 "download/2011.2.0.1/Haskell%20Platform%202011.2.0.1-x86_64.pkg" nohash
, win i386 "download/2011.2.0.1/HaskellPlatform-2011.2.0.1-setup.exe" nohash
, src "download/2011.2.0.1/haskell-platform-2011.2.0.1.tar.gz" nohash
])

, ("2011.2.0.0", mar 2011,
[ mac i386 "download/2011.2.0.0/Haskell%20Platform%202011.2.0.0-i386.pkg" nohash
, mac x86_64 "download/2011.2.0.0/Haskell%20Platform%202011.2.0.0-x86_64.pkg" nohash
, win i386 "download/2011.2.0.0/HaskellPlatform-2011.2.0.0-setup.exe" nohash
, src "download/2011.2.0.0/haskell-platform-2011.2.0.0.tar.gz" nohash
])

, ("2010.2.0.0", jul 2010,
[ mac i386 "download/2010.2.0.0/haskell-platform-2010.2.0.0.i386.dmg" nohash
, win i386 "download/2010.2.0.0/HaskellPlatform-2010.2.0.0-setup.exe" nohash
, src "download/2010.2.0.0/haskell-platform-2010.2.0.0.tar.gz" nohash
])

, ("2010.1.0.0", mar 2010,
[ mac i386 "http://hackage.haskell.org/platform/2010.1.0.0/haskell-platform-2010.1.0.1-i386.dmg" nohash
, win i386 "http://hackage.haskell.org/platform/2010.1.0.0/HaskellPlatform-2010.1.0.0-setup.exe" nohash
, src "http://hackage.haskell.org/platform/2010.1.0.0/haskell-platform-2010.1.0.0.tar.gz" nohash
])

, ("2009.2.0.2", jul 2009,
[ mac i386 "http://hackage.haskell.org/platform/2009.2.0.2/haskell-platform-2009.2.0.2-i386.dmg" nohash
, win i386 "http://hackage.haskell.org/platform/2009.2.0.2/HaskellPlatform-2009.2.0.2-setup.exe" nohash
, src "http://hackage.haskell.org/platform/2009.2.0.2/haskell-platform-2009.2.0.2.tar.gz" nohash
])

, ("2009.2.0.1", jun 2009,
[ win i386 "http://hackage.haskell.org/platform/2009.2.0.1/HaskellPlatform-2009.2.0.1-setup.exe" nohash
, src "http://hackage.haskell.org/platform/2009.2.0.1/haskell-platform-2009.2.0.1.tar.gz" nohash
])

, ("2009.2.0", may 2009,
[ win i386 "http://hackage.haskell.org/platform/2009.2.0/HaskellPlatform-2009.2.0-setup.exe" nohash
, src "http://hackage.haskell.org/platform/2009.2.0/haskell-platform-2009.2.0.tar.gz" nohash
])
]
52 changes: 51 additions & 1 deletion hptool/src/Website.hs
Expand Up @@ -2,15 +2,65 @@

module Website where

import Data.Function (on)
import Data.List (groupBy)
import Development.Shake
import Text.Hastache
import Text.Hastache.Context

import Dirs
import Paths
import ReleaseFiles
import Templates

websiteRules :: FilePath -> Rules ()
websiteRules templateSite = do
websiteDir */> \dst -> do
bcCtx <- buildConfigContext
let ctx = bcCtx `ctxAppend` errorCtx
let rlsCtx = releasesCtx releaseFiles
ctx = ctxConcat [rlsCtx, bcCtx, errorCtx]
copyExpandedDir ctx templateSite dst


fileCtx :: (Monad m) => FileInfo -> MuContext m
fileCtx (os, mArch, url, mHash) = mkStrContext ctx
where
ctx "osName" = MuVariable os
ctx "osNameAndArch" = MuVariable $ os ++ maybe "" (\a -> ", " ++ a) mArch
ctx "url" = MuVariable url
ctx "mHash" = maybe (MuBool False) MuVariable mHash
ctx _ = MuNothing

releaseCtx :: (Monad m) => ReleaseFiles -> MuContext m
releaseCtx (ver, (month, year), files) = mkStrContext ctx
where
ctx "version" = MuVariable ver
ctx "year" = MuVariable $ show year
ctx "month" = MuVariable $ monthName month
ctx "files" = MuList $ map fileCtx files
ctx _ = MuNothing

releasesCtx :: (Monad m) => [ReleaseFiles] -> MuContext m
releasesCtx allRs = mkStrContext ctx
where
ctx "years" = MuList $ map (mkStrContext . yearCtx) years
ctx _ = MuNothing

yearCtx [] _ = MuBool False
yearCtx (r0:_) "year" = MuVariable $ show $ releaseYear r0
yearCtx rs "releases" = MuList $ map releaseCtx rs
yearCtx _ _ = MuNothing

years = groupBy ((==) `on` releaseYear) allRs

releaseYear :: ReleaseFiles -> Int
releaseYear (_ver, (_month, year), _files) = year

monthName :: Int -> String
monthName i = maybe (show i) id $ lookup i monthNames
where
monthNames = zip [1..] $
words "January Feburary March April May June \
\July August September October November December"


26 changes: 12 additions & 14 deletions website/prior.html.mu
Expand Up @@ -14,21 +14,19 @@
</tr>
</tbody>
</table>

<p>Prior releases of Haskell Platform:</p>
<h1 id="section">2012</h1>
<p><strong>2012.4.0.0</strong>, November 2012<a href="download/2012.4.0.0/Haskell%20Platform%202012.4.0.0%2032bit.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 32bit</a> - <a href="download/2012.4.0.0/Haskell%20Platform%202012.4.0.0%2064bit.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 64bit</a> - <a href="download/2012.4.0.0/HaskellPlatform-2012.4.0.0-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="download/2012.4.0.0/haskell-platform-2012.4.0.0.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<p><strong>2012.2.0.0</strong>, June 2012<a href="download/2012.2.0.0/Haskell%20Platform%202012.2.0.0%2032bit.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 32bit</a> - <a href="download/2012.2.0.0/Haskell%20Platform%202012.2.0.0%2064bit.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 64bit</a> - <a href="download/2012.2.0.0/HaskellPlatform-2012.2.0.0-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="download/2012.2.0.0/haskell-platform-2012.2.0.0.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<h1 id="section-1">2011</h1>
<p><strong>2011.4.0.0</strong>, April 2011<a href="download/2011.4.0.0/Haskell%20Platform%202011.4.0.0%2032bit.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 32bit</a> - <a href="download/2011.4.0.0/Haskell%20Platform%202011.4.0.0%2064bit.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 64bit</a> - <a href="download/2011.4.0.0/HaskellPlatform-2011.4.0.0-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="download/2011.4.0.0/haskell-platform-2011.4.0.0.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<p><strong>2011.2.0.1</strong>, April 2011<a href="download/2011.2.0.1/Haskell%20Platform%202011.2.0.1-i386.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 32bit</a> - <a href="download/2011.2.0.1/Haskell%20Platform%202011.2.0.1-x86_64.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 64bit</a> - <a href="download/2011.2.0.1/HaskellPlatform-2011.2.0.1-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="download/2011.2.0.1/haskell-platform-2011.2.0.1.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<p><strong>2011.2.0.0</strong> - March 2011<a href="download/2011.2.0.0/Haskell%20Platform%202011.2.0.0-i386.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 32bit</a> - <a href="download/2011.2.0.0/Haskell%20Platform%202011.2.0.0-x86_64.pkg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 64bit</a> - <a href="download/2011.2.0.0/HaskellPlatform-2011.2.0.0-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="download/2011.2.0.0/haskell-platform-2011.2.0.0.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<h1 id="section-2">2010</h1>
<p><strong>2010.2.0.0</strong> - July 2010<a href="download/2010.2.0.0/haskell-platform-2010.2.0.0.i386.dmg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 32bit</a> - <a href="download/2010.2.0.0/HaskellPlatform-2010.2.0.0-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="download/2010.2.0.0/haskell-platform-2010.2.0.0.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<p><strong>2010.1.0.0</strong> - March 2010<a href="http://hackage.haskell.org/platform/2010.1.0.0/haskell-platform-2010.1.0.1-i386.dmg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 32bit</a> - <a href="http://hackage.haskell.org/platform/2010.1.0.0/HaskellPlatform-2010.1.0.0-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="http://hackage.haskell.org/platform/2010.1.0.0/haskell-platform-2010.1.0.0.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<h1 id="section-3">2009</h1>
<p><strong>2009.2.0.2</strong> - July 2009<a href="http://hackage.haskell.org/platform/2009.2.0.2/haskell-platform-2009.2.0.2-i386.dmg" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">Mac OS X, 32bit</a> - <a href="http://hackage.haskell.org/platform/2009.2.0.2/HaskellPlatform-2009.2.0.2-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="http://hackage.haskell.org/platform/2009.2.0.2/haskell-platform-2009.2.0.2.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<p><strong>2009.2.0.1</strong> - June 2009<a href="http://hackage.haskell.org/platform/2009.2.0.1/HaskellPlatform-2009.2.0.1-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="http://hackage.haskell.org/platform/2009.2.0.1/haskell-platform-2009.2.0.1.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
<p><strong>2009.2.0</strong> - May 2009<a href="http://hackage.haskell.org/platform/2009.2.0/HaskellPlatform-2009.2.0-setup.exe" onClick="javascript: pageTracker._trackPageview('/downloads/windows/old'); ">Windows</a> - <a href="http://hackage.haskell.org/platform/2009.2.0/haskell-platform-2009.2.0.tar.gz" onClick="javascript: pageTracker._trackPageview('/downloads/source/old'); ">Source</a></p>
{{#years}}
<h1 id="section">{{year}}</h1>
{{#releases}}
<p><strong>{{version}}</strong>, {{month}} {{year}} ⟹
{{#files}}
<a href="{{url}}" onClick="javascript: pageTracker._trackPageview('/downloads/mac/old'); ">{{osNameAndArch}}</a> -
{{/files}}
</p>
{{/releases}}
{{/years}}

{{> footer}}
</body>
</html>

0 comments on commit a710765

Please sign in to comment.