Skip to content

Commit c4e4edb

Browse files
authored
Merge pull request #4610 from fgaz/new-run/datafiles
Add datadir env var before running the exe
2 parents c515bb0 + de31b2a commit c4e4edb

File tree

7 files changed

+45
-4
lines changed

7 files changed

+45
-4
lines changed

cabal-install/Distribution/Client/CmdRun.hs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,12 @@ import Distribution.Types.Executable
4949
import Distribution.Types.UnqualComponentName
5050
( UnqualComponentName, unUnqualComponentName )
5151
import Distribution.Types.PackageDescription
52-
( PackageDescription(executables) )
52+
( PackageDescription(executables, dataDir) )
5353
import Distribution.Simple.Program.Run
54-
( runProgramInvocation, simpleProgramInvocation )
54+
( runProgramInvocation, ProgramInvocation(..),
55+
emptyProgramInvocation )
56+
import Distribution.Simple.Build.PathsModule
57+
( pkgPathEnvVar )
5558
import Distribution.Types.PackageId
5659
( PackageIdentifier(..) )
5760

@@ -61,6 +64,8 @@ import Data.Function
6164
( on )
6265
import System.FilePath
6366
( (</>) )
67+
import System.Directory
68+
( getCurrentDirectory )
6469

6570

6671
runCommand :: CommandUI (ConfigFlags, ConfigExFlags, InstallFlags, HaddockFlags)
@@ -227,10 +232,17 @@ runAction (configFlags, configExFlags, installFlags, haddockFlags)
227232
pkg
228233
exe
229234
</> exe
230-
let args = drop 1 targetStrings
235+
curDir <- getCurrentDirectory
236+
let dataDirEnvVar = (pkgPathEnvVar (elabPkgDescription pkg) "datadir",
237+
Just $ curDir </> dataDir (elabPkgDescription pkg))
238+
args = drop 1 targetStrings
231239
runProgramInvocation
232240
verbosity
233-
(simpleProgramInvocation exePath args)
241+
emptyProgramInvocation {
242+
progInvokePath = exePath,
243+
progInvokeArgs = args,
244+
progInvokeEnv = [dataDirEnvVar]
245+
}
234246
where
235247
verbosity = fromFlagOrDefault normal (configVerbosity configFlags)
236248
cliConfig = commandLineFlagsToProjectConfig
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Datafiles
2+
version: 1.0
3+
build-type: Simple
4+
cabal-version: >= 1.10
5+
data-dir: data
6+
data-files: hello.txt
7+
8+
executable foo
9+
main-is: Main.hs
10+
build-depends: base
11+
default-language: Haskell2010
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import Paths_Datafiles
2+
3+
main = putStrLn =<< readFile =<< getDataFileName "hello.txt"
4+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# cabal new-run
2+
Resolving dependencies...
3+
Build profile: with-compiler: ghc-<GHCVER>, optimisation: NormalOptimisation
4+
In order, the following will be built:
5+
- Datafiles-1.0 (exe:foo) (first run)
6+
Configuring executable 'foo' for Datafiles-1.0..
7+
Preprocessing executable 'foo' for Datafiles-1.0..
8+
Building executable 'foo' for Datafiles-1.0..
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
packages: .
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import Test.Cabal.Prelude
2+
main = cabalTest $
3+
cabal' "new-run" ["foo"] >>= assertOutputContains "Hello World"
4+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello World

0 commit comments

Comments
 (0)