Refine project finding for stack using STACK_ENV
This commit is contained in:
parent
ddfd791679
commit
2f31cf431a
@ -25,6 +25,7 @@ import Control.Monad.Trans.Maybe
|
|||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import System.Directory
|
import System.Directory
|
||||||
import System.FilePath
|
import System.FilePath
|
||||||
|
import System.Environment
|
||||||
import Prelude
|
import Prelude
|
||||||
import Control.Monad.Trans.Journal (runJournalT)
|
import Control.Monad.Trans.Journal (runJournalT)
|
||||||
|
|
||||||
@ -77,15 +78,17 @@ fillTempDir crdl = do
|
|||||||
cabalCradle ::
|
cabalCradle ::
|
||||||
(IOish m, GmLog m, GmOut m) => FilePath -> FilePath -> MaybeT m Cradle
|
(IOish m, GmLog m, GmOut m) => FilePath -> FilePath -> MaybeT m Cradle
|
||||||
cabalCradle cabalProg wdir = do
|
cabalCradle cabalProg wdir = do
|
||||||
-- If cabal doesn't exist the user probably wants to use something else
|
|
||||||
whenM ((==Nothing) <$> liftIO (findExecutable cabalProg)) $ do
|
|
||||||
gmLog GmInfo "" $ text "'dist/setup-config' exists but 'cabal' executable wasn't found"
|
|
||||||
mzero
|
|
||||||
|
|
||||||
cabalFile <- MaybeT $ liftIO $ findCabalFile wdir
|
cabalFile <- MaybeT $ liftIO $ findCabalFile wdir
|
||||||
let cabalDir = takeDirectory cabalFile
|
let cabalDir = takeDirectory cabalFile
|
||||||
|
|
||||||
gmLog GmInfo "" $ text "found Cabal project at" <+>: text cabalDir
|
gmLog GmInfo "" $ text "Found Cabal project at" <+>: text cabalDir
|
||||||
|
|
||||||
|
-- If cabal doesn't exist the user probably wants to use something else
|
||||||
|
whenM ((==Nothing) <$> liftIO (findExecutable cabalProg)) $ do
|
||||||
|
gmLog GmInfo "" $ text "'cabal' executable wasn't found, trying next project type"
|
||||||
|
mzero
|
||||||
|
|
||||||
|
gmLog GmInfo "" $ text "Using Cabal project at" <+>: text cabalDir
|
||||||
return Cradle {
|
return Cradle {
|
||||||
cradleProject = CabalProject
|
cradleProject = CabalProject
|
||||||
, cradleCurrentDir = wdir
|
, cradleCurrentDir = wdir
|
||||||
@ -103,26 +106,37 @@ stackCradle stackProg wdir = do
|
|||||||
mzero
|
mzero
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
-- If cabal doesn't exist the user probably wants to use something else
|
|
||||||
whenM ((==Nothing) <$> liftIO (findExecutable stackProg)) $ do
|
|
||||||
gmLog GmInfo "" $ text "'dist/setup-config' exists but 'cabal' executable wasn't found"
|
|
||||||
mzero
|
|
||||||
|
|
||||||
cabalFile <- MaybeT $ liftIO $ findCabalFile wdir
|
cabalFile <- MaybeT $ liftIO $ findCabalFile wdir
|
||||||
|
|
||||||
let cabalDir = takeDirectory cabalFile
|
let cabalDir = takeDirectory cabalFile
|
||||||
|
|
||||||
_stackConfigFile <- MaybeT $ liftIO $ findStackConfigFile cabalDir
|
_stackConfigFile <- MaybeT $ liftIO $ findStackConfigFile cabalDir
|
||||||
|
|
||||||
-- If dist/setup-config already exists the user probably wants to use cabal
|
gmLog GmInfo "" $ text "Found Stack project at" <+>: text cabalDir
|
||||||
-- rather than stack, or maybe that's just me ;)
|
|
||||||
whenM (liftIO $ doesFileExist $ cabalDir </> setupConfigPath "dist") $ do
|
stackExeSet <- liftIO $ isJust <$> lookupEnv "STACK_EXE"
|
||||||
gmLog GmWarning "" $ text "'dist/setup-config' exists, ignoring Stack and using cabal-install instead"
|
stackExeExists <- liftIO $ isJust <$> findExecutable stackProg
|
||||||
mzero
|
setupCfgExists <- liftIO $ doesFileExist $ cabalDir </> setupConfigPath "dist"
|
||||||
|
|
||||||
|
case (stackExeExists, stackExeSet) of
|
||||||
|
(False, True) -> do
|
||||||
|
gmLog GmWarning "" $ text "'stack' executable wasn't found but STACK_EXE is set, trying next project type"
|
||||||
|
mzero
|
||||||
|
|
||||||
|
(False, False) -> do
|
||||||
|
gmLog GmInfo "" $ text "'stack' executable wasn't found, trying next project type"
|
||||||
|
mzero
|
||||||
|
|
||||||
|
(True, True) -> do
|
||||||
|
gmLog GmWarning "" $ text "STACK_EXE set, preferring Stack project"
|
||||||
|
|
||||||
|
(True, False) | setupCfgExists -> do
|
||||||
|
gmLog GmWarning "" $ text "'dist/setup-config' exists, ignoring Stack project"
|
||||||
|
mzero
|
||||||
|
|
||||||
|
(True, False) -> return ()
|
||||||
|
|
||||||
senv <- MaybeT $ getStackEnv cabalDir
|
senv <- MaybeT $ getStackEnv cabalDir
|
||||||
|
|
||||||
gmLog GmInfo "" $ text "found Stack project at" <+>: text cabalDir
|
gmLog GmInfo "" $ text "Using Stack project at" <+>: text cabalDir
|
||||||
return Cradle {
|
return Cradle {
|
||||||
cradleProject = StackProject senv
|
cradleProject = StackProject senv
|
||||||
, cradleCurrentDir = wdir
|
, cradleCurrentDir = wdir
|
||||||
@ -149,7 +163,7 @@ stackCradleSpec stackProg wdir = do
|
|||||||
sandboxCradle :: (IOish m, GmLog m, GmOut m) => FilePath -> MaybeT m Cradle
|
sandboxCradle :: (IOish m, GmLog m, GmOut m) => FilePath -> MaybeT m Cradle
|
||||||
sandboxCradle wdir = do
|
sandboxCradle wdir = do
|
||||||
sbDir <- MaybeT $ liftIO $ findCabalSandboxDir wdir
|
sbDir <- MaybeT $ liftIO $ findCabalSandboxDir wdir
|
||||||
gmLog GmInfo "" $ text "Found sandbox project at" <+>: text sbDir
|
gmLog GmInfo "" $ text "Using sandbox project at" <+>: text sbDir
|
||||||
return Cradle {
|
return Cradle {
|
||||||
cradleProject = SandboxProject
|
cradleProject = SandboxProject
|
||||||
, cradleCurrentDir = wdir
|
, cradleCurrentDir = wdir
|
||||||
|
Loading…
Reference in New Issue
Block a user