@@ -32,6 +32,8 @@ module Obelisk.Command.Nix
3232
3333 , boolArg
3434 , nixCmd
35+ , nixCmdProc
36+ , nixCmdProc'
3537 , rawArg
3638 , runNixShellConfig
3739 , strArg
@@ -188,27 +190,35 @@ runNixShellConfig cfg = mconcat
188190 ["--run", run] | run <- maybeToList $ cfg ^. nixShellConfig_run
189191 ]
190192
191−nixCmd :: MonadObelisk m => NixCmd -> m FilePath
192−nixCmd cmdCfg = withSpinner' ("Running " <> cmd <> desc) (Just $ const $ "Built " <> desc) $ do
193− output <- readProcessAndLogStderr Debug $ proc (T.unpack cmd) options
194− -- Remove final newline that Nix appends
195− Just (outPath, '\n') <- pure $ T.unsnoc output
196− pure $ T.unpack outPath
193+nixCmdProc :: NixCmd -> ProcessSpec
194+nixCmdProc = fst . nixCmdProc'
195+
196+nixCmdProc' :: NixCmd -> (ProcessSpec, T.Text)
197+nixCmdProc' cmdCfg = (proc (T.unpack cmd) options, cmd)
197198 where
198− (cmd, options, commonCfg) = case cmdCfg of
199+ (cmd, options) = case cmdCfg of
199200 NixCmd_Build cfg' ->
200201 ( "nix-build"
201202 , runNixBuildConfig cfg'
202− , cfg' ^. nixCommonConfig
203203 )
204204 NixCmd_Instantiate cfg' ->
205205 ( "nix-instantiate"
206206 , runNixInstantiateConfig cfg'
207− , cfg' ^. nixCommonConfig
208207 )
208+
209+nixCmd :: MonadObelisk m => NixCmd -> m FilePath
210+nixCmd cmdCfg = withSpinner' ("Running " <> cmd <> desc) (Just $ const $ "Built " <> desc) $ do
211+ output <- readProcessAndLogStderr Debug cmdProc
212+ -- Remove final newline that Nix appends
213+ Just (outPath, '\n') <- pure $ T.unsnoc output
214+ pure $ T.unpack outPath
215+ where
216+ (cmdProc, cmd) = nixCmdProc' cmdCfg
217+ commonCfg = case cmdCfg of
218+ NixCmd_Build cfg' -> cfg' ^. nixCommonConfig
219+ NixCmd_Instantiate cfg' -> cfg' ^. nixCommonConfig
209220 path = commonCfg ^. nixCmdConfig_target . target_path
210221 desc = T.pack $ mconcat $ catMaybes
211− [ (" on " <>) <$> path
222+ [ ("on " <>) <$> path
212223 , (\a -> " [" <> a <> "]") <$> (commonCfg ^. nixCmdConfig_target . target_attr)
213224 ]
214−