Skip to content

Commit c901724

Browse files
committed
Updated docs generation
1 parent 0c0e775 commit c901724

5 files changed

Lines changed: 1344 additions & 446 deletions

File tree

gen-docs-and-copy.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/bash
2+
./gen-docs.sh && rm -rf ../ceramic-engine.github.io/content/api-docs && cp -r docs-md ../ceramic-engine.github.io/content/api-docs

gen-docs.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,16 @@ for xml_file in docs-xml/*.xml; do
4949
# Generate table of contents
5050
echo "Generating table of contents for $base_name..."
5151
node gen-docs/bin/gen-docs.js toc "$xml_file" "docs-md/$base_name/toc.json"
52+
53+
# Generate index
54+
echo "Generating index for $base_name..."
55+
node gen-docs/bin/gen-docs.js index "docs-md/$base_name/toc.json" "docs-md/$base_name/index.md" "$base_name"
5256
done
5357

58+
# Generate root index
59+
echo "Generating root index..."
60+
node gen-docs/bin/gen-docs.js root-index "docs-md"
61+
5462
# Old dox command (commented out since we're using our own generator now)
5563
# $(ceramic haxelib) run dox -i ./docs --output-path docs --keep-field-order --exclude 'zpp_nape|microsoft|unityengine|fuzzaldrin|gif|timestamp|stb|sys|spec|sdl|polyline|poly2tri|opengl|openal|ogg|js|hsluv|hscript|glew|format|earcut|cs|cpp|com|assets|ceramic.scriptable|ceramic.macros' --title 'Ceramic API'
5664

gen-docs/src/Main.hx

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,22 @@ class Main {
3838
}
3939
generateToc(args[1], args[2]);
4040

41+
case "index":
42+
if (args.length < 4) {
43+
Sys.println("Error: Missing toc file, output file, or target");
44+
printUsage();
45+
Sys.exit(1);
46+
}
47+
generateIndex(args[1], args[2], args[3]);
48+
49+
case "root-index":
50+
if (args.length < 2) {
51+
Sys.println("Error: Missing output directory");
52+
printUsage();
53+
Sys.exit(1);
54+
}
55+
generateRootIndex(args[1]);
56+
4157
default:
4258
// Legacy mode: if first argument is a file, generate JSON
4359
if (FileSystem.exists(command) && !FileSystem.isDirectory(command)) {
@@ -55,11 +71,15 @@ class Main {
5571
Sys.println(" node gen-docs.js json <xml-file>");
5672
Sys.println(" node gen-docs.js markdown <xml-file> <output-dir>");
5773
Sys.println(" node gen-docs.js toc <xml-file> <output-file>");
74+
Sys.println(" node gen-docs.js index <toc-file> <output-file> <target>");
75+
Sys.println(" node gen-docs.js root-index <output-dir>");
5876
Sys.println("");
5977
Sys.println("Examples:");
6078
Sys.println(" node gen-docs.js json ../docs-xml/clay-native.xml");
6179
Sys.println(" node gen-docs.js markdown ../docs-xml/clay-native.xml ../docs-md/clay-native");
6280
Sys.println(" node gen-docs.js toc ../docs-xml/clay-native.xml ../docs-md/clay-native/toc.json");
81+
Sys.println(" node gen-docs.js index ../docs-md/clay-native/toc.json ../docs-md/clay-native/index.md clay-native");
82+
Sys.println(" node gen-docs.js root-index ../docs-md");
6383
}
6484

6585
static function generateJson(xmlPath:String):Void {
@@ -99,9 +119,12 @@ class Main {
99119

100120
Sys.println('Parsed ${apiData.types.length} types from $xmlPath');
101121

122+
// Extract target from output directory (e.g., "docs-md/clay-native" -> "clay-native")
123+
var target = Path.withoutDirectory(outputDir);
124+
102125
// Generate markdown files
103126
var generator = new MarkdownGenerator();
104-
generator.generateMarkdown(apiData, outputDir);
127+
generator.generateMarkdown(apiData, outputDir, target);
105128

106129
Sys.println('Generated markdown documentation in $outputDir');
107130

@@ -141,4 +164,60 @@ class Main {
141164
Sys.exit(1);
142165
}
143166
}
167+
168+
static function generateIndex(tocFile:String, outputFile:String, target:String):Void {
169+
if (!FileSystem.exists(tocFile)) {
170+
Sys.println('Error: File not found: $tocFile');
171+
Sys.exit(1);
172+
}
173+
174+
try {
175+
// Generate index from TOC
176+
var generator = new TocGenerator();
177+
generator.generateIndexFromToc(tocFile, outputFile, target);
178+
179+
Sys.println('Generated index in $outputFile');
180+
181+
} catch (e:Dynamic) {
182+
Sys.println('Error: $e');
183+
#if debug
184+
Sys.println(haxe.CallStack.toString(haxe.CallStack.exceptionStack()));
185+
#end
186+
Sys.exit(1);
187+
}
188+
}
189+
190+
static function generateRootIndex(outputDir:String):Void {
191+
if (!FileSystem.exists(outputDir)) {
192+
Sys.println('Error: Directory not found: $outputDir');
193+
Sys.exit(1);
194+
}
195+
196+
try {
197+
// Find all subdirectories in the output directory
198+
var targets = [];
199+
for (item in FileSystem.readDirectory(outputDir)) {
200+
var path = Path.join([outputDir, item]);
201+
if (FileSystem.isDirectory(path) && FileSystem.exists(Path.join([path, "index.md"]))) {
202+
targets.push(item);
203+
}
204+
}
205+
206+
// Sort targets for consistent output
207+
targets.sort(Reflect.compare);
208+
209+
// Generate root index
210+
var generator = new TocGenerator();
211+
generator.generateRootIndex(targets, Path.join([outputDir, "index.md"]));
212+
213+
Sys.println('Generated root index in $outputDir/index.md');
214+
215+
} catch (e:Dynamic) {
216+
Sys.println('Error: $e');
217+
#if debug
218+
Sys.println(haxe.CallStack.toString(haxe.CallStack.exceptionStack()));
219+
#end
220+
Sys.exit(1);
221+
}
222+
}
144223
}

0 commit comments

Comments
 (0)