Skip to content

Commit 428b4ae

Browse files
committed
Implement Args to pass arguments to scripts.
1 parent 27d90b5 commit 428b4ae

24 files changed

Lines changed: 91 additions & 77 deletions

src/ScriptCs.Core/IScriptEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ namespace ScriptCs
55
public interface IScriptEngine
66
{
77
string BaseDirectory { get; set; }
8-
object Execute(string code, IEnumerable<string> references, IEnumerable<string> namespaces, ScriptPackSession scriptPackSession);
8+
object Execute(string code, string[] scriptArgs, IEnumerable<string> references, IEnumerable<string> namespaces, ScriptPackSession scriptPackSession);
99
}
1010
}

src/ScriptCs.Core/IScriptExecutor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ namespace ScriptCs
55
{
66
public interface IScriptExecutor
77
{
8-
void Execute(string script, IEnumerable<string> paths, IEnumerable<IScriptPack> recipes);
8+
void Execute(string script, string[] scriptArgs, IEnumerable<string> paths, IEnumerable<IScriptPack> recipes);
99
}
1010
}

src/ScriptCs.Core/IScriptHostFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ namespace ScriptCs
66
{
77
public interface IScriptHostFactory
88
{
9-
ScriptHost CreateScriptHost(IScriptPackManager scriptPackManager);
9+
ScriptHost CreateScriptHost(IScriptPackManager scriptPackManager, string[] scriptArgs);
1010
}
1111
}

src/ScriptCs.Core/ScriptExecutor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public ScriptExecutor(IFileSystem fileSystem, IFilePreProcessor filePreProcessor
2424
_logger = logger;
2525
}
2626

