on master help sign in
Merge remote-tracking branch 'origin/reunification' into routes
commit169972db143da3dd3ae084939145d94327cc9ce5 authorRyan Trinkle <ryan.trinkle@gmail.com> dateSun 8 Jul 2018, 11:30 (8 years ago) parentadf84bf24941d5
13 files changed+34−68
default.nix+10−43 dep/reflex-platform/github.json+3−3 lib/asset/manifest/src/Obelisk/Asset/Gather.hs−1 lib/asset/manifest/src/Obelisk/Asset/Promoted.hs−1 lib/cliapp/src/Obelisk/CliApp.hs+1 lib/command/src/Obelisk/App.hs+4−3 lib/command/src/Obelisk/Command.hs−1 lib/command/src/Obelisk/Command/Deploy.hs+1−2 lib/command/src/Obelisk/Command/Project.hs−1 lib/command/src/Obelisk/Command/Run.hs+13−10 lib/command/src/Obelisk/Command/Thunk.hs−1 lib/command/src/Obelisk/Command/Upgrade.hs+1−1 lib/route/src/Obelisk/Route.hs+1−1
default.nix+10−43
@@ -53,19 +53,6 @@ let
5353 enableLibraryProfiling = profiling;
5454 });
5555
56− #TODO: Eliminate this when https://github.com/phadej/github/pull/307 makes its way to reflex-platform
57− github = overrideCabal super.github (drv: {
58− src = pkgs.fetchFromGitHub {
59− owner = "ryantrinkle";
60− repo = "github";
61− rev = "8f543cdc07876bfb7b924d3722e3dbc1df4b02ca";
62− sha256 = "0vcnx9cxqd821kmjx1r4cvj95zs742qm1pwqnb52vw3djplbqd86";
63− };
64− sha256 = null;
65− revision = null;
66− editedCabalFile = null;
67− });
68−
6956 # Dynamic linking with split objects dramatically increases startup time (about 0.5 seconds on a decent machine with SSD)
7057 obelisk-command = addOptparseApplicativeCompletionScripts "ob" (justStaticExecutables' super.obelisk-command);
7158
@@ -74,32 +61,13 @@ let
7461 };
7562
7663 fixUpstreamPkgs = self: super: {
77− heist = doJailbreak super.heist; #TODO: Move up to reflex-platform; create tests for r-p supported packages
78− modern-uri =
79− let src = pkgs.fetchFromGitHub {
80− owner = "mrkkrp";
81− repo = "modern-uri";
82− rev = "21064285deb284cb3328094c69c34f9f67919cc9";
83− sha256 = "0vddw8r9sb31h1fz1anzxrs9p3a3p8ygpxlj398z5j47wmr86cmi";
84− };
85− in (overrideCabal (self.callCabal2nix "modern-uri" src {}) (drv: {
86− doCheck = false;
87− postPatch = (drv.postPatch or "") + ''
88− substituteInPlace Text/URI/Types.hs \
89− --replace "instance Arbitrary (NonEmpty (RText 'PathPiece)) where" "" \
90− --replace " arbitrary = (:|) <$> arbitrary <*> arbitrary" ""
91− '';
92− })).override { megaparsec = super.megaparsec_6_1_1; };
93− algebraic-graphs =
94− let src = pkgs.fetchFromGitHub {
95− owner = "snowleopard";
96− repo = "alga";
97− rev = "480a73137e9b38ad3f1bc2c628847953d2fb3e25";
98− sha256 = "0dpwi5ffs88brl3lz51bwb004c6zm8ds8pkw1vzsg2a6aaiyhlzl";
99− };
100− in pkgs.haskell.lib.dontCheck (self.callCabal2nix "algebraic-graphs" src {});
101− network-transport = self.callHackage "network-transport" "0.5.2" {};
102− network-transport-tcp = self.callHackage "network-transport-tcp" "0.6.0" {};
64+ algebraic-graphs = pkgs.haskell.lib.doJailbreak
65+ (self.callCabal2nix "algebraic-graphs" (pkgs.fetchFromGitHub {
66+ owner = "snowleopard";
67+ repo = "alga";
68+ rev = "480a73137e9b38ad3f1bc2c628847953d2fb3e25";
69+ sha256 = "0dpwi5ffs88brl3lz51bwb004c6zm8ds8pkw1vzsg2a6aaiyhlzl";
70+ }) {});
10371 };
10472
10573 cleanSource = builtins.filterSource (name: _: let baseName = builtins.baseNameOf name; in !(
@@ -114,7 +82,7 @@ let
11482 obelisk-asset-serve-snap = self.callCabal2nix "obelisk-asset-serve-snap" (hackGet ./lib/asset + "/serve-snap") {};
11583 obelisk-backend = self.callCabal2nix "obelisk-backend" (cleanSource ./lib/backend) {};
11684 obelisk-cliapp = self.callCabal2nix "obelisk-cliapp" (cleanSource ./lib/cliapp) {};
117− obelisk-command = (self.callCabal2nix "obelisk-command" (cleanSource ./lib/command) {}).override { Cabal = super.Cabal_2_0_0_2; };
85+ obelisk-command = (self.callCabal2nix "obelisk-command" (cleanSource ./lib/command) {});
11886 obelisk-executable-config = executableConfig.haskellPackage self;
11987 obelisk-executable-config-inject = executableConfig.platforms.web.inject self; # TODO handle platforms.{ios,android}
12088 obelisk-migration = self.callCabal2nix "obelisk-migration" (cleanSource ./lib/migration) {};
@@ -145,7 +113,6 @@ rec {
145113 ln -s '${commandWithMigration}/bin/ob' "$out/bin/ob"
146114 wrapProgram "$out"/bin/ob --prefix PATH : ${pkgs.lib.makeBinPath (commandRuntimeDeps pkgs)}
147115 '';
148− commandEnv = ghcObelisk.obelisk-command.env;
149116 shell = pinBuildInputs "obelisk-shell" ([command] ++ commandRuntimeDeps pkgs) [];
150117
151118 selftest = pkgs.writeScript "selftest" ''
@@ -181,7 +148,7 @@ rec {
181148 mkdir $out
182149 cd $out
183150 ln -s "${justStaticExecutables frontend}/bin/frontend.jsexe/all.js" all.unminified.js
184− closure-compiler --externs "${reflex-platform.ghcjsExternsJs}" -O ADVANCED --create_source_map="all.js.map" --source_map_format=V3 --js_output_file="all.js" all.unminified.js
151+ closure-compiler --externs "${reflex-platform.ghcjsExternsJs}" -O ADVANCED --jscomp_warning=checkVars --create_source_map="all.js.map" --source_map_format=V3 --js_output_file="all.js" all.unminified.js
185152 echo "//# sourceMappingURL=all.js.map" >> all.js
186153 '';
187154
@@ -215,7 +182,7 @@ rec {
215182 enableACME = enableHttps;
216183 forceSSL = enableHttps;
217184 locations."/" = {
218− proxyPass = "http://localhost:" + toString backendPort;
185+ proxyPass = "http://127.0.0.1:" + toString backendPort;
219186 };
220187 };
221188 };
dep/reflex-platform/github.json+3−3
@@ -1,7 +1,7 @@
11{
22 "owner": "reflex-frp",
33 "repo": "reflex-platform",
4− "branch": "bump-jsaddle",
5− "rev": "a83ef44e06121b3352e79a8a88324a0df82e63fb",
6− "sha256": "1cr9r3isfihg638hxc8faayg9k40kw8bvlqrzc7r8haxvhhxn8ly"
4+ "branch": "reunification",
5+ "rev": "4e669e6a9ab2b65e53da71eeace698d896aea3dd",
6+ "sha256": "1dq7pdwiv0i9xy78r2jry70vffghgapsmhj86vkp3ri2js9nra4n"
77}
lib/asset/manifest/src/Obelisk/Asset/Gather.hs−1
@@ -13,7 +13,6 @@ import Data.Char
1313import Data.Digest.Pure.SHA
1414import Data.Map (Map)
1515import qualified Data.Map as Map
16−import Data.Monoid
1716import qualified Data.Text as T
1817import Data.Text.Encoding
1918import qualified Data.Vector.Unboxed as UV
lib/asset/manifest/src/Obelisk/Asset/Promoted.hs−1
@@ -18,7 +18,6 @@ import qualified Data.Sequence as Seq
1818import Control.Monad.Trans.Writer
1919import System.FilePath
2020import System.Directory
21−import Data.Monoid
2221import Data.Text (Text)
2322import qualified Data.Text as T
2423import qualified Data.Text.IO as T
lib/cliapp/src/Obelisk/CliApp.hs+1
@@ -12,6 +12,7 @@ module Obelisk.CliApp
1212 , CliConfig
1313 , HasCliConfig
1414 , getCliConfig
15+ , Output
1516
1617 -- .Spinner
1718 , withSpinner
lib/command/src/Obelisk/App.hs+4−3
@@ -11,8 +11,9 @@ import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
1111import Control.Monad.Reader (MonadIO, ReaderT (..), ask, runReaderT)
1212import Control.Monad.Trans.Class (lift)
1313import System.Directory (XdgDirectory (XdgData), getXdgDirectory)
14+import Control.Monad.Log (MonadLog)
1415
15−import Obelisk.CliApp (Cli, CliConfig, CliT, HasCliConfig, getCliConfig, runCli)
16+import Obelisk.CliApp (CliConfig, CliT, HasCliConfig, getCliConfig, runCli, Output)
1617
1718newtype Obelisk = Obelisk
1819 { _obelisk_cliConfig :: CliConfig
@@ -25,7 +26,7 @@ newtype ObeliskT m a = ObeliskT
2526 ( Functor, Applicative, Monad, MonadIO, MonadThrow, MonadCatch, MonadMask
2627 , HasObelisk, HasCliConfig)
2728
28−deriving instance Monad m => Cli (ObeliskT m)
29+deriving instance Monad m => MonadLog Output (ObeliskT m)
2930
3031class HasObelisk m where
3132 getObelisk :: m Obelisk
@@ -43,7 +44,7 @@ runObelisk c =
4344 . unObeliskT
4445
4546type MonadObelisk m =
46− ( Cli m
47+ ( MonadLog Output m
4748 , HasCliConfig m
4849 , HasObelisk m
4950 , MonadIO m
lib/command/src/Obelisk/Command.hs−1
@@ -16,7 +16,6 @@ import qualified Data.ByteString.Base16 as Base16
1616import qualified Data.ByteString.Lazy as LBS
1717import Data.List
1818import Data.Maybe (catMaybes, listToMaybe)
19−import Data.Monoid
2019import Data.Text (Text)
2120import qualified Data.Text as T
2221import Data.Text.Encoding
lib/command/src/Obelisk/Command/Deploy.hs+1−2
@@ -13,7 +13,6 @@ import Data.Bits
1313import Data.Default
1414import qualified Data.Map as Map
1515import Data.Maybe
16−import Data.Monoid
1716import qualified Data.Text as T
1817import qualified Data.Text.IO as T
1918import System.Directory
@@ -94,7 +93,7 @@ deployPush deployPath getNixBuilders = do
9493 buildOutput <- nixBuild $ def
9594 { _nixBuildConfig_target = Target
9695 { _target_path = srcPath
97− , _target_attr = Just "server"
96+ , _target_attr = Just "server.system"
9897 }
9998 , _nixBuildConfig_outLink = OutLink_None
10099 , _nixBuildConfig_args =
lib/command/src/Obelisk/Command/Project.hs−1
@@ -20,7 +20,6 @@ import Control.Monad.IO.Class (liftIO)
2020import Control.Monad.State
2121import Data.Bits
2222import Data.Function (on)
23−import Data.Monoid
2423import qualified Data.Text as T
2524import System.Directory
2625import System.FilePath
lib/command/src/Obelisk/Command/Run.hs+13−10
@@ -13,18 +13,19 @@ import Data.Either
1313import Data.List
1414import Data.List.NonEmpty as NE
1515import Data.Maybe
16−import Data.Monoid
1716import qualified Data.Text as T
18−import Distribution.PackageDescription.Parse (ParseResult (..), parseGenericPackageDescription)
17+import Distribution.PackageDescription.Parsec (parseGenericPackageDescription)
18+import Distribution.Parsec.ParseResult (runParseResult)
1919import Distribution.Types.BuildInfo
2020import Distribution.Types.CondTree
2121import Distribution.Types.GenericPackageDescription
2222import Distribution.Types.Library
23−import Distribution.Utils.Generic (withUTF8FileContents)
23+import Distribution.Utils.Generic (withUTF8FileContents, toUTF8BS)
2424import Network.Socket
2525import System.Directory
2626import System.FilePath
2727import System.IO.Temp (withSystemTempDirectory)
28+import Data.ByteString (ByteString)
2829
2930import Obelisk.App (MonadObelisk, ObeliskT)
3031import Obelisk.CliApp (CliT (..), HasCliConfig, Severity (..), callCommand, failWith, getCliConfig, putLog,
@@ -59,21 +60,23 @@ parseHsSrcDir cabalFp = do
5960 if exists
6061 then do
6162 withUTF8FileContentsM cabalFp $ \cabal -> do
62− case parseGenericPackageDescription cabal of
63− ParseOk warnings gpkg -> do
64− mapM_ (putLog Warning) $ fmap (T.pack . show) warnings
63+ let (warnings, result) = runParseResult $ parseGenericPackageDescription cabal
64+ mapM_ (putLog Warning) $ fmap (T.pack . show) warnings
65+ case result of
66+ Right gpkg -> do
6567 return $ do
6668 (_, lib) <- simplifyCondTree (const $ pure True) <$> condLibrary gpkg
6769 pure $ fromMaybe (pure ".") $ NE.nonEmpty $ hsSourceDirs $ libBuildInfo lib
68− ParseFailed e -> do
69− putLog Error $ T.pack $ "Failed to parse cabal file: " <> show e
70+ Left (_, errors) -> do
71+ putLog Error $ T.pack "Failed to parse cabal file: "
72+ mapM_ (putLog Error) $ fmap (T.pack . show) errors
7073 return Nothing
7174 else return Nothing
7275
73−withUTF8FileContentsM :: (MonadIO m, HasCliConfig m) => FilePath -> (String -> CliT IO a) -> m a
76+withUTF8FileContentsM :: (MonadIO m, HasCliConfig m) => FilePath -> (ByteString -> CliT IO a) -> m a
7477withUTF8FileContentsM fp f = do
7578 c <- getCliConfig
76− liftIO $ withUTF8FileContents fp $ runCli c . f
79+ liftIO $ withUTF8FileContents fp $ runCli c . f . toUTF8BS
7780
7881-- | Create ghci configuration to load the given packages
7982withGhciScript
lib/command/src/Obelisk/Command/Thunk.hs−1
@@ -50,7 +50,6 @@ import Data.List.NonEmpty (NonEmpty (..))
5050import qualified Data.List.NonEmpty as NonEmpty
5151import qualified Data.Map as Map
5252import Data.Maybe
53−import Data.Monoid
5453import Data.Set (Set)
5554import qualified Data.Set as Set
5655import Data.Text (Text)
lib/command/src/Obelisk/Command/Upgrade.hs+1−1
@@ -32,7 +32,7 @@ import Obelisk.Command.Upgrade.Hash
3232import Obelisk.Migration
3333
3434newtype HandOffAction = HandoffAction Any
35− deriving (Monoid, Ord, Eq, Show)
35+ deriving (Monoid, Semigroup, Ord, Eq, Show)
3636
3737instance Action HandOffAction where
3838 parseEdgeMeta = HandoffAction . Any . (== "True")
lib/route/src/Obelisk/Route.hs+1−1
@@ -204,7 +204,7 @@ chainEncoder cons this rest = Encoder $ do
204204 }
205205
206206--TODO: Do this in terms of a lens instead
207−lensEncoder :: Applicative parse => (b -> [a] -> b) -> (b -> [a]) -> ValidEncoder parse (c, [a]) [a] -> ValidEncoder parse (c, b) b
207+lensEncoder :: Monad parse => (b -> [a] -> b) -> (b -> [a]) -> ValidEncoder parse (c, [a]) [a] -> ValidEncoder parse (c, b) b
208208lensEncoder set get g = ValidEncoder
209209 { _validEncoder_encode = \(ma, b) -> set b $ _validEncoder_encode g (ma, get b)
210210 , _validEncoder_decode = \b -> do