Skip to content

Commit ba047a2

Browse files
committed
Added: Support for runtime working directories
1 parent 2268bda commit ba047a2

File tree

4 files changed

+8
-2
lines changed

4 files changed

+8
-2
lines changed

source/redub/api.d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -866,12 +866,14 @@ string getDubWorkspacePath()
866866

867867
int executeProgram(ProjectNode tree, string[] args)
868868
{
869+
import std.stdio;
869870
import std.path;
870871
import std.array:join;
871872
import std.process;
872873
import redub.command_generators.commons;
873874
return wait(spawnShell(
874-
escapeShellCommand(getOutputPath(tree.requirements.cfg, os)) ~ " "~ join(args, " ")
875+
escapeShellCommand(getOutputPath(tree.requirements.cfg, os)) ~ " "~ join(args, " "), stdin, stdout,
876+
stderr, null, Config.none, tree.requirements.cfg.runtimeWorkingDir
875877
)
876878
);
877879
}

source/redub/buildapi.d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import redub.package_searching.api;
88

99

1010
///vX.X.X
11-
enum RedubVersionOnly = "v1.25.2";
11+
enum RedubVersionOnly = "v1.25.3";
1212
///Redub vX.X.X
1313
enum RedubVersionShort = "Redub "~RedubVersionOnly;
1414
///Redub vX.X.X - Description
@@ -210,6 +210,7 @@ struct BuildConfiguration
210210
///When having those files, the build will use them instead of sourcePaths + sourceFiles
211211
@cacheExclude string[] changedBuildFiles;
212212
@excludeRoot string outputDirectory;
213+
@cacheExclude string runtimeWorkingDir;
213214

214215
bool isDebug;
215216
@cacheExclude BuildConfigurationFlags flags = BuildConfigurationFlags.defaultInit;
@@ -326,6 +327,7 @@ struct BuildConfiguration
326327
{
327328
import std.algorithm.comparison:either;
328329
BuildConfiguration ret = clone;
330+
ret.runtimeWorkingDir = either(other.runtimeWorkingDir, ret.runtimeWorkingDir);
329331
ret.targetType = either(other.targetType, ret.targetType);
330332
ret.targetName = either(other.targetName, ret.targetName);
331333
ret.outputDirectory = either(other.outputDirectory, ret.outputDirectory);

source/redub/parsers/base.d

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ void setName(ref BuildRequirements req, string name, ParseConfig c)
6161
req.cfg.targetName = name;
6262
}
6363
}
64+
void setTargetRuntimeWorkingDir(ref BuildRequirements req, string workingDir, ParseConfig c){req.cfg.runtimeWorkingDir = workingDir;}
6465
void setTargetName(ref BuildRequirements req, string name, ParseConfig c){req.cfg.targetName = name;}
6566
void setTargetPath(ref BuildRequirements req, string path, ParseConfig c){req.cfg.outputDirectory = path;}
6667
void setTargetType(ref BuildRequirements req, string targetType, ParseConfig c){req.cfg.targetType = targetFrom(targetType);}

source/redub/parsers/json.d

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ BuildRequirements parse(JSONValue json, ParseConfig cfg, out BuildConfiguration
203203
redubEnv[key] = value.str;
204204
}
205205
},
206+
"workingDirectory": (ref BuildRequirements req, JSONValue v, ParseConfig c, ref BuildConfiguration _){setTargetRuntimeWorkingDir(req, v.str, c);},
206207
"targetName": (ref BuildRequirements req, JSONValue v, ParseConfig c, ref BuildConfiguration _){setTargetName(req, v.str, c);},
207208
"targetType": (ref BuildRequirements req, JSONValue v, ParseConfig c, ref BuildConfiguration _){setTargetType(req, v.str, c);},
208209
"targetPath": (ref BuildRequirements req, JSONValue v, ParseConfig c, ref BuildConfiguration _){setTargetPath(req, v.str, c);},

0 commit comments

Comments
 (0)