Skip to content

Commit 6a9261f

Browse files
committed
fix: a docker section in global/user config caused 'stack new' to try to start a container
1 parent 3e9b1a8 commit 6a9261f

4 files changed

Lines changed: 14 additions & 8 deletions

File tree

src/Stack/Config.hs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,13 @@ loadConfig :: (MonadLogger m,MonadIO m,MonadCatch m,MonadThrow m,MonadBaseContro
268268
loadConfig configArgs mstackYaml = do
269269
stackRoot <- determineStackRoot
270270
userConfigPath <- getDefaultUserConfigPath stackRoot
271-
extraConfigs <- getExtraConfigs userConfigPath >>= mapM loadYaml
271+
extraConfigs0 <- getExtraConfigs userConfigPath >>= mapM loadYaml
272+
let extraConfigs =
273+
-- non-project config files' existence of a docker section should never default docker
274+
-- to enabled, so make it look like they didn't exist
275+
map (\c -> c {configMonoidDockerOpts =
276+
(configMonoidDockerOpts c) {dockerMonoidDefaultEnable = False}})
277+
extraConfigs0
272278
mproject <- loadProjectConfig mstackYaml
273279
config <- configFromConfigMonoid stackRoot userConfigPath (fmap (\(proj, _, _) -> proj) mproject) $ mconcat $
274280
case mproject of

src/Stack/Config/Docker.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ dockerOptsFromMonoid
1919
=> Maybe Project -> Path Abs Dir -> DockerOptsMonoid -> m DockerOpts
2020
dockerOptsFromMonoid mproject stackRoot DockerOptsMonoid{..} = do
2121
let dockerEnable =
22-
fromMaybe (fromMaybe False dockerMonoidExists) dockerMonoidEnable
22+
fromMaybe dockerMonoidDefaultEnable dockerMonoidEnable
2323
dockerImage =
2424
let defaultTag =
2525
case mproject of

src/Stack/Options.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ configOptsParser docker =
293293
dockerOptsParser :: Bool -> Parser DockerOptsMonoid
294294
dockerOptsParser showOptions =
295295
DockerOptsMonoid
296-
<$> pure Nothing
296+
<$> pure False
297297
<*> maybeBoolFlags dockerCmdName
298298
"using a Docker container"
299299
hide

src/Stack/Types/Docker.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ data DockerOpts = DockerOpts
5252
-- | An uninterpreted representation of docker options.
5353
-- Configurations may be "cascaded" using mappend (left-biased).
5454
data DockerOptsMonoid = DockerOptsMonoid
55-
{dockerMonoidExists :: !(Maybe Bool)
56-
-- ^ Does a @docker:@ section exist in the top-level (usually project) config?
55+
{dockerMonoidDefaultEnable :: !Bool
56+
-- ^ Should Docker be defaulted to enabled (does @docker:@ section exist in the config)?
5757
,dockerMonoidEnable :: !(Maybe Bool)
5858
-- ^ Is using Docker enabled?
5959
,dockerMonoidRepoOrImage :: !(Maybe DockerMonoidRepoOrImage)
@@ -92,7 +92,7 @@ data DockerOptsMonoid = DockerOptsMonoid
9292
-- | Decode uninterpreted docker options from JSON/YAML.
9393
instance FromJSON (DockerOptsMonoid, [JSONWarning]) where
9494
parseJSON = withObjectWarnings "DockerOptsMonoid"
95-
(\o -> do dockerMonoidExists <- pure (Just True)
95+
(\o -> do dockerMonoidDefaultEnable <- pure True
9696
dockerMonoidEnable <- o ..:? dockerEnableArgName
9797
dockerMonoidRepoOrImage <- ((Just . DockerMonoidImage) <$> o ..: dockerImageArgName) <|>
9898
((Just . DockerMonoidRepo) <$> o ..: dockerRepoArgName) <|>
@@ -115,7 +115,7 @@ instance FromJSON (DockerOptsMonoid, [JSONWarning]) where
115115
-- | Left-biased combine Docker options
116116
instance Monoid DockerOptsMonoid where
117117
mempty = DockerOptsMonoid
118-
{dockerMonoidExists = Just False
118+
{dockerMonoidDefaultEnable = False
119119
,dockerMonoidEnable = Nothing
120120
,dockerMonoidRepoOrImage = Nothing
121121
,dockerMonoidRegistryLogin = Nothing
@@ -133,7 +133,7 @@ instance Monoid DockerOptsMonoid where
133133
,dockerMonoidSetUser = Nothing
134134
}
135135
mappend l r = DockerOptsMonoid
136-
{dockerMonoidExists = dockerMonoidExists l <|> dockerMonoidExists r
136+
{dockerMonoidDefaultEnable = dockerMonoidDefaultEnable l || dockerMonoidDefaultEnable r
137137
,dockerMonoidEnable = dockerMonoidEnable l <|> dockerMonoidEnable r
138138
,dockerMonoidRepoOrImage = dockerMonoidRepoOrImage l <|> dockerMonoidRepoOrImage r
139139
,dockerMonoidRegistryLogin = dockerMonoidRegistryLogin l <|> dockerMonoidRegistryLogin r

0 commit comments

Comments
 (0)