Example #1
0
        static void Main(string[] args)
        {
            string folderDlls    = ConfigurationManager.AppSettings.Get("FolderComponentFiles");
            string folderSources = ConfigurationManager.AppSettings.Get("FolderComponentSources");

            IComponentSearchMethod sm = new ComponentSearchDirectory(folderDlls);

            foreach (string filePath in Directory.GetFiles(folderDlls, "*.dll", SearchOption.AllDirectories))
            {
                var sw = File.CreateText(
                    Path.Combine(
                        folderSources,
                        Path.GetFileName(Path.ChangeExtension(filePath, "cs")))
                    );
                using (ComponentLoader cl = new ComponentLoader()
                {
                    SearchMethod = sm
                })
                {
                    var component = cl.LoadComponent(filePath);
                    sw.WriteLine("// GUID        : " + component.Guid.ToString());
                    sw.WriteLine("// Name        : " + component.Name);
                    sw.WriteLine("// Description : " + component.Description);
                    sw.WriteLine("// Author      : " + component.Author);
                    sw.WriteLine("// Version     : " + component.Version);
                    sw.WriteLine("// Thumbnail   : " + (component.HasEmbeddedThumbnail ? "true" : "false"));
                    sw.WriteLine("// Date        : " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
                    sw.WriteLine("// ### ");
                    sw.Write(component.SourceCode);

                    if (component.HasEmbeddedThumbnail)
                    {
                        // get thumbnail image
                        var bmp = component.Thumbnail;
                        // save thumbnail image as bmp
                        string bitmapPath = Path.Combine(folderSources, Path.GetFileName(Path.ChangeExtension(filePath, "bmp")));
                        bmp.Save(bitmapPath, System.Drawing.Imaging.ImageFormat.Bmp);
                    }
                }
                sw.Close();

                Console.Write(".");
            }
            Console.WriteLine();
        }
Example #2
0
        static void Main(string[] args)
        {
            string folderDlls    = ConfigurationManager.AppSettings.Get("FolderComponentFiles");
            string folderSources = ConfigurationManager.AppSettings.Get("FolderComponentSources");

            IComponentSearchMethod sm = new ComponentSearchDirectory(folderDlls);

            foreach (string filePath in Directory.GetFiles(folderSources, "*.cs", SearchOption.AllDirectories))
            {
                ReplaceString(filePath, "\"Perfo\"", "\"1-2-x-1-2-cut\"");

                string sAuthor      = string.Empty;
                string sName        = string.Empty;
                string sDescription = string.Empty;
                string sVersion     = string.Empty;
                string sGuid        = string.Empty;
                bool   hasThumbnail = false;
                string sDate        = string.Empty;

                var    fileLines = File.ReadAllLines(filePath);
                int    lineIndex = 0;
                string str       = fileLines[lineIndex++];
                if (str.Contains("GUID"))
                {
                    sGuid = str.Substring(str.IndexOf(':') + 2).Trim();
                }
                str = fileLines[lineIndex++];
                if (str.Contains("Name"))
                {
                    sName = str.Substring(str.IndexOf(':') + 2).Trim();
                }
                str = fileLines[lineIndex++];
                if (str.Contains("Description"))
                {
                    sDescription = str.Substring(str.IndexOf(':') + 2).Trim();
                }
                str = fileLines[lineIndex++];
                if (str.Contains("Author"))
                {
                    sAuthor = str.Substring(str.IndexOf(':') + 2).Trim();
                }
                str = fileLines[lineIndex++];
                if (str.Contains("Version"))
                {
                    sVersion = str.Substring(str.IndexOf(':') + 2).Trim();
                }
                str = fileLines[lineIndex++];
                if (str.Contains("Thumbnail"))
                {
                    hasThumbnail = str.Substring(str.IndexOf(':') + 2).Trim() == "true";
                }
                str = fileLines[lineIndex++];
                if (str.Contains("Date"))
                {
                    sDate = str.Substring(str.IndexOf(':') + 2).Trim();
                }

                lineIndex += 1;

                StringBuilder sb = new StringBuilder();
                for (int i = lineIndex; i < fileLines.Count(); ++i)
                {
                    sb.AppendLine(fileLines[i]);
                }

                try
                {
                    string outName = Path.GetFileName(Path.ChangeExtension(filePath, "dll"));
                    {
                        Console.Write($"Compiling {outName}");

                        // instantiate PluginGenerator
                        PluginGenerator generator = new PluginGenerator
                        {
                            AssemblyCompany     = sAuthor,
                            AssemblyDescription = sDescription,
                            AssemblyVersion     = sVersion,
                            DrawingName         = sName,
                            DrawingDescription  = sDescription,
                            Guid            = Guid.Parse(sGuid),
                            DrawingCode     = sb.ToString(),
                            OutputName      = outName,
                            OutputDirectory = folderDlls
                        };
                        string filePathBmp = Path.ChangeExtension(filePath, "bmp");
                        if (File.Exists(filePathBmp))
                        {
                            // set thumbnail path in generator
                            generator.ThumbnailPath = filePathBmp;
                        }
                        CompilerResults res = generator.Build();
                        if (res.Errors.Count > 0)
                        {
                            Console.WriteLine($" -> Failed");
                            for (int i = 0; i < res.Errors.Count; ++i)
                            {
                                Console.WriteLine($"{res.Errors[i].Line} : {res.Errors[i].ErrorText}");
                            }
                        }
                        else
                        {
                            Console.WriteLine($" -> Done");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }