-
Notifications
You must be signed in to change notification settings - Fork 21
/
generateDocs.cfm
126 lines (101 loc) · 4.05 KB
/
generateDocs.cfm
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<!---
This h4ckt4st!c file builds the API reference documenation from the Preside system services directory.
It must be run with CommandBox from the command line (the easiest way to do this is using the build.sh file
that also runs the sphinx build)
--->
<cfsetting enablecfoutputonly="true" />
<cfscript>
// SERVICE LAYER CFCs
cfcFiles = DirectoryList( "/preside/system/services", true, "path", "*.cfc" );
fullPresidePath = ExpandPath( "/preside" );
apiDocsPath = "/docs/05.reference/01.api";
indexDocPath = apiDocsPath & "/chapter.md";
srcToPresideDocs = new SourceToPresideDocs();
createdDocs = {};
if ( DirectoryExists( apiDocsPath ) ) {
DirectoryDelete( apiDocsPath, true );
}
DirectoryCreate( apiDocsPath );
indexDoc = CreateObject( "java", "java.lang.StringBuffer" );
indexDoc.append( "---" & Chr(10) );
indexDoc.append( "id: systemservices" & Chr(10) );
indexDoc.append( "title: System service APIs" & Chr(10) );
indexDoc.append( "---" & Chr(10) & Chr(10) );
for( file in cfcFiles ) {
componentPath = Replace( file, fullPresidePath, "preside" );
componentPath = ReReplace( componentPath, "\.cfc$", "" );
componentPath = ListChangeDelims( componentPath, ".", "\/" );
try {
meta = GetComponentMetaData( componentPath );
} catch( any e ) {
meta = {};
}
if ( IsBoolean( meta.autodoc ?: "" ) && meta.autodoc ) {
result = srcToPresideDocs.createCFCDocumentation( componentPath, apiDocsPath );
if ( result.success ) {
createdDocs[ result.filename ] = { title = result.title };
}
}
}
sortedDocs = createdDocs.sort( "textnocase", "asc", "title" );
for( doc in sortedDocs ){
indexDoc.append( "* [[" & doc & "]]" & Chr(10) );
}
FileWrite( indexDocPath, indexDoc.toString() );
// PRESIDE OBJECTS
cfcFiles = DirectoryList( "/preside/system/preside-objects", true, "path", "*.cfc" );
fullPresidePath = ExpandPath( "/preside" );
apiDocsPath = "/docs/05.reference/02.presideobjects";
indexDocPath = apiDocsPath & "/chapter.md";
createdDocs = {};
if ( DirectoryExists( apiDocsPath ) ) {
DirectoryDelete( apiDocsPath, true );
}
DirectoryCreate( apiDocsPath );
indexDoc = CreateObject( "java", "java.lang.StringBuffer" );
indexDoc.append( "---" & Chr(10) );
indexDoc.append( "id: systempresideobjects" & Chr(10) );
indexDoc.append( "title: System Preside Objects" & Chr(10) );
indexDoc.append( "---" & Chr(10) & Chr(10) );
for( file in cfcFiles ) {
componentPath = Replace( file, fullPresidePath, "preside" );
componentPath = ReReplace( componentPath, "\.cfc$", "" );
componentPath = ListChangeDelims( componentPath, ".", "\/" );
result = srcToPresideDocs.createPresideObjectDocumentation( componentPath, apiDocsPath );
if ( result.success ) {
createdDocs[ result.filename ] = { title = result.title };
}
}
sortedDocs = createdDocs.sort( "textnocase", "asc", "title" );
for( doc in sortedDocs ){
indexDoc.append( "* [[" & doc & "]]" & Chr(10) );
}
FileWrite( indexDocPath, indexDoc.toString() );
// // FORMS
xmlFiles = DirectoryList( "/preside/system/forms", true, "path", "*.xml" );
formsDocsPath = "/docs/05.reference/03.systemforms";
indexDocPath = formsDocsPath & "/chapter.md";
createdDocs = {};
if ( DirectoryExists( formsDocsPath ) ) {
DirectoryDelete( formsDocsPath, true );
}
DirectoryCreate( formsDocsPath );
indexDoc = CreateObject( "java", "java.lang.StringBuffer" );
indexDoc.append( "---" & Chr(10) );
indexDoc.append( "id: systemforms" & Chr(10) );
indexDoc.append( "title: System form layouts" & Chr(10) );
indexDoc.append( "---" & Chr(10) & Chr(10) );
for( file in xmlFiles ) {
result = srcToPresideDocs.writeXmlFormDocumentation( file, formsDocsPath );
if ( result.success ) {
createdDocs[ result.filename ] = { title = result.title };
}
}
sortedDocs = createdDocs.sort( "textnocase", "asc", "title" );
for( doc in sortedDocs ){
indexDoc.append( "* [[form-" & doc & "]]" & Chr(10) );
}
FileWrite( indexDocPath, indexDoc.toString() );
content reset=true;
echo( "Docs generated :)" & Chr( 10 ) & Chr( 13 ) );
</cfscript>