From edef0e4ec2f63105d8971d89882ef513f5aed28a Mon Sep 17 00:00:00 2001 From: Gervase Markham Date: Mon, 11 May 2015 18:50:34 +0100 Subject: [PATCH] Bug 1144086 - Move extension docs assembly from makedocs.pl to conf.py. r=dkl,a=glob --- docs/en/rst/conf.py | 40 +++++++++++++++++++++++++++++++ docs/en/rst/extensions/.gitignore | 6 +++++ docs/makedocs.pl | 27 --------------------- 3 files changed, 46 insertions(+), 27 deletions(-) create mode 100644 docs/en/rst/extensions/.gitignore diff --git a/docs/en/rst/conf.py b/docs/en/rst/conf.py index b371d83936..c8be24e49a 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 0000000000..2bf5214894 --- /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 6f353dc6da..26543bebd2 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'); -- 2.47.2