/// <summary> /// Процедура фильтрации входных файлов на уровне классов и пространств имен /// </summary> /// <param name="project"></param> public static ClassFilter Create(IBSharpProject project) { return new ClassFilter { NamespaceFullIncludes = project.Targets.Namespaces.Where(_ => !_.Key.EndsWith(".*") && _.Value == BSharpBuilderTargetType.Include) .Select(_ => _.Key).ToArray(), NamespaceStartIncludes = project.Targets.Namespaces.Where(_ => _.Key.EndsWith(".*") && _.Value == BSharpBuilderTargetType.Include) .Select(_ => _.Key.Replace(".*","")).ToArray(), NamespaceFullExcludes = project.Targets.Namespaces.Where(_ => !_.Key.EndsWith(".*") && _.Value == BSharpBuilderTargetType.Exclude).Select(_ => _.Key).ToArray(), NamespaceStartExcludes = project.Targets.Namespaces.Where(_ => _.Key.EndsWith(".*") && _.Value == BSharpBuilderTargetType.Exclude).Select(_ => _.Key.Replace(".*", "")).ToArray(), ClassExcludes = project.Targets.Classes.Where(_ => _.Value == BSharpBuilderTargetType.Exclude).Select(_ => _.Key).ToArray(), ClassIncludes = project.Targets.Classes.Where(_ => _.Value == BSharpBuilderTargetType.Include).Select(_ => _.Key).ToArray(), }; }
/// <summary> /// Процедура фильтрации входных файлов на уровне классов и пространств имен /// </summary> /// <param name="project"></param> public static ClassFilter Create(IBSharpProject project) { return(new ClassFilter { NamespaceFullIncludes = project.Targets.Namespaces.Where(_ => !_.Key.EndsWith(".*") && _.Value == BSharpBuilderTargetType.Include) .Select(_ => _.Key).ToArray(), NamespaceStartIncludes = project.Targets.Namespaces.Where(_ => _.Key.EndsWith(".*") && _.Value == BSharpBuilderTargetType.Include) .Select(_ => _.Key.Replace(".*", "")).ToArray(), NamespaceFullExcludes = project.Targets.Namespaces.Where(_ => !_.Key.EndsWith(".*") && _.Value == BSharpBuilderTargetType.Exclude).Select(_ => _.Key).ToArray(), NamespaceStartExcludes = project.Targets.Namespaces.Where(_ => _.Key.EndsWith(".*") && _.Value == BSharpBuilderTargetType.Exclude).Select(_ => _.Key.Replace(".*", "")).ToArray(), ClassExcludes = project.Targets.Classes.Where(_ => _.Value == BSharpBuilderTargetType.Exclude).Select(_ => _.Key).ToArray(), ClassIncludes = project.Targets.Classes.Where(_ => _.Value == BSharpBuilderTargetType.Include).Select(_ => _.Key).ToArray(), }); }
private static DateTime GetStamp(IBSharpProject project) { project = project.Get <IBSharpProject>("_real_project") ?? project; var dirs = project.GetSourceDirectories().ToArray(); var stamp = dirs.SelectMany(_ => Directory.GetFiles(_, "*.bxls", SearchOption.AllDirectories)).Max(_ => File.GetLastWriteTime(_)); var csharp = Directory.GetFiles(project.GetCompileDirectory(), "*.cs", SearchOption.AllDirectories) .Where(_ => !_.Contains("\\obj\\")).ToArray(); if (0 != csharp.Length) { var _s = csharp.Max(_ => File.GetLastWriteTime(_)); if (_s > stamp) { stamp = _s; } } var xslt = Directory.GetFiles(project.GetCompileDirectory(), "*.xslt", SearchOption.AllDirectories) .Where(_ => !_.Contains("\\obj\\")).ToArray(); if (0 != xslt.Length) { var _s = xslt.Max(_ => File.GetLastWriteTime(_)); if (_s > stamp) { stamp = _s; } } return(stamp); }
/// <summary> /// Процедура инициализации из проекта /// </summary> /// <param name="project"></param> public static DirectoryFileFilter Create(IBSharpProject project) { return new DirectoryFileFilter { Root = project.GetRootDirectory(), SearchMasks =project.InputExtensions.Split(';').Select(_=>"*."+_).ToArray(), Includes = project.Targets.Paths.Where(_ => _.Value == BSharpBuilderTargetType.Include).Select(_ => _.Key).ToArray(), Excludes = project.Targets.Paths.Where(_ => _.Value == BSharpBuilderTargetType.Exclude).Select(_ => _.Key).ToArray() }; }
/// <summary> /// </summary> /// <param name="project"></param> public void Initialize(IBSharpProject project){ Project = project; PrepareTasks(); PostInitialize(); foreach (IBSharpBuilderTask t in Tasks){ t.SetProject(Project); } }
/// <summary> /// Процедура инициализации из проекта /// </summary> /// <param name="project"></param> public static DirectoryFileFilter Create(IBSharpProject project) { return(new DirectoryFileFilter { Roots = project.GetSourceDirectories().ToArray(), SearchMasks = project.InputExtensions.Split(';').Select(_ => "*." + _).ToArray(), Includes = project.Targets.Paths.Where(_ => _.Value == BSharpBuilderTargetType.Include).Select(_ => _.Key).ToArray(), Excludes = project.Targets.Paths.Where(_ => _.Value == BSharpBuilderTargetType.Exclude).Select(_ => _.Key).ToArray() }); }
/// <summary> /// </summary> /// <param name="project"></param> public void Initialize(IBSharpProject project) { Project = project; PrepareTasks(); PostInitialize(); foreach (IBSharpBuilderTask t in Tasks) { t.SetProject(Project); } }
public XsltTask(IBSharpProject project, XElement definition) { this.Project = project; this.TemplateUri = new Uri(definition.Attr("template")); this.ClassSelector = new Uri(definition.Attr("selector")); this.Batch = definition.Attr("batch").ToBool(); this.OutputPath = new Uri(definition.Attr("output")); this.NoXml = definition.Attr("noxml").ToBool(); this._resolver = new ProjectUriResolver(project); }
/// <summary> /// Вызывается при присоединении расширения к билдеру /// </summary> /// <param name="builder"></param> public void SetUp(IBSharpBuilder builder){ _builder = (BSharpBuilderBase) builder; _tasks = Builder.Tasks; _log = Builder.Log; _project = Builder.GetProject(); WriteSetupStartLog(); RefineProject(); PrepareTasks(); WriteSetupEndLog(); }
/// <summary> /// Установить целевой проект /// </summary> /// <param name="project"></param> public override void SetProject(IBSharpProject project) { base.SetProject(project); Root = Project.GetRootDirectory().Replace("\\", "/"); PackageName = GetInitialPkgName(project); if (!Path.IsPathRooted(PackageName)) { PackageName = Path.Combine(project.GetOutputDirectory(), PackageName); } }
/// <summary> /// /// </summary> /// <param name="project"></param> protected override void PrepareTasksFromProject(IBSharpProject project) { Tasks.Add(new LoadAllSourcesTask()); Tasks.Add(new ResolveClassesAndNamespacesTask()); Tasks.Add(new CompileBSharpTask()); Tasks.Add(new CleanUpTask()); if (!project.NoOutput) { if (project.WriteCompiled) { Tasks.Add(new WriteWorkingOutputTask()); } if (project.OutputAttributes.HasFlag(BSharpBuilderOutputAttributes.IncludeOrphans)) { Tasks.Add(new WriteOrphansOutputTask()); } if (project.GenerateSrcPkg) { Tasks.Add(new GenerateSrcPackageTask()); } if (project.GenerateLibPkg) { Tasks.Add(new GenerateLibPackageTask()); } #if !EMBEDQPT if (project.GenerateGraph) { Tasks.Add(new GenerateClassGraphTask()); } #endif if (project.GenerateJsonModule) { Tasks.Add(new GenerateJsonModuleTask()); } if (project.GenerateJson) { Tasks.Add(new UniversalJsonBuilder()); } if (project.ExecuteXsltTasks) { Tasks.Add(new ApplyXsltTask()); } Tasks.Add(new WriteErrorInfoTask()); Tasks.Add(new WritePrettyErrorDigest()); } }
/// <summary> /// Вызывается при присоединении расширения к билдеру /// </summary> /// <param name="builder"></param> public void SetUp(IBSharpBuilder builder) { _builder = (BSharpBuilderBase)builder; _tasks = Builder.Tasks; _log = Builder.Log; _project = Builder.GetProject(); WriteSetupStartLog(); RefineProject(); PrepareTasks(); WriteSetupEndLog(); }
/// <summary> /// </summary> /// <param name="target"></param> public IBSharpProject SafeOverrideProject(IBSharpProject target) { foreach (string overrideAttribute in overrideAttributes) { if (ContainsKey(overrideAttribute) && this[overrideAttribute].ToBool()) { target.Set(overrideAttribute, this[overrideAttribute]); } } return(target); }
/// <summary> /// /// </summary> /// <param name="project"></param> /// <param name="conditionName"></param> /// <returns></returns> public static string GetCondition(this IBSharpProject project, string conditionName) { if (null == project) { return(string.Empty); } if (!project.Conditions.ContainsKey(conditionName)) { return(string.Empty); } return(project.Conditions[conditionName]); }
/// <summary> /// /// </summary> /// <param name="project"></param> /// <param name="conditionName"></param> /// <returns></returns> public static bool IsSet(this IBSharpProject project, string conditionName) { if (null == project) { return(false); } if (!project.Conditions.ContainsKey(conditionName)) { return(false); } if (project.Conditions[conditionName] == "") { return(true); //simple set conditions } return(project.Conditions[conditionName].ToBool()); }
/// <summary> /// Установить целевой проект /// </summary> /// <param name="project"></param> public override void SetProject(IBSharpProject project) { base.SetProject(project); var _name = Project.JsonModuleName; if (string.IsNullOrWhiteSpace(_name)) { _name = Project.ProjectName + ".json"; } if (!Path.IsPathRooted(_name)) { _name = Path.Combine(project.GetOutputDirectory(), _name); } this.OutFileName = _name; }
/// <summary> /// /// </summary> /// <param name="project"></param> protected override void PrepareTasksFromProject(IBSharpProject project) { Tasks.Add(new LoadAllSourcesTask()); Tasks.Add(new ResolveClassesAndNamespacesTask()); Tasks.Add(new CompileBSharpTask()); Tasks.Add(new CleanUpTask()); if (project.WriteCompiled) { Tasks.Add(new WriteWorkingOutputTask()); // Tasks.Add(new GenerateIndexTask()); } if (project.OutputAttributes.HasFlag(BSharpBuilderOutputAttributes.IncludeOrphans)) { Tasks.Add(new WriteOrphansOutputTask()); } if (project.GenerateSrcPkg) { Tasks.Add(new GenerateSrcPackageTask()); } if (project.GenerateLibPkg) { Tasks.Add(new GenerateLibPackageTask()); } if (project.GenerateGraph) { Tasks.Add(new GenerateClassGraphTask()); } if (project.GenerateJsonModule) { Tasks.Add(new GenerateJsonModuleTask()); } Tasks.Add(new WriteErrorInfoTask()); Tasks.Add(new WritePrettyErrorDigest()); }
/// <summary> /// </summary> protected virtual void PrepareTasks() { IBSharpProject _realproject = Project; if (Project.IsFullyQualifiedProject || string.IsNullOrWhiteSpace(Project.ProjectName)) { Log.Trace("load prepared project"); PrepareTasksFromProject(Project); } else { Log.Trace("start compile projects"); _realproject = Project.SafeOverrideProject(CompileRealProject()); _realproject.SetParent(Project); Project.Set("_real_project", _realproject); Project = _realproject; PrepareTasksFromProject(_realproject); Log.Trace("internal project loaded"); } }
/// <summary> /// </summary> /// <param name="project"></param> /// <param name="e"></param> /// <returns></returns> /// <exception cref="Exception"></exception> public static PreprocessOperation Create(IBSharpProject project, XElement e) { switch (e.Name.LocalName) { case "renameattribute": return(e.Apply(new RenameAttributeOperation())); case "renameelement": return(e.Apply(new RenameElementOperation())); case "stringreplace": return(e.Apply(new StringReplaceOperation())); case "cleanupelement": return(e.Apply(new CleanupElementOperation())); case "setattribute": return(e.Apply(new SetAttributeOperation())); case "setdefaults": return(new SetDefaultAttributesOperation(e)); case "removeattribute": return(e.Apply(new RemoveAttributeOperation())); case "elementtoattribute": return(e.Apply(new ElementToAttributeOperation())); case "pushtoglobal": return(e.Apply(new PushToGlobalOperation().InitProject(project))); case "bindglobal": return(e.Apply(new BindGlobalOperation().InitProject(project))); case "executegenerator": return(e.Apply(new ExecuteCodeGeneratorOperation().InitProject(project))); default: throw new Exception("unkonown operation " + e.Name.LocalName); } }
/// <summary> /// </summary> /// <param name="bSharpClass"></param> /// <param name="project"></param> private static void ParseIncludes(IBSharpClass bSharpClass, IBSharpProject project) { XElement include = bSharpClass.Compiled.Element("Include"); if (include != null) { foreach (XElement el in include.Elements("Path")) { AppendInclude(project.Targets.Paths, el.Attribute("code").Value); } foreach (XElement el in include.Elements("Namespace")) { AppendInclude(project.Targets.Namespaces, el.Attribute("code").Value); } foreach (XElement el in include.Elements("Class")) { AppendInclude(project.Targets.Classes, el.Attribute("code").Value); } } }
private static void ParseExcludes(IBSharpClass bSharpClass, IBSharpProject project) { XElement exclude = bSharpClass.Compiled.Element("Exclude"); if (exclude != null) { Console.WriteLine("In exclude"); foreach (XElement el in exclude.Elements("Path")) { AppendExclude(project.Targets.Paths, el.Attribute("code").Value); } foreach (XElement el in exclude.Elements("Namespace")) { AppendExclude(project.Targets.Namespaces, el.Attribute("code").Value); } foreach (XElement el in exclude.Elements("Class")) { AppendExclude(project.Targets.Classes, el.Attribute("code").Value); } } }
/// <summary> /// Установить целевой проект /// </summary> /// <param name="project"></param> public override void SetProject(IBSharpProject project) { base.SetProject(project); WorkingDirectory = project.GetOutputDirectory(); }
/// <summary> /// </summary> public ProcessorScript(IBSharpProject project, XElement e, BSharpBuilderPhase phase) : base(project, e){ _phase = phase; }
/// <summary> /// </summary> /// <param name="project"></param> protected abstract void PrepareTasksFromProject(IBSharpProject project);
/// <summary> /// </summary> public ProcessorScript(IBSharpProject project, XElement e, BSharpBuilderPhase phase) : base(project, e) { _phase = phase; }
/// <summary> /// Установить целевой проект /// </summary> /// <param name="project"></param> public virtual void SetProject(IBSharpProject project) { Project = project; }
/// <summary> /// Возвращает имя файла пакета /// </summary> /// <param name="project"></param> /// <returns></returns> protected override string GetInitialPkgName(IBSharpProject project) { return(project.SrcPkgName); }
/// <summary> /// </summary> public PreprocessorCommandBase(IBSharpProject project, XElement e) { _e = e; _project = project; Initialize(); }
/// <summary> /// Возвращает имя файла пакета /// </summary> /// <param name="project"></param> /// <returns></returns> protected override string GetInitialPkgName(IBSharpProject project) { return project.LibPkgName; }
/// <summary> /// Возвращает имя файла пакета /// </summary> /// <param name="project"></param> /// <returns></returns> protected abstract string GetInitialPkgName(IBSharpProject project);
/// <summary> /// /// </summary> /// <param name="project"></param> public BSharpXmlResolver(IBSharpProject project) { this._project = project; this._projectresolver = new ProjectUriResolver(_project); this._nativeresolver = new XmlUrlResolver(); }
/// <summary> /// Установить целевой проект /// </summary> /// <param name="project"></param> public override void SetProject(IBSharpProject project) { base.SetProject(project); WorkingDirectory = Path.Combine(project.GetOutputDirectory(), BSharpBuilderDefaults.OrphansOutputDirectory); }
/// <summary> /// </summary> protected virtual void PrepareTasks(){ IBSharpProject _realproject = Project; if (Project.IsFullyQualifiedProject || string.IsNullOrWhiteSpace(Project.ProjectName)){ Log.Trace("load prepared project"); PrepareTasksFromProject(Project); } else{ Log.Trace("start compile projects"); _realproject = Project.SafeOverrideProject(CompileRealProject()); _realproject.SetParent(Project); Project.Set("_real_project", _realproject); Project = _realproject; PrepareTasksFromProject(_realproject); Log.Trace("internal project loaded"); } }
/// <summary> /// </summary> public PreprocessorCommand(IBSharpProject project, XElement e) : base(project, e) { }
public ProjectUriResolver(IBSharpProject project) { this._project = project; }
/// <summary> /// </summary> /// <param name="project"></param> public PreprocessOperation InitProject(IBSharpProject project) { _project = project; return(this); }