Skip to content

Commit d0e4260

Browse files
committed
Treat stackProgName as a constant
1 parent 805e1ef commit d0e4260

File tree

18 files changed

+41
-19
lines changed

18 files changed

+41
-19
lines changed

src/Data/Attoparsec/Interpreter.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ import Conduit ( decodeUtf8C, withSourceFile )
6161
import Data.Conduit.Attoparsec ( ParseError (..), Position (..), sinkParserEither )
6262
import Data.List ( intercalate )
6363
import Data.Text ( pack )
64+
import Stack.Constants ( stackProgName )
6465
import Stack.Prelude
6566
import System.FilePath ( takeExtension )
6667
import System.IO ( hPutStrLn )

src/Stack/Build/Execute.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ import Stack.Constants
113113
, relDirSetupExeCache, relDirSetupExeSrc, relFileBuildLock
114114
, relFileConfigure, relFileSetupHs, relFileSetupLhs
115115
, relFileSetupLower, relFileSetupMacrosH, setupGhciShimCode
116-
, testGhcEnvRelFile
116+
, stackProgName, testGhcEnvRelFile
117117
)
118118
import Stack.Constants.Config
119119
( distDirFromDir, distRelativeDir, hpcDirFromDir

src/Stack/Config.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ import Stack.Constants
8585
, platformVariantEnvVar, relDirBin, relDirStackWork
8686
, relFileReadmeTxt, relFileStorage, relDirPantry
8787
, relDirPrograms, relDirStackProgName, relDirUpperPrograms
88-
, stackDeveloperModeDefault, stackDotYaml, stackRootEnvVar
89-
, stackWorkEnvVar, stackXdgEnvVar
88+
, stackDeveloperModeDefault, stackDotYaml, stackProgName
89+
, stackRootEnvVar, stackWorkEnvVar, stackXdgEnvVar
9090
)
9191
import Stack.Lock ( lockCachedWanted )
9292
import Stack.Prelude

src/Stack/Constants.hs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ module Stack.Constants
1010
, buildPlanCacheDir
1111
, haskellFileExts
1212
, haskellDefaultPreprocessorExts
13+
, stackProgName
14+
, stackProgName'
1315
, stackDotYaml
1416
, stackWorkEnvVar
1517
, stackRootEnvVar
@@ -134,10 +136,12 @@ import Data.ByteString.Builder ( byteString )
134136
import Data.Char ( toUpper )
135137
import Data.FileEmbed ( embedFile, makeRelativeToProject )
136138
import qualified Data.Set as Set
139+
import qualified Data.Text as T
137140
import Distribution.Package ( mkPackageName )
138141
import Hpack.Config ( packageConfig )
139142
import qualified Language.Haskell.TH.Syntax as TH ( runIO, lift )
140143
import Path ( (</>), mkRelDir, mkRelFile, parseAbsFile )
144+
import Stack.Constants.StackProgName ( stackProgName )
141145
import Stack.Constants.UsrLibDirs ( usrLibDirs )
142146
import Stack.Prelude
143147
import Stack.Types.Compiler ( WhichCompiler (..) )
@@ -154,6 +158,10 @@ instance Exception ConstantsException where
154158
displayException WiredInPackagesNotParsedBug = bugReport "[S-6057]"
155159
"Parse error in wiredInPackages."
156160

161+
-- | Name of the Stack program.
162+
stackProgName' :: Text
163+
stackProgName' = T.pack stackProgName
164+
157165
-- | Extensions used for Haskell modules. Excludes preprocessor ones.
158166
haskellFileExts :: [Text]
159167
haskellFileExts = ["hs", "hsc", "lhs"]
@@ -535,6 +543,9 @@ relDirUnderHome = $(mkRelDir "_home")
535543
relDirSrc :: Path Rel Dir
536544
relDirSrc = $(mkRelDir "src")
537545

546+
relDirStack :: Path Rel File
547+
relDirStack = $(mkRelFile "stack")
548+
538549
relFileLibtinfoSo5 :: Path Rel File
539550
relFileLibtinfoSo5 = $(mkRelFile "libtinfo.so.5")
540551

src/Stack/Constants/StackProgName.hs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{-# LANGUAGE NoImplicitPrelude #-}
2+
3+
module Stack.Constants.StackProgName
4+
( stackProgName
5+
) where
6+
7+
import Stack.Prelude ( String )
8+
9+
-- | Name of the Stack program.
10+
11+
-- NOTE: Defined in this module rather than in "Stack.Constants", due to
12+
-- GHC stage restrictions and the use of Template Haskell.
13+
stackProgName :: String
14+
stackProgName = "stack"

src/Stack/Ghci.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import Stack.Build.Source
3939
import Stack.Build.Target ( NeedTargets (..), parseTargets )
4040
import Stack.Constants
4141
( relDirHaskellStackGhci, relFileCabalMacrosH
42-
, relFileGhciScript
42+
, relFileGhciScript, stackProgName'
4343
)
4444
import Stack.Constants.Config ( ghciDirL, objectInterfaceDirL )
4545
import Stack.Ghci.Script

src/Stack/Hoogle.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import qualified RIO.Map as Map
1919
import RIO.Process ( findExecutable, proc, readProcess_, runProcess_)
2020
import qualified Stack.Build ( build )
2121
import Stack.Build.Target ( NeedTargets (NeedTargets) )
22+
import Stack.Constants ( stackProgName' )
2223
import Stack.Prelude
2324
import Stack.Runners
2425
( ShouldReexec (..), withConfig, withDefaultEnvConfig

src/Stack/Init.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import Stack.BuildPlan
4141
, removeSrcPkgDefaultFlags, selectBestSnapshot
4242
)
4343
import Stack.Config ( getSnapshots, makeConcreteResolver )
44-
import Stack.Constants ( stackDotYaml )
44+
import Stack.Constants ( stackDotYaml, stackProgName' )
4545
import Stack.Prelude
4646
import Stack.Runners
4747
( ShouldReexec (..), withConfig, withGlobalProject )

src/Stack/Options/DockerParser.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import Options.Applicative.Builder.Extra
1717
, firstBoolFlagsFalse, firstBoolFlagsNoDefault
1818
, firstBoolFlagsTrue, optionalFirst
1919
)
20+
import Stack.Constants ( stackProgName )
2021
import Stack.Docker ( dockerCmdName )
2122
import Stack.Prelude
2223
import Stack.Options.Utils ( hideMods )

src/Stack/Prelude.hs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ module Stack.Prelude
1313
, prompt
1414
, promptPassword
1515
, promptBool
16-
, stackProgName
17-
, stackProgName'
1816
, FirstTrue (..)
1917
, fromFirstTrue
2018
, defaultFirstTrue
@@ -259,16 +257,6 @@ promptBool txt = liftIO $ do
259257
T.putStrLn "Please press either 'y' or 'n', and then enter."
260258
promptBool txt
261259

262-
-- | Name of the 'stack' program.
263-
--
264-
-- NOTE: Should be defined in "Stack.Constants", but not doing so due to the
265-
-- GHC stage restrictions.
266-
stackProgName :: String
267-
stackProgName = "stack"
268-
269-
stackProgName' :: Text
270-
stackProgName' = T.pack stackProgName
271-
272260
-- | Like @First Bool@, but the default is @True@.
273261
newtype FirstTrue
274262
= FirstTrue { getFirstTrue :: Maybe Bool }

0 commit comments

Comments
 (0)