From 6a70e66af26b8b730b1d4070c4cb35ee9d070ba2 Mon Sep 17 00:00:00 2001 From: Renaud Paquay Date: Fri, 9 Apr 2010 10:29:25 -0700 Subject: [PATCH] Slightly refactor orchard.exe Allows calling command execution in asp.net host, passing right set of parameters --HG-- branch : dev rename : src/Tools/Orchard/OrchardArguments.cs => src/Tools/Orchard/OrchardParameters.cs rename : src/Tools/Orchard/OrchardArgumentsParser.cs => src/Tools/Orchard/OrchardParametersParser.cs rename : src/Tools/Orchard/Arguments/Switch.cs => src/Tools/Orchard/Parameters/CommandSwitch.cs --- src/Orchard/Commands/CommandHostAgent.cs | 7 ++-- src/Tools/Orchard/Arguments/IParser.cs | 7 ---- src/Tools/Orchard/Arguments/Parser.cs | 34 ------------------- src/Tools/Orchard/Arguments/ParserResult.cs | 13 ------- src/Tools/Orchard/Host/CommandHost.cs | 7 ++-- src/Tools/Orchard/IOrchardParametersParser.cs | 7 ++++ src/Tools/Orchard/Orchard.csproj | 13 +++---- ...chardArguments.cs => OrchardParameters.cs} | 5 ++- ...tsParser.cs => OrchardParametersParser.cs} | 27 ++++++++------- .../Orchard/Parameters/CommandParameters.cs | 8 +++++ .../Parameters/CommandParametersParser.cs | 27 +++++++++++++++ .../Switch.cs => Parameters/CommandSwitch.cs} | 4 +-- .../Parameters/ICommandParametersParser.cs | 7 ++++ src/Tools/Orchard/Program.cs | 8 +++-- 14 files changed, 90 insertions(+), 84 deletions(-) delete mode 100644 src/Tools/Orchard/Arguments/IParser.cs delete mode 100644 src/Tools/Orchard/Arguments/Parser.cs delete mode 100644 src/Tools/Orchard/Arguments/ParserResult.cs create mode 100644 src/Tools/Orchard/IOrchardParametersParser.cs rename src/Tools/Orchard/{OrchardArguments.cs => OrchardParameters.cs} (60%) rename src/Tools/Orchard/{OrchardArgumentsParser.cs => OrchardParametersParser.cs} (52%) create mode 100644 src/Tools/Orchard/Parameters/CommandParameters.cs create mode 100644 src/Tools/Orchard/Parameters/CommandParametersParser.cs rename src/Tools/Orchard/{Arguments/Switch.cs => Parameters/CommandSwitch.cs} (56%) create mode 100644 src/Tools/Orchard/Parameters/ICommandParametersParser.cs diff --git a/src/Orchard/Commands/CommandHostAgent.cs b/src/Orchard/Commands/CommandHostAgent.cs index b656eeb84..7342bfb2c 100644 --- a/src/Orchard/Commands/CommandHostAgent.cs +++ b/src/Orchard/Commands/CommandHostAgent.cs @@ -19,13 +19,14 @@ namespace Orchard.Commands { try { var hostContainer = OrchardStarter.CreateHostContainer(MvcSingletons); var host = hostContainer.Resolve(); - var tenantManager = hostContainer.Resolve(); - host.Initialize(); + // Find tenant (or default) tenant = tenant ?? "default"; - + var tenantManager = hostContainer.Resolve(); var tenantSettings = tenantManager.LoadSettings().Single(s => String.Equals(s.Name, tenant, StringComparison.OrdinalIgnoreCase)); + + // Disptach command execution to ICommandManager using (var env = host.CreateStandaloneEnvironment(tenantSettings)) { env.Resolve().Execute(new CommandParameters {Arguments = args, Switches = switches}); } diff --git a/src/Tools/Orchard/Arguments/IParser.cs b/src/Tools/Orchard/Arguments/IParser.cs deleted file mode 100644 index a0efd5532..000000000 --- a/src/Tools/Orchard/Arguments/IParser.cs +++ /dev/null @@ -1,7 +0,0 @@ -using System.Collections.Generic; - -namespace Orchard.Arguments { - public interface IParser { - ParserResult Parse(IEnumerable args); - } -} \ No newline at end of file diff --git a/src/Tools/Orchard/Arguments/Parser.cs b/src/Tools/Orchard/Arguments/Parser.cs deleted file mode 100644 index 1cf1fdd6a..000000000 --- a/src/Tools/Orchard/Arguments/Parser.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Orchard.Arguments { - public class Parser : IParser { - public ParserResult Parse(IEnumerable args) { - ParserResult result = new ParserResult(); - - IEnumerator e = args.GetEnumerator(); - while (e.MoveNext()) { - if (e.Current[0] == '/') { - var s = ParseSwitch(e); - result.Switches.Add(s); - } - else { - result.Arguments.Add(e.Current); - } - } - - return result; - } - - private Switch ParseSwitch(IEnumerator enumerator) { - string sw = enumerator.Current.Substring(1); - string[] args = sw.Split(':'); - return new Switch { - Name = args[0], - Value = args.Length >= 2 ? args[1] : string.Empty - }; - } - } -} \ No newline at end of file diff --git a/src/Tools/Orchard/Arguments/ParserResult.cs b/src/Tools/Orchard/Arguments/ParserResult.cs deleted file mode 100644 index 519213741..000000000 --- a/src/Tools/Orchard/Arguments/ParserResult.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections.Generic; - -namespace Orchard.Arguments { - public class ParserResult { - public ParserResult() { - this.Arguments = new List(); - this.Switches = new List(); - } - - public IList Arguments { get; set; } - public IList Switches { get; set; } - } -} \ No newline at end of file diff --git a/src/Tools/Orchard/Host/CommandHost.cs b/src/Tools/Orchard/Host/CommandHost.cs index d2a285360..6eabadbf0 100644 --- a/src/Tools/Orchard/Host/CommandHost.cs +++ b/src/Tools/Orchard/Host/CommandHost.cs @@ -19,9 +19,12 @@ namespace Orchard.Host { //TODO } - public void RunCommand(string[] args) { + public void RunCommand(OrchardParameters args) { var agent = Activator.CreateInstance("Orchard.Framework", "Orchard.Commands.CommandHostAgent").Unwrap(); - agent.GetType().GetMethod("RunSingleCommand").Invoke(agent, new object[] { args }); + agent.GetType().GetMethod("RunSingleCommand").Invoke(agent, new object[] { + args.Tenant, + args.Arguments.ToArray(), + args.Switches}); } } } \ No newline at end of file diff --git a/src/Tools/Orchard/IOrchardParametersParser.cs b/src/Tools/Orchard/IOrchardParametersParser.cs new file mode 100644 index 000000000..caa15577d --- /dev/null +++ b/src/Tools/Orchard/IOrchardParametersParser.cs @@ -0,0 +1,7 @@ +using Orchard.Parameters; + +namespace Orchard { + public interface IOrchardParametersParser { + OrchardParameters Parse(CommandParameters parameters); + } +} \ No newline at end of file diff --git a/src/Tools/Orchard/Orchard.csproj b/src/Tools/Orchard/Orchard.csproj index 7967a04e7..35a7eb075 100644 --- a/src/Tools/Orchard/Orchard.csproj +++ b/src/Tools/Orchard/Orchard.csproj @@ -48,15 +48,16 @@ - - - - + + + + + - + - +