public ITask Create(TaskEnvironment environment, XElement definition) { if (definition.Name.LocalName == "task") { var name = definition.Attr("code"); if (string.IsNullOrWhiteSpace(name)) { throw new Exception("invalid generic task - no code"); } var gt = ResolveService<ITask>(name); if (null == gt) { throw new Exception("no configured task with name " + name); } return gt; } else { var name = "qorpent.tasks." + definition.Name.LocalName.ToLowerInvariant()+".task"; var deft = ResolveService<ITask>(name); return deft; } }
public int Execute(TaskConsoleParameters args) { var context = BSharpCompiler.CompileDirectory(args.ScriptDirectory, new BSharpConfig {Global = new Scope(args.Global),KeepLexInfo = true}); var cls = context[args.ScriptClass]; if (null == cls) { throw new Exception("cannot find class " + args.ScriptClass); } var container = ContainerFactory.CreateDefault(); container.RegisterAssembly(typeof (TaskProcess).Assembly); var configProvider = new GenericConfiguration(cls.Compiled, context) {Custom = args}; container.Set<IConfigProvider>(configProvider); Loggy.Manager = container.Get<ILoggyManager>(); var defloggy = Loggy.Manager.Get(); defloggy.Level = args.LogLevel; var consoleAppender = defloggy.Appenders.OfType<ConsoleAppender>().FirstOrDefault(); if (null == consoleAppender) { defloggy.Appenders.Add(new ConsoleAppender { Format = args.LogFormat, Level = args.LogLevel, Manager = Loggy.Manager }); } else { consoleAppender.Format = args.LogFormat; consoleAppender.Level = args.LogLevel; } var loggy = Loggy.Manager.Get("bcinst"); var installRequest = new TaskEnvironment { Config = cls.Compiled, Context = context, Log = loggy, Globals = new Scope(args.Global), Targets = args.Targets.ToArray() }; var processor = container.Get<ITaskProcessor>(); processor.Execute(installRequest); return 0; }
public override void Initialize(TaskEnvironment environment, ITask parent, XElement config) { base.Initialize(environment, parent, config); SetupTasks(environment, Main, config); }
public override void Initialize(TaskEnvironment environment, ITask parent, XElement config) { base.Initialize(environment, parent, config); CommandText = config.AttrOrValue("script"); }