Example #1
0
		/// <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(),
				
			};
		}
Example #2
0
 /// <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(),
     });
 }
Example #3
0
        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()
			};
		}
Example #5
0
		/// <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()
     });
 }
Example #7
0
 /// <summary>
 /// </summary>
 /// <param name="project"></param>
 public void Initialize(IBSharpProject project)
 {
     Project = project;
     PrepareTasks();
     PostInitialize();
     foreach (IBSharpBuilderTask t in Tasks)
     {
         t.SetProject(Project);
     }
 }
Example #8
0
 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();
		}
Example #10
0
 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="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);
     }
 }
Example #12
0
        /// <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());
            }
        }
Example #13
0
 /// <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();
 }
Example #14
0
 /// <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]);
 }
Example #16
0
		/// <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="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());
 }
Example #18
0
        /// <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());


		    
		}
Example #20
0
        /// <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();
		}
Example #25
0
		/// <summary>
		/// </summary>
		public ProcessorScript(IBSharpProject project, XElement e, BSharpBuilderPhase phase) : base(project, e){
			_phase = phase;
		}
Example #26
0
 /// <summary>
 /// </summary>
 /// <param name="project"></param>
 protected abstract void PrepareTasksFromProject(IBSharpProject project);
Example #27
0
 /// <summary>
 /// </summary>
 public ProcessorScript(IBSharpProject project, XElement e, BSharpBuilderPhase phase) : base(project, e)
 {
     _phase = phase;
 }
Example #28
0
 /// <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);
 }
Example #30
0
 /// <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);
Example #33
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="project"></param>
 public BSharpXmlResolver(IBSharpProject project)
 {
     this._project         = project;
     this._projectresolver = new ProjectUriResolver(_project);
     this._nativeresolver  = new XmlUrlResolver();
 }
Example #34
0
 /// <summary>
 /// Установить целевой проект
 /// </summary>
 /// <param name="project"></param>
 public override void SetProject(IBSharpProject project)
 {
     base.SetProject(project);
     WorkingDirectory = Path.Combine(project.GetOutputDirectory(), BSharpBuilderDefaults.OrphansOutputDirectory);
 }
Example #35
0
 /// <summary>
 /// Установить целевой проект
 /// </summary>
 /// <param name="project"></param>
 public override void SetProject(IBSharpProject project)
 {
     base.SetProject(project);
     WorkingDirectory = project.GetOutputDirectory();
 }
Example #36
0
		/// <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");
			}
		}
Example #37
0
 /// <summary>
 /// </summary>
 public PreprocessorCommand(IBSharpProject project, XElement e) : base(project, e)
 {
 }
Example #38
0
 public ProjectUriResolver(IBSharpProject project)
 {
     this._project = project;
 }
Example #39
0
		/// <summary>
		/// </summary>
		/// <param name="project"></param>
		protected abstract void PrepareTasksFromProject(IBSharpProject project);
Example #40
0
 /// <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 PreprocessOperation InitProject(IBSharpProject project)
 {
     _project = project;
     return(this);
 }