27-
public void Execute(string script, IEnumerable<string> paths, IEnumerable<IScriptPack> scriptPacks)
27+
public void Execute(string script, string[] scriptArgs, IEnumerable<string> paths, IEnumerable<IScriptPack> scriptPacks)
2828
{
2929
var bin = Path.Combine(_fileSystem.GetWorkingDirectory(script), "bin");
3030

@@ -42,7 +42,7 @@ public void Execute(string script, IEnumerable<string> paths, IEnumerable<IScrip
4242
var references = DefaultReferences.Union(paths).Union(result.References);
4343

4444
_logger.Debug("Starting execution in engine");
45-
_scriptEngine.Execute(result.Code, references, DefaultNamespaces, scriptPackSession);
45+
_scriptEngine.Execute(result.Code, scriptArgs, references, DefaultNamespaces, scriptPackSession);
4646

4747
_logger.Debug("Terminating packs");
4848
scriptPackSession.TerminatePacks();

src/ScriptCs.Core/ScriptHost.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ namespace ScriptCs
77
public class ScriptHost
88
{
99
private IScriptPackManager _scriptPackManager;
10+
public string[] Args { get; private set; }
1011

11-
public ScriptHost(IScriptPackManager scriptPackManager)
12+
public ScriptHost(IScriptPackManager scriptPackManager, string[] scriptArgs)
1213
{
1314
_scriptPackManager = scriptPackManager;
15+
Args = scriptArgs;
1416
}
1517

1618
public T Require<T>() where T:IScriptPackContext

src/ScriptCs.Core/ScriptHostFactory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ namespace ScriptCs
55
{
66
public class ScriptHostFactory : IScriptHostFactory
77
{
8-
public ScriptHost CreateScriptHost(IScriptPackManager scriptPackManager)
8+
public ScriptHost CreateScriptHost(IScriptPackManager scriptPackManager, string[] scriptArgs)
99
{
10-
return new ScriptHost(scriptPackManager);
10+
return new ScriptHost(scriptPackManager, scriptArgs);
1111
}
1212
}
1313
}

src/ScriptCs.Engine.Roslyn/RoslynScriptEngine.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public string BaseDirectory
2828
set { _scriptEngine.BaseDirectory = value; }
2929
}
3030

31-
public object Execute(string code, IEnumerable<string> references, IEnumerable<string> namespaces, ScriptPackSession scriptPackSession)
31+
public object Execute(string code, string[] scriptArgs, IEnumerable<string> references, IEnumerable<string> namespaces, ScriptPackSession scriptPackSession)
3232
{
3333
Guard.AgainstNullArgument("scriptPackSession", scriptPackSession);
3434

@@ -40,7 +40,7 @@ public object Execute(string code, IEnumerable<string> references, IEnumerable<s
4040

4141
if (!scriptPackSession.State.ContainsKey(SessionKey))
4242
{
43-
var host = _scriptHostFactory.CreateScriptHost(new ScriptPackManager(scriptPackSession.Contexts));
43+
var host = _scriptHostFactory.CreateScriptHost(new ScriptPackManager(scriptPackSession.Contexts), scriptArgs);
4444
_logger.Debug("Creating session");
4545
var session = _scriptEngine.CreateSession(host);
4646

src/ScriptCs/Command/CommandFactory.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public CommandFactory(ScriptServiceRoot scriptServiceRoot)
1111
_scriptServiceRoot = scriptServiceRoot;
1212
}
1313

14-
public ICommand CreateCommand(ScriptCsArgs args)
14+
public ICommand CreateCommand(ScriptCsArgs args, string[] scriptArgs)
1515
{
1616
Guard.AgainstNullArgument("args", args);
1717

@@ -32,8 +32,9 @@ public ICommand CreateCommand(ScriptCsArgs args)
3232
if (args.ScriptName != null)
3333
{
3434
var executeCommand = new ExecuteScriptCommand(
35-
args.ScriptName,
36-
_scriptServiceRoot.FileSystem,
35+
args.ScriptName,
36+
scriptArgs,
37+
_scriptServiceRoot.FileSystem,
3738
_scriptServiceRoot.Executor,
3839
_scriptServiceRoot.ScriptPackResolver,
3940
_scriptServiceRoot.Logger,

src/ScriptCs/Command/ExecuteScriptCommand.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,24 @@ namespace ScriptCs.Command
1010
internal class ExecuteScriptCommand : IScriptCommand
1111
{
1212
private readonly string _script;
13+
private readonly string[] _scriptArgs;
1314
private readonly IFileSystem _fileSystem;
1415
private readonly IScriptExecutor _scriptExecutor;
1516
private readonly IScriptPackResolver _scriptPackResolver;
1617
private readonly IAssemblyName _assemblyName;
1718

1819
private readonly ILog _logger;
1920

20-
public ExecuteScriptCommand(string script,
21-
IFileSystem fileSystem,
22-
IScriptExecutor scriptExecutor,
21+
public ExecuteScriptCommand(string script,
22+
string[] scriptArgs,
23+
IFileSystem fileSystem,
24+
IScriptExecutor scriptExecutor,
2325
IScriptPackResolver scriptPackResolver,
2426
ILog logger,
2527
IAssemblyName assemblyName)
2628
{
2729
_script = script;
30+
_scriptArgs = scriptArgs;
2831
_fileSystem = fileSystem;
2932
_scriptExecutor = scriptExecutor;
3033
_scriptPackResolver = scriptPackResolver;
@@ -44,7 +47,7 @@ public CommandResult Execute()
4447
assemblyPaths = GetAssemblyPaths(workingDirectory);
4548
}
4649

47-
_scriptExecutor.Execute(_script, assemblyPaths, _scriptPackResolver.GetPacks());
50+
_scriptExecutor.Execute(_script, _scriptArgs, assemblyPaths, _scriptPackResolver.GetPacks());
4851
return CommandResult.Success;
4952
}
5053
catch (Exception ex)

src/ScriptCs/Program.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22

33
using PowerArgs;
44
using ScriptCs.Command;
5+
using System.Linq;
56

67
namespace ScriptCs
78
{
89
internal static class Program
910
{
1011
private static int Main(string[] args)
1112
{
13+
string[] scriptArgs;
14+
ScriptCsArgs.SplitScriptArgs(ref args, out scriptArgs);
15+
1216
var commandArgs = ParseArguments(args) ?? new ScriptCsArgs { Repl = true };
1317

1418
var compositionRoot = new CompositionRoot(commandArgs);
@@ -20,7 +24,8 @@ private static int Main(string[] args)
2024
var scriptServiceRoot = compositionRoot.GetServiceRoot();
2125

2226
var commandFactory = new CommandFactory(scriptServiceRoot);
23-
var command = commandFactory.CreateCommand(commandArgs);
27+
var command = commandFactory.CreateCommand(commandArgs, scriptArgs);
28+
2429
var result = command.Execute();
2530

2631
return result == CommandResult.Success ? 0 : -1;

0 commit comments

Comments
 (0)