-
Notifications
You must be signed in to change notification settings - Fork 5
/
parallel-build-with-documentation.wls
90 lines (62 loc) · 2.59 KB
/
parallel-build-with-documentation.wls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
start = SessionTime[];
PacletUninstall["Prototypes"];
(* copy source files to build directory *)
Print["\n================================================================================"];
Print["Setting Up Build"];
Print["================================================================================\n"];
source = FileNameJoin[{ DirectoryName[ First @ $ScriptCommandLine ], "Prototypes"}];
Print["Source directory: ", source];
build = "D:\\output\\Prototypes";
Print["Build directory: ", build];
DeleteDirectory[build, DeleteContents->True];
CopyDirectory[source, build];
(* build documentation *)
Print["\n================================================================================"];
Print["Building Documentation"];
Print["================================================================================\n"];
LaunchKernels[2];
DistributeDefinitions[source,build];
PrependTo[$Path,"D:\\git\\pubs"];
ParallelEvaluate @ PrependTo[$Path,"D:\\git\\pubs"];
Quiet[ Get["DocumentationBuild`"], {RunProcess::pnfd, StringReplace::strse}];
ParallelEvaluate @ Quiet[ Get["DocumentationBuild`"], {RunProcess::pnfd, StringReplace::strse}];
files = FileNames["*.nb", FileNameJoin[{build, "Documentation"}], Infinity];
Print["Number of files: ", Length @ files];
ParallelMap[
Function[{file},
Module[{source},
Print["Processing file: ", file];
source = RenameFile[file, file <> "-source"];
Quiet[ MakeNotebook[source, "RasterizeOutput" -> False, "outfile" -> file], {ReplaceAll::reps} ];
DeleteFile[source];
]],
files];
CloseKernels[];
(* create index *)
Print["\n================================================================================"];
Print["Index Documentation"];
Print["================================================================================\n"];
Needs["DocumentationSearch`"];
index = FileNameJoin[{build, "Documentation", "English", "SearchIndex", "2"}];
Print["Indexing: ", index];
CreateDirectory[index];
Quiet[
DocumentationSearch`CreateDocumentationIndex[
files,
FileNameDrop[index, -1],
"2",
OverwriteTarget -> True
],
{CreateSearchIndex::uf}
]
ReinstallJava[]
(* create paclet *)
Print["\n================================================================================"];
Print["Building Paclet"];
Print["================================================================================\n"];
DeleteFile /@ FileNames["*.paclet", ParentDirectory[build]];
paclet = PackPaclet[build];
Print["Finished paclet: ", paclet];
(* install paclet *)
PacletInstall[paclet,"IgnoreVersion"->True];
Print["\nElapsed time: ", N[ SessionTime[] - start ], " seconds" ];