diff --git a/README.md b/README.md index dc4dc65..c2c1abb 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,29 @@ Server for stable, curated Haskell package sets This repo is part of the [Stackage project](https://github.com/fpco/stackage), and the live server can be viewed at https://www.stackage.org. + +## Building locally + +Build locally by passing the `dev` flag to it: + +``` shellsession +$ stack build . --flag stackage-server:dev +``` + +Now, initially you need to run the cron job to create and populate the database: + +``` shellsession +$ export PGSTRING=postgresql://postgres:password@localhost:5432/stackage +$ stack exec stackage-server-cron +``` + +Note that you need to modify the PGSTRING environment variable according to your actual database configuration. Also, you need to create an empty database before running the cron job. Note that it takes quites some time for it to load your database. + +After this, run the stackage server: + +``` shellsession +$ export PGSTRING=postgresql://postgres:password@localhost:5432/stackage +$ stack exec stackage-server +``` + + diff --git a/package.yaml b/package.yaml index 115819b..aa612c5 100644 --- a/package.yaml +++ b/package.yaml @@ -147,6 +147,8 @@ executables: when: - condition: flag(library-only) buildable: false + - condition: flag(dev) + cpp-options: -DDEVELOPMENT stackage-server-cron: main: stackage-server-cron.hs @@ -161,3 +163,5 @@ executables: when: - condition: flag(library-only) buildable: false + - condition: flag(dev) + cpp-options: -DDEVELOPMENT diff --git a/src/Application.hs b/src/Application.hs index 041f850..88c2c71 100644 --- a/src/Application.hs +++ b/src/Application.hs @@ -1,4 +1,5 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} +{-# LANGUAGE CPP#-} module Application ( getApplicationDev , appMain @@ -81,7 +82,9 @@ makeApplication foundation = do appPlain <- toWaiAppPlain foundation let middleware = id -- prometheus def +#if !DEVELOPMENT . forceSSL' (appSettings foundation) +#endif . logWare . defaultMiddlewaresNoLogging diff --git a/src/Stackage/Database/Cron.hs b/src/Stackage/Database/Cron.hs index adafc4c..d2523b5 100644 --- a/src/Stackage/Database/Cron.hs +++ b/src/Stackage/Database/Cron.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP#-} module Stackage.Database.Cron ( stackageServerCron , newHoogleLocker @@ -107,6 +108,7 @@ stackageServerCron = do } createStackageDatabase dbfp +#if !DEVELOPMENT db <- openStackageDatabase dbfp do @@ -139,6 +141,7 @@ stackageServerCron = do let dest = unpack key createDirectoryIfMissing True $ takeDirectory dest renamePath fp dest +#endif createHoogleDB :: StackageDatabase -> Manager -> SnapName -> IO (Maybe FilePath) createHoogleDB db man name = handleAny (\e -> print e $> Nothing) $ do