public WikiBuilderTask[] Build(string taskcode, IConsoleLogHost logger) { var files = myapp.files.ResolveAll("wiki", "*.buildtask", true, null); logger.loginfo(files.Count()+" files for builder found"); IList<WikiBuilderTask> tasks = new List<WikiBuilderTask>(); foreach (var file in files) { logger.loginfo("file " +file +" start to load"); var e =new BxlParser().Parse(File.ReadAllText(file),file); foreach (var te in e.XPathSelectElements("//task")) { var task = WikiBuilderTask.ReadFromXml(te); tasks.Add(task); logger.loginfo("task with code "+task.Code+" added"); } } var filter = taskcode.split(); WikiBuilderTask[] result = null; if (0 == filter.Count) { result = tasks.ToArray(); }else { result = tasks.Where(x => filter.Contains(x.Id)).ToArray(); } var respository = myapp.ioc.get<IWikiRepository>() ?? new WikiRepository(); foreach (var task in result) { logger.loginfo("task " +task +" started"); var executor = task.CustomExecutor ?? getDefaultExecutor(task); executor.Execute(respository, task, logger); logger.loginfo("task " + task + " finished"); } return result; }
public void Execute(IWikiRepository repository, WikiBuilderTask task, IConsoleLogHost logger) { this.brail = new BooViewEngine(); brail.Options = new MonoRailViewEngineOptions(); brail.Options.BaseType = "Castle.MonoRail.Views.Brail.WikiBrailBase"; this.render = new WikiRender(); var srcpages = new List<WikiPage>(); foreach (var src in task.Sources) { foreach (var p in repository.Search(src)) { srcpages.Add(p); } } foreach (var target in task.Targets) { var outfile = myapp.files.Resolve(target,false); var parameters = new Dictionary<string, object>() { {"task", task}, {"logger", logger}, {"repository", repository}, {"render", render}, {"pages", srcpages.ToArray()}, }; var sw = new StringWriter(); brail.Process(task.View,task.Layout,sw, parameters); File.WriteAllText(outfile,sw.ToString()); } }
public virtual IDictionary<IAuditTest,TestResult[]> Execute(string testpattern, string resultpattern, int level, IConsoleLogHost logger) { var realprovider = Class.toType(new Dictionary<string,Type> { {"dbset",typeof(DatabaseSetTestProvider)} }).create<IMasAuditTestProvider>(); realprovider.Contextualize(this,logger); var tests = realprovider.Search(testpattern); var result = new Dictionary<IAuditTest, TestResult[]>(); foreach (var auditTest in tests) { result[auditTest] = auditTest.Execute(resultpattern, level).OfType<TestResult>().ToArray(); } return result; }
public void Contextualize(TestProvider provider, IConsoleLogHost logger) { this.provider = provider; this.logger = logger; this.cfg = new BxlParser().Parse(provider.Config); this.connection = cfg.elementId("connection","Default"); this.schema = cfg.elementId("schema", "masaudit"); this.db = cfg.elementId("db", (string)null); logger.loginfo("get test procedures from "+connection+"/"+db+"/"+schema); var t = myapp.sql.ExecuteTable( "select name from sys.objects where type='P' and schema_id = schema_id('" + schema + "')", null, db, connection); IList<DatabaseSetTest> procedures = new List<DatabaseSetTest>(); foreach (var r in t.Rows) { logger.logtrace(r.Values[0] as string); procedures.Add(new DatabaseSetTest(this,r.Values[0] as string)); } this.tests = procedures.ToArray(); }
protected FileSystemCommand() { this.Args = new Dictionary<string, string>(); this.log = ConsoleLogHost.Current ?? new LogHostBase(); this.Filesystem = myapp.files; }