summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/en/rst/conf.py40
-rw-r--r--docs/en/rst/extensions/.gitignore6
-rwxr-xr-xdocs/makedocs.pl27
3 files changed, 46 insertions, 27 deletions
diff --git a/docs/en/rst/conf.py b/docs/en/rst/conf.py
index b371d8393..c8be24e49 100644
--- a/docs/en/rst/conf.py
+++ b/docs/en/rst/conf.py
@@ -12,6 +12,8 @@
# serve to show the default.
import sys, os, re
+import os.path
+import shutil
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
@@ -384,3 +386,41 @@ pdf_fit_background_mode = 'scale'
todo_include_todos = True
extlinks = {'bug': ('https://bugzilla.mozilla.org/show_bug.cgi?id=%s', 'bug ')}
+
+# -- Assemble extension documentation ------------------------------------------
+
+# os.getcwd() is docs/$lang/rst
+lang = os.path.basename(os.path.dirname(os.getcwd()))
+
+# This is technically defined in Bugzilla/Constants.pm in Perl, but it's
+# unlikely to change if we use a relative path.
+ext_dir = "../../../extensions"
+
+# Still, check just in case, so if it ever changes, we know
+if (os.path.isdir(ext_dir)):
+ # Clear out old extensions docs
+ for dir in os.listdir("extensions"):
+ shutil.rmtree(os.path.join("extensions", dir))
+
+ # Copy in new copies
+ for ext_name in os.listdir(ext_dir):
+ ext_path = os.path.join(ext_dir, ext_name)
+ # Ignore files in the extensions/ directory (e.g. create.pl)
+ if not os.path.isdir(ext_path):
+ continue
+
+ # Ignore disabled extensions
+ if os.path.isfile(os.path.join(ext_path, "disabled")):
+ continue
+
+ src = os.path.join(ext_path, "docs", lang, "rst")
+
+ # Ignore extensions without rst docs in this language
+ if not os.path.isdir(src):
+ continue
+
+ dst = os.path.join("extensions", ext_name)
+
+ shutil.copytree(src, dst)
+else:
+ print "Warning: Bugzilla extension directory not found: " + ext_dir
diff --git a/docs/en/rst/extensions/.gitignore b/docs/en/rst/extensions/.gitignore
new file mode 100644
index 000000000..2bf521489
--- /dev/null
+++ b/docs/en/rst/extensions/.gitignore
@@ -0,0 +1,6 @@
+# Git doesn't like having empty directories in the repo.
+# So we have this file.
+# It says to ignore everything in this directory.
+*
+# Except this file, of course.
+!.gitignore
diff --git a/docs/makedocs.pl b/docs/makedocs.pl
index 6f353dc6d..26543bebd 100755
--- a/docs/makedocs.pl
+++ b/docs/makedocs.pl
@@ -34,7 +34,6 @@ use lib qw(.. ../lib lib);
use Cwd;
use File::Copy::Recursive qw(rcopy);
-use File::Find;
use File::Path qw(rmtree);
use File::Which qw(which);
use Pod::Simple;
@@ -116,32 +115,6 @@ foreach my $lang (@langs) {
next if grep { $_ eq '--pod-only' } @ARGV;
- chdir $docparent;
-
- # Generate extension documentation, both normal and API
- my $ext_dir = bz_locations()->{'extensionsdir'};
- my @ext_paths = grep { $_ !~ /\/create\.pl$/ && ! -e "$_/disabled" }
- glob("$ext_dir/*");
- my %extensions;
- foreach my $item (@ext_paths) {
- my $basename = basename($item);
- if (-d "$item/docs/$lang/rst") {
- $extensions{$basename} = "$item/docs/$lang/rst";
- }
- }
-
- # Collect up local extension documentation into the extensions/ dir.
- rmtree("$lang/rst/extensions", 0, 1);
-
- foreach my $ext_name (keys %extensions) {
- my $src = $extensions{$ext_name} . "/*";
- my $dst = "$docparent/$lang/rst/extensions/$ext_name";
- mkdir($dst) unless -d $dst;
- rcopy($src, $dst);
- }
-
- chdir "$docparent/$lang";
-
MakeDocs('HTML', 'html');
MakeDocs('TXT', 'text');