Exemplo n.º 1
0
        private static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;

            var serializer = new XmlSerializer(typeof(Configuration));

            Configuration.SetDefault();

            string configPath = "./config.xml";

            for (int i = 0; i < args.Length; i++)
            {
                switch (args[i].ToLower())
                {
                case "-config":
                    if (args.Length < i + 2)
                    {
                        Shutdown("Value of -config is not defined like : -config {configPath}");
                    }

                    configPath = args[i + 1];
                    break;

                case "-createconfig":
                    var writer = XmlWriter.Create(configPath, new XmlWriterSettings()
                    {
                        Indent = true
                    });
                    serializer.Serialize(writer, Configuration);
                    writer.Close();
                    Shutdown("Config created. Please restart");
                    break;
                }
            }

            if (!File.Exists(configPath))
            {
                var writer = XmlWriter.Create(configPath, new XmlWriterSettings()
                {
                    Indent = true
                });
                serializer.Serialize(writer, Configuration);
                writer.Close();
                Shutdown("Config created. Please restart");
            }
            else
            {
                var reader = XmlReader.Create(configPath, new XmlReaderSettings());
                Configuration = serializer.Deserialize(reader) as Configuration;
                reader.Close();
            }

            var profiles =
                new ParsingProfile[]
            {
                Configuration.XmlMessagesProfile,
                Configuration.XmlTypesProfile,
                Configuration.MessagesProfile,
                Configuration.TypesProfile,
                Configuration.DatacenterProfile,
                Configuration.EnumsProfile,
            };

            foreach (ParsingProfile parsingProfile in profiles)
            {
                Console.WriteLine("Executing profile \'{0}\' ... ", parsingProfile.Name);

                if (parsingProfile.OutPutNamespace != null)
                {
                    parsingProfile.OutPutNamespace = parsingProfile.OutPutNamespace.Insert(0, Configuration.BaseNamespace);
                }

                if (!Directory.Exists(Configuration.Output))
                {
                    Directory.CreateDirectory(Configuration.Output);
                }


                if (Directory.Exists(Path.Combine(Configuration.Output, parsingProfile.OutPutPath)))
                {
                    DeleteDirectory(Path.Combine(Configuration.Output, parsingProfile.OutPutPath));
                }

                Directory.CreateDirectory(Path.Combine(Configuration.Output, parsingProfile.OutPutPath));

                IEnumerable <string> files = Directory.EnumerateFiles(
                    Path.Combine(Configuration.SourcePath, parsingProfile.SourcePath), "*.as",
                    SearchOption.AllDirectories);

                foreach (string file in files)
                {
                    string relativePath = parsingProfile.GetRelativePath(file);

                    if (!Directory.Exists(Path.Combine(Configuration.Output, parsingProfile.OutPutPath, relativePath)))
                    {
                        Directory.CreateDirectory(Path.Combine(Configuration.Output, parsingProfile.OutPutPath, relativePath));
                    }

                    var parser = new Parser(file, parsingProfile.BeforeParsingReplacementRules,
                                            parsingProfile.IgnoredLines)
                    {
                        IgnoreMethods = parsingProfile.IgnoreMethods
                    };

                    try
                    {
                        if (parsingProfile.EnableParsing)
                        {
                            parser.ParseFile();
                        }
                    }
                    catch (InvalidCodeFileException)
                    {
                        Console.WriteLine("File {0} not parsed correctly", Path.GetFileName(file));
                        continue;
                    }

                    parsingProfile.ExecuteProfile(parser);
                }

                Console.WriteLine("Done !");
            }
        }
Exemplo n.º 2
0
        private static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;

            var serializer = new XmlSerializer(typeof(Configuration));

            Configuration.SetDefault();

            string configPath = "./config.xml";

            for (int i = 0; i < args.Length; i++)
            {
                switch (args[i].ToLower())
                {
                case "-config":
                    if (args.Length < i + 2)
                    {
                        Shutdown("Value of -config is not defined like : -config {configPath}");
                    }

                    configPath = args[i + 1];
                    break;

                case "-createconfig":
                    var writer = XmlWriter.Create(configPath, new XmlWriterSettings()
                    {
                        Indent = true
                    });
                    serializer.Serialize(writer, Configuration);
                    writer.Close();
                    Shutdown("Config created. Please restart");
                    break;
                }
            }

            if (!File.Exists(configPath))
            {
                var writer = XmlWriter.Create(configPath, new XmlWriterSettings()
                {
                    Indent = true
                });
                serializer.Serialize(writer, Configuration);
                writer.Close();
                Shutdown("Config created. Please restart");
            }
            else
            {
                var reader = XmlReader.Create(configPath, new XmlReaderSettings());
                Configuration = serializer.Deserialize(reader) as Configuration;
                reader.Close();
            }

            var profiles =
                new ParsingProfile[]
            {
                Configuration.XmlMessagesProfile,
                Configuration.XmlTypesProfile,
                //Configuration.MessagesProfile,
                //Configuration.TypesProfile,
                //Configuration.DatacenterProfile,
                //Configuration.EnumsProfile,
            };

            foreach (ParsingProfile parsingProfile in profiles)
            {
                if (parsingProfile == null)
                {
                    continue;
                }

                Console.WriteLine("Executing profile \'{0}\' ... ", parsingProfile.Name);

                if (parsingProfile.OutPutNamespace != null)
                {
                    parsingProfile.OutPutNamespace = parsingProfile.OutPutNamespace.Insert(0, Configuration.BaseNamespace);
                }

                if (!Directory.Exists(Configuration.Output))
                {
                    Directory.CreateDirectory(Configuration.Output);
                }


                if (Directory.Exists(Path.Combine(Configuration.Output, parsingProfile.OutPutPath)))
                {
                    DeleteDirectory(Path.Combine(Configuration.Output, parsingProfile.OutPutPath));
                }

                Directory.CreateDirectory(Path.Combine(Configuration.Output, parsingProfile.OutPutPath));

                IEnumerable <string> files = Directory.EnumerateFiles(
                    Path.Combine(Configuration.SourcePath, parsingProfile.SourcePath), "*.as",
                    SearchOption.AllDirectories);

                foreach (string file in files)
                {
                    if (file.Contains("NetworkDataContainer"))
                    {
                        Console.WriteLine("{0} Skipped", file);
                        continue;
                    }
                    String output   = file.Replace(parsingProfile.SourcePath, parsingProfile.OutPutPath).Replace(".as", ".cs");
                    string contents = File.ReadAllText(file);
                    Directory.CreateDirectory(Path.GetDirectoryName(output));
                    File.WriteAllText(output, new FastConvert(contents).Parsed.ToString());
                }
            }
        }