on master help sign in
Move Obelisk.CLI to `lib/cliapp`
commitbcf704c845313fd4139e64489a1ecf0a143636fb authorSridhar Ratnakumar <srid@srid.ca> dateTue 29 May 2018, 14:31 (8 years ago) parent70ac8ef
9 files changed+54−20
default.nix+2 lib/cliapp/cliapp.cabal+32 lib/command/src/Obelisk/CLI.hs → lib/cliapp/src/CliApp.hs+5−5 lib/command/src/Obelisk/CLI/Demo.hs → lib/cliapp/src/CliApp/Demo.hs+2−2 lib/command/src/Obelisk/CLI/Logging.hs → lib/cliapp/src/CliApp/Logging.hs+3−3 lib/command/src/Obelisk/CLI/Process.hs → lib/cliapp/src/CliApp/Process.hs+3−3 lib/command/src/Obelisk/CLI/Spinner.hs → lib/cliapp/src/CliApp/Spinner.hs+4−4 lib/command/src/Obelisk/CLI/TerminalString.hs → lib/cliapp/src/CliApp/TerminalString.hs+1−1 lib/command/src/Obelisk/CLI/Types.hs → lib/cliapp/src/CliApp/Types.hs+2−2
default.nix+2
@@ -93,6 +93,7 @@ let #TODO: Upstream
9393 addLibs = self: super: {
9494 obelisk-asset-manifest = self.callCabal2nix "obelisk-asset-manifest" (hackGet ./lib/asset + "/manifest") {};
9595 obelisk-asset-serve-snap = self.callCabal2nix "obelisk-asset-serve-snap" (hackGet ./lib/asset + "/serve-snap") {};
96+ cliapp = self.callCabal2nix "cliapp" (cleanSource ./lib/cliapp) {};
9697 obelisk-backend = self.callCabal2nix "obelisk-backend" (cleanSource ./lib/backend) {};
9798 obelisk-command = (self.callCabal2nix "obelisk-command" (cleanSource ./lib/command) {}).override { Cabal = super.Cabal_2_0_0_2; };
9899 obelisk-executable-config = executableConfig.haskellPackage self;
@@ -110,6 +111,7 @@ rec {
110111 inherit reflex-platform;
111112 inherit (reflex-platform) nixpkgs pinBuildInputs;
112113 path = reflex-platform.filterGit ./.;
114+ obelisk = ghcObelisk;
113115 command = ghcObelisk.obelisk-command;
114116 shell = pinBuildInputs "obelisk-shell" ([
115117 command
lib/cliapp/cliapp.cabalnew file+32
@@ -0,0 +1,32 @@
1+name: cliapp
2+version: 0.1
3+license: BSD3
4+build-type: Simple
5+cabal-version: >=1.2
6+
7+library
8+ hs-source-dirs: src
9+ build-depends:
10+ ansi-terminal
11+ , base
12+ , bytestring
13+ , exceptions
14+ , io-streams
15+ , logging-effect
16+ , monad-loops
17+ , mtl
18+ , process
19+ , terminal-size
20+ , text
21+ , time
22+ , transformers
23+ exposed-modules:
24+ CliApp
25+ CliApp.Demo
26+ other-modules:
27+ CliApp.Logging
28+ CliApp.Process
29+ CliApp.Spinner
30+ CliApp.TerminalString
31+ CliApp.Types
32+ ghc-options: -Wall -fobject-code
lib/command/src/Obelisk/CLI.hs → lib/cliapp/src/CliApp.hsrenamed+5−5
@@ -3,7 +3,7 @@
33-- See Demo.hs for an example
44--
55-- This package should eventually be made its own library.
6−module Obelisk.CLI
6+module CliApp
77 (
88 -- .Types
99 Cli
@@ -36,7 +36,7 @@ module Obelisk.CLI
3636
3737import Control.Monad.Log (Severity (..))
3838
39−import Obelisk.CLI.Logging
40−import Obelisk.CLI.Process
41−import Obelisk.CLI.Spinner
42−import Obelisk.CLI.Types
39+import CliApp.Logging
40+import CliApp.Process
41+import CliApp.Spinner
42+import CliApp.Types
lib/command/src/Obelisk/CLI/Demo.hs → lib/cliapp/src/CliApp/Demo.hsrenamed+2−2
@@ -1,6 +1,6 @@
11{-# LANGUAGE FlexibleContexts #-}
22{-# LANGUAGE OverloadedStrings #-}
3−module Obelisk.CLI.Demo where
3+module CliApp.Demo where
44
55import Control.Concurrent (threadDelay)
66import Control.Monad.IO.Class (liftIO)
@@ -11,7 +11,7 @@ import System.Process (proc)
1111
1212import Control.Monad.Catch (MonadMask)
1313
14−import Obelisk.CLI
14+import CliApp
1515
1616cliDemo
1717 :: (MonadIO m, MonadMask m, Cli m, HasCliConfig m)
lib/command/src/Obelisk/CLI/Logging.hs → lib/cliapp/src/CliApp/Logging.hsrenamed+3−3
@@ -7,7 +7,7 @@
77{-# LANGUAGE ScopedTypeVariables #-}
88-- | Provides a logging handler that facilitates safe ouputting to terminal using MVar based locking.
99-- | Spinner.hs and Process.hs work on this guarantee.
10−module Obelisk.CLI.Logging where
10+module CliApp.Logging where
1111
1212import Control.Concurrent (ThreadId, forkIO, killThread, threadDelay)
1313import Control.Concurrent.MVar (modifyMVar_, newMVar)
@@ -28,8 +28,8 @@ import System.Console.ANSI (Color (Red, White, Yellow), ColorIntensity (Vivid),
2828import System.Exit (ExitCode (..), exitWith)
2929import System.IO (BufferMode (NoBuffering), hFlush, hReady, hSetBuffering, stdin, stdout)
3030
31−import qualified Obelisk.CLI.TerminalString as TS
32−import Obelisk.CLI.Types
31+import qualified CliApp.TerminalString as TS
32+import CliApp.Types
3333
3434newCliConfig :: Severity -> Bool -> Bool -> IO CliConfig
3535newCliConfig sev noColor noSpinner = do
lib/command/src/Obelisk/CLI/Process.hs → lib/cliapp/src/CliApp/Process.hsrenamed+3−3
@@ -8,7 +8,7 @@
88
99-- | An extension of `System.Process` that integrates with logging (`Obelisk.CLI.Logging`)
1010-- and is thus spinner friendly.
11−module Obelisk.CLI.Process
11+module CliApp.Process
1212 ( readProcessAndLogStderr
1313 , callProcessAndLogOutput
1414 , createProcess
@@ -37,9 +37,9 @@ import System.Process (CreateProcess, ProcessHandle, StdStream (CreatePipe), cmd
3737 waitForProcess)
3838import qualified System.Process as Process
3939
40+import CliApp.Logging (failWith, putLog, putLogRaw)
41+import CliApp.Types (Cli)
4042import Control.Monad.Log (Severity (..))
41−import Obelisk.CLI.Logging (failWith, putLog, putLogRaw)
42−import Obelisk.CLI.Types (Cli)
4343
4444-- | Like `System.Process.readProcess` but logs the stderr instead of letting the external process inherit it.
4545readProcessAndLogStderr
lib/command/src/Obelisk/CLI/Spinner.hs → lib/cliapp/src/CliApp/Spinner.hsrenamed+4−4
@@ -2,7 +2,7 @@
22{-# LANGUAGE MultiParamTypeClasses #-}
33{-# LANGUAGE OverloadedStrings #-}
44-- | Provides a simple CLI spinner that interoperates cleanly with the rest of the logging output.
5−module Obelisk.CLI.Spinner (withSpinner) where
5+module CliApp.Spinner (withSpinner) where
66
77import Control.Concurrent (killThread, threadDelay)
88import Control.Monad (forM_, (>=>))
@@ -15,9 +15,9 @@ import qualified Data.List as L
1515import Data.Text (Text)
1616import System.Console.ANSI (Color (Blue, Cyan, Green, Red))
1717
18−import Obelisk.CLI.Logging (allowUserToMakeLoggingVerbose, fork)
19−import Obelisk.CLI.TerminalString (TerminalString (..), enquiryCode)
20−import Obelisk.CLI.Types (Cli, CliConfig (..), HasCliConfig, Output (..), getCliConfig)
18+import CliApp.Logging (allowUserToMakeLoggingVerbose, fork)
19+import CliApp.TerminalString (TerminalString (..), enquiryCode)
20+import CliApp.Types (Cli, CliConfig (..), HasCliConfig, Output (..), getCliConfig)
2121
2222-- | Run an action with a CLI spinner.
2323withSpinner
lib/command/src/Obelisk/CLI/TerminalString.hs → lib/cliapp/src/CliApp/TerminalString.hsrenamed+1−1
@@ -2,7 +2,7 @@
22{-# LANGUAGE MultiParamTypeClasses #-}
33{-# LANGUAGE OverloadedStrings #-}
44-- | Types and functions dealing with strings to be printed on terminal.
5−module Obelisk.CLI.TerminalString
5+module CliApp.TerminalString
66 ( TerminalString(..)
77 , render
88 , putStrWithSGR
lib/command/src/Obelisk/CLI/Types.hs → lib/cliapp/src/CliApp/Types.hsrenamed+2−2
@@ -3,7 +3,7 @@
33{-# LANGUAGE FlexibleInstances #-}
44{-# LANGUAGE GeneralizedNewtypeDeriving #-}
55{-# LANGUAGE MultiParamTypeClasses #-}
6−module Obelisk.CLI.Types where
6+module CliApp.Types where
77
88import Control.Concurrent.MVar (MVar)
99import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
@@ -12,7 +12,7 @@ import Control.Monad.Reader (MonadIO, ReaderT (..), ask)
1212import Data.IORef (IORef)
1313import Data.Text (Text)
1414
15−import Obelisk.CLI.TerminalString (TerminalString)
15+import CliApp.TerminalString (TerminalString)
1616
1717data CliConfig = CliConfig
1818 { _cliConfig_logLevel :: IORef Severity -- We are capable of changing the log level at runtime