예제 #1
0
        static void Main(string[] args)
        {
            var libDir = args.Length == 0 ? GetLibraryDirectory() : args[0];

            if (!Directory.Exists(libDir))
            {
                throw new DirectoryNotFoundException("指定されたディレクトリが見つかりません。");
            }

            var srcDir      = Path.Combine(libDir, "src");
            var snippetsDir = Path.Combine(libDir, "snippets");

            Directory.CreateDirectory(snippetsDir);
            Directory.CreateDirectory(srcDir);

            var snippets = new CodeSnippets();

            foreach (var path in Directory.GetFiles(srcDir, "*.csx", SearchOption.AllDirectories))
            {
                using StreamReader reader = new StreamReader(path);
                var parsed = CodeSnippet.Parse(reader);
                if (parsed is null)
                {
                    continue;
                }
                snippets.CodeSnippet.Add(parsed);
            }

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

            using StreamWriter writer = new StreamWriter(Path.Combine(snippetsDir, "snippet.snippet"));
            serializer.Serialize(writer, snippets);
        }