]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1144086 - Move extension docs assembly from makedocs.pl to conf.py. r=dkl,a=glob
authorGervase Markham <gerv@gerv.net>
Mon, 11 May 2015 17:50:34 +0000 (18:50 +0100)
committerGervase Markham <gerv@gerv.net>
Mon, 11 May 2015 17:50:34 +0000 (18:50 +0100)
docs/en/rst/conf.py
docs/en/rst/extensions/.gitignore [new file with mode: 0644]
docs/makedocs.pl

index b371d839365daf6f3b2951ae080026c6430af5f5..c8be24e49a6444b1b3c606c778527f4e4e61e5f3 100644 (file)
@@ -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 (file)
index 0000000..2bf5214
--- /dev/null
@@ -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
index 6f353dc6dad04c36ac3d2a730878e3afa63a660f..26543bebd2063b415556b4908e71ae07b09717cc 100755 (executable)
@@ -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');