Skip to content

Commit

Permalink
Respect 'outputDirectory' property when generating a site
Browse files Browse the repository at this point in the history
Motivation:

SphinxMojo.outputDirectory property is overwritten by Maven's calling
setReportOutputDirectory(), leaving no control over the output directory
of the generated site.

Modifications:

- Make SphinxMajo.setReportOutputDirectory() no-op
- Modify SphinxMoji.getReportOutputDirectory() to produce the output
  directory derived from SphinxMojo.outputDirectory

Result:

- SphinxMojo always respects outputDirectory property
- Fixes #16
  • Loading branch information
trustin committed Aug 13, 2018
1 parent 3ef4eb8 commit 6d81197
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 23 deletions.
37 changes: 21 additions & 16 deletions src/main/java/kr/motd/maven/sphinx/SphinxMojo.java
Original file line number Diff line number Diff line change
Expand Up @@ -155,9 +155,9 @@ public void execute() throws MojoExecutionException {
return;
}

sourceDirectory = canonicalize(sourceDirectory);
outputDirectory = canonicalize(outputDirectory);
binaryCacheDir = canonicalize(binaryCacheDir);
final File sourceDirectory = canonicalize(this.sourceDirectory);
final File outputDirectory = getReportOutputDirectory();
final File binaryCacheDir = canonicalize(this.binaryCacheDir);

// to avoid Maven overriding resulting index.html, update index.rst to force re-building of index
if (isHtmlReport()) {
Expand All @@ -178,15 +178,15 @@ public void log(String msg) {
});

getLog().info("Running Sphinx; output will be placed in " + outputDirectory);
final List<String> args = getSphinxRunnerCmdLine();
final List<String> args = getSphinxRunnerCmdLine(sourceDirectory, outputDirectory);
if (sphinxRunner.run(sourceDirectory, args) != 0) {
throw new MavenReportException("Sphinx report generation failed");
}

SphinxUtil.convertLineSeparators(outputDirectory);
// only delete crufts if Maven site is overridden (default behavior)
if (!asReport) {
deleteCruft();
deleteCruft(outputDirectory);
}
} catch (Exception e) {
throw new MojoExecutionException("Failed to run the report", e);
Expand Down Expand Up @@ -235,8 +235,7 @@ private void configureProxy() {
/**
* Deletes the crufts generated by maven-site-plugin.
*/
private void deleteCruft() {
final File outputDirectory = this.outputDirectory;
private static void deleteCruft(final File outputDirectory) {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
Expand All @@ -250,7 +249,6 @@ public void run() {
@Override
public void generate(
@SuppressWarnings("deprecation") Sink sink, Locale locale) throws MavenReportException {

try {
execute();
} catch (SphinxException e) {
Expand Down Expand Up @@ -293,18 +291,25 @@ public String getDescription(Locale locale) {

@Override
public void setReportOutputDirectory(File outputDirectory) {
// Unused
}

@Override
public File getReportOutputDirectory() {
// if documentation is generated as a report
final File actual;
if (asReport) {
// output sphinx doc to outputDirectory/sphinx instead of outputDirectory
this.outputDirectory = new File(outputDirectory.getPath() + '/' + sphinxSiteSubDirectory);
actual = new File(outputDirectory.getPath() + File.separator + sphinxSiteSubDirectory);
} else {
this.outputDirectory = outputDirectory;
actual = outputDirectory;
}
try {
return canonicalize(actual);
} catch (MojoExecutionException e) {
getLog().warn("Failed to canonicalize: " + actual, e);
return actual;
}
}

@Override
public File getReportOutputDirectory() {
return outputDirectory;
}

@Override
Expand All @@ -320,7 +325,7 @@ public boolean canGenerateReport() {
/**
* Build the Sphinx Command line options.
*/
private List<String> getSphinxRunnerCmdLine() {
private List<String> getSphinxRunnerCmdLine(File sourceDirectory, File outputDirectory) {
List<String> args = new ArrayList<>();

if (verbose) {
Expand Down
10 changes: 3 additions & 7 deletions src/site/sphinx/basic-usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,9 @@ Simply add the sphinx-maven-plugin to your ``pom.xml``:
<groupId>kr.motd.maven</groupId>
<artifactId>sphinx-maven-plugin</artifactId>
<version>\ |release|\ </version>
<reportSets>
<reportSet>
<reports>
<report>generate</report>
</reports>
</reportSet>
</reportSets>
<configuration>
<builder>html</builder>
</configuration>
</plugin>
</plugins>
</reporting>
Expand Down

0 comments on commit 6d81197

Please sign in to comment.