annotate Tools/DocGen/Program.Chm.cs @ 6:11b6da379593

Исправлена странная ошибка при использовании OfType<...>().Where(...)
author cin
date Mon, 05 Dec 2016 05:50:52 +0300
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Diagnostics;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 namespace DocGen
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 partial class Program
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 static readonly string _template = Path.GetFullPath(@"..\..\content\ChmTemplate.html");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 static FileAction FilterFile(string fileName)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 var name = Path.GetFileName(fileName).ToLower();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 switch (name)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 case "download.htm" :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 case "robots.txt" : return FileAction.Skip;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 default :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 if (fileName.ToLower().EndsWith("\\content\\index.htm"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 return FileAction.Skip;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 return FileAction.Process;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 static void CreateTarget(FileItem root)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 CreateProjectFile(root);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 CreateIndexFile ();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 CreateContentFile(root);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 var hcc = ProgramFilesx86() + @"\HTML Help Workshop\hhc.exe";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 Process.Start(hcc, destPath + "BLToolkit.hhp").WaitForExit();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 Process.Start(Path.GetFullPath(@"..\..\..\..\Source\Doc\") + "BLToolkit.chm");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 static string ProgramFilesx86()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 if (IntPtr.Size == 8 || !String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 return Environment.GetEnvironmentVariable("ProgramFiles");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 static void CreateProjectFile(FileItem root)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 using (var sw = File.CreateText(destPath + "BLToolkit.hhp"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 sw.WriteLine("[FILES]");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 foreach (var file in root.GetFiles())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 var s = file.Path;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 sw.WriteLine(s);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 var path = Path.GetFullPath(@"..\..\..\..\Source\Doc\");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 sw.WriteLine(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 [OPTIONS]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 Title=BLToolkit
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 Auto Index=Yes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 Compatibility=1.1 or later
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 Compiled file={0}BLToolkit.chm
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 Default Window=MsdnHelp
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 Default topic=Home.htm
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 Display compile progress=No
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 Error log file=BLToolkit.log
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 Full-text search=Yes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 Index file=BLToolkit.hhk
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 Language=0x409 English (United States)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 Contents file=BLToolkit.hhc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 [WINDOWS]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 MsdnHelp=""Business Logic Toolkit for .NET Help"",""BLToolkit.hhc"",""BLToolkit.hhk"",""Home.htm"",""Home.htm"",,,,,0x63520,250,0x387e,[50,25,850,625],0x1020000,,,,,,0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 [INFOTYPES]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 ",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 path);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 private static void CreateIndexFile()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 using (var sw = File.CreateText(destPath + "BLToolkit.hhk"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 sw.WriteLine("<HTML><HEAD></HEAD><BODY><UL>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 foreach (var index in IndexItem.Index)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 sw.WriteLine(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 @"<LI><OBJECT type=""text/sitemap""><param name=""Name"" value=""{0}"">",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 index.Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 if (index.Files.Count == 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 throw new InvalidDataException(string.Format("Index '{0}' is empty.", index.Name));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 foreach (var file in index.Files)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 if (file.Path == "Home.htm")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 sw.WriteLine(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 <param name=""Name"" value=""{0}"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 <param name=""Local"" value=""{1}"">",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 file.Title, file.Path);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 sw.WriteLine("</OBJECT>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 sw.WriteLine("</UL></BODY></HTML>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 private static void CreateContent(FileItem dir, TextWriter sw)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 if (dir.Items == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 return;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 var index = dir.Items.Find(i => i.Name.ToLower().EndsWith("index.htm"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 if (index == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 sw.WriteLine(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 @"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 <LI><OBJECT type=""text/sitemap"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 <param name=""Name"" value=""{0}"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 </OBJECT>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 <UL>",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 dir.Title);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 sw.WriteLine(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 @"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 <LI><OBJECT type=""text/sitemap"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 <param name=""Name"" value=""{0}"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 <param name=""Local"" value=""{1}"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 </OBJECT>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 <UL>",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 index.Title, index.Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 foreach (var file in dir.Items)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 if (file.Name.ToLower().EndsWith("index.htm"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 if (file.IsFile)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 sw.WriteLine(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 <LI><OBJECT type=""text/sitemap"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 <param name=""Name"" value=""{0}"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 <param name=""Local"" value=""{1}"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 </OBJECT>",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 file.Title, file.Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 CreateContent(file, sw);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 sw.WriteLine("</UL>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 private static void CreateContentFile(FileItem root)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 using (var sw = File.CreateText(destPath + "BLToolkit.hhc"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 sw.WriteLine(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 <HTML>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 <HEAD>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 </HEAD><BODY>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 <UL>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 <LI> <OBJECT type=""text/sitemap"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 <param name=""Name"" value=""Home"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 <param name=""Local"" value=""Home.htm"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 </OBJECT>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 <LI> <OBJECT type=""text/sitemap"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 <param name=""Name"" value=""License"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 <param name=""Local"" value=""License.htm"">
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 </OBJECT>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 foreach (var file in root.Items)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 if (!file.IsFile && file.Name == "Doc")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 file.Title = "Documentation";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 CreateContent(file, sw);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 sw.WriteLine(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 </UL>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 </BODY></HTML>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 ");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 }