This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-doxia-converter.git
The following commit(s) were added to refs/heads/master by this push:
new c9053c3 [DOXIATOOLS-88] Optionally remove input files after
conversion (#85)
c9053c3 is described below
commit c9053c39dc9fd89b2fc9f9cc5e6e98c32b98a86f
Author: Konrad Windszus <[email protected]>
AuthorDate: Mon Nov 11 17:56:58 2024 +0100
[DOXIATOOLS-88] Optionally remove input files after conversion (#85)
---
.../org/apache/maven/doxia/DefaultConverter.java | 22 ++++++++++---
.../org/apache/maven/doxia/cli/CLIManager.java | 6 ++++
.../org/apache/maven/doxia/cli/ConverterCli.java | 3 +-
.../maven/doxia/wrapper/InputFileWrapper.java | 38 +++++++++++++++++++---
4 files changed, 59 insertions(+), 10 deletions(-)
diff --git a/src/main/java/org/apache/maven/doxia/DefaultConverter.java
b/src/main/java/org/apache/maven/doxia/DefaultConverter.java
index 11a8783..250d968 100644
--- a/src/main/java/org/apache/maven/doxia/DefaultConverter.java
+++ b/src/main/java/org/apache/maven/doxia/DefaultConverter.java
@@ -228,7 +228,8 @@ public class DefaultConverter implements Converter {
try {
if (input.getFile().isFile()) {
- parse(input.getFile(), input.getEncoding(), input.getFormat(),
output);
+ convert(input.getFile(), input.getEncoding(),
input.getFormat(), output);
+ cleanUp(input, input.getFile());
} else {
List<File> files;
try {
@@ -248,7 +249,8 @@ public class DefaultConverter implements Converter {
for (File f : files) {
File relativeOutputDirectory = new File(
PathTool.getRelativeFilePath(input.getFile().getAbsolutePath(), f.getParent()));
- parse(f, input.getEncoding(), input.getFormat(), output,
relativeOutputDirectory);
+ convert(f, input.getEncoding(), input.getFormat(), output,
relativeOutputDirectory);
+ cleanUp(input, f);
}
}
} finally {
@@ -256,6 +258,12 @@ public class DefaultConverter implements Converter {
}
}
+ private void cleanUp(InputFileWrapper input, File f) {
+ if (input.cleanUp(f)) {
+ LOGGER.info("Removed input file \"{}\" after successful
conversion", f);
+ }
+ }
+
/** {@inheritDoc} */
@Override
public void convert(InputReaderWrapper input, OutputStreamWrapper output)
@@ -317,9 +325,9 @@ public class DefaultConverter implements Converter {
* @throws ConverterException if any
* @throws UnsupportedFormatException if any
*/
- private void parse(File inputFile, String inputEncoding, DoxiaFormat
parserFormat, OutputFileWrapper output)
+ private void convert(File inputFile, String inputEncoding, DoxiaFormat
parserFormat, OutputFileWrapper output)
throws ConverterException, UnsupportedFormatException {
- parse(inputFile, inputEncoding, parserFormat, output, null);
+ convert(inputFile, inputEncoding, parserFormat, output, null);
}
/**
@@ -331,7 +339,7 @@ public class DefaultConverter implements Converter {
* @throws ConverterException if any
* @throws UnsupportedFormatException if any
*/
- private void parse(
+ private void convert(
File inputFile,
String inputEncoding,
DoxiaFormat parserFormat,
@@ -426,6 +434,10 @@ public class DefaultConverter implements Converter {
throw new ConverterException("IOException: " + e.getMessage(),
e);
}
}
+ LOGGER.info(
+ "Successfully converted file \"{}\" to \"{}\"",
+ inputFile.getAbsolutePath(),
+ outputFile.getAbsolutePath());
}
/**
diff --git a/src/main/java/org/apache/maven/doxia/cli/CLIManager.java
b/src/main/java/org/apache/maven/doxia/cli/CLIManager.java
index dbee83e..e8a0759 100644
--- a/src/main/java/org/apache/maven/doxia/cli/CLIManager.java
+++ b/src/main/java/org/apache/maven/doxia/cli/CLIManager.java
@@ -47,6 +47,8 @@ class CLIManager {
/** in String */
static final String IN = "in";
+ static final String REMOVE_IN = "removeIn";
+
/** out String */
static final String OUT = "out";
@@ -93,6 +95,10 @@ class CLIManager {
.desc("Input file or directory.")
.hasArg()
.build());
+ OPTIONS.addOption(Option.builder(REMOVE_IN)
+ .longOpt("removeInputAfterConversion")
+ .desc("Whether to remove the input file(s) after successful
conversion")
+ .build());
OPTIONS.addOption(Option.builder(OUT)
.longOpt("output")
.desc("Output file or directory.")
diff --git a/src/main/java/org/apache/maven/doxia/cli/ConverterCli.java
b/src/main/java/org/apache/maven/doxia/cli/ConverterCli.java
index 2998a3e..3ad605b 100644
--- a/src/main/java/org/apache/maven/doxia/cli/ConverterCli.java
+++ b/src/main/java/org/apache/maven/doxia/cli/ConverterCli.java
@@ -132,7 +132,8 @@ public class ConverterCli {
input = InputFileWrapper.valueOf(
commandLine.getOptionValue(CLIManager.IN),
parserFormat,
- commandLine.getOptionValue(CLIManager.INENCODING));
+ commandLine.getOptionValue(CLIManager.INENCODING),
+ commandLine.hasOption(CLIManager.REMOVE_IN));
output = OutputFileWrapper.valueOf(
commandLine.getOptionValue(CLIManager.OUT),
sinkFormat,
diff --git a/src/main/java/org/apache/maven/doxia/wrapper/InputFileWrapper.java
b/src/main/java/org/apache/maven/doxia/wrapper/InputFileWrapper.java
index a0dab50..2b20c1c 100644
--- a/src/main/java/org/apache/maven/doxia/wrapper/InputFileWrapper.java
+++ b/src/main/java/org/apache/maven/doxia/wrapper/InputFileWrapper.java
@@ -18,6 +18,7 @@
*/
package org.apache.maven.doxia.wrapper;
+import java.io.File;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
@@ -35,6 +36,11 @@ public class InputFileWrapper extends AbstractFileWrapper {
private final DefaultConverter.DoxiaFormat format;
+ /**
+ * If true, the related input file(s) will be removed after the conversion.
+ */
+ private final boolean removeAfterConversion;
+
/**
* Private constructor.
*
@@ -44,11 +50,13 @@ public class InputFileWrapper extends AbstractFileWrapper {
* @throws UnsupportedEncodingException if the encoding is unsupported.
* @throws FileNotFoundException if the file for absolutePath is not found.
*/
- private InputFileWrapper(String absolutePath, DefaultConverter.DoxiaFormat
format, String charsetName)
+ private InputFileWrapper(
+ String absolutePath, DefaultConverter.DoxiaFormat format, String
charsetName, boolean removeAfterConversion)
throws UnsupportedEncodingException, FileNotFoundException {
super(absolutePath, charsetName);
this.format = format;
+ this.removeAfterConversion = removeAfterConversion;
if (!getFile().exists()) {
throw new FileNotFoundException("The file '" +
getFile().getAbsolutePath() + "' doesn't exist.");
}
@@ -64,20 +72,42 @@ public class InputFileWrapper extends AbstractFileWrapper {
*/
public static InputFileWrapper valueOf(String absolutePath,
DefaultConverter.DoxiaFormat format)
throws UnsupportedEncodingException, FileNotFoundException {
- return valueOf(absolutePath, format, WriterFactory.UTF_8);
+ return valueOf(absolutePath, format, WriterFactory.UTF_8, false);
}
+ /**
+ * Performs potential clean up operations on the given file
+ * @param file the file to clean up, not null.
+ * @return {@code true} if the file was removed.
+ */
+ public boolean cleanUp(File file) {
+ if (!file.toString().startsWith(getFile().toString())) {
+ throw new IllegalStateException(
+ "The given file " + file + " is not related to the input
file: " + getFile());
+ }
+ if (removeAfterConversion) {
+ return file.delete();
+ }
+ return false;
+ }
+
+ public static InputFileWrapper valueOf(String absolutePath,
DefaultConverter.DoxiaFormat format, String charsetName)
+ throws UnsupportedEncodingException, FileNotFoundException {
+ return valueOf(absolutePath, format, charsetName, false);
+ }
/**
* @param absolutePath for a wanted file or a wanted directory, not null.
* @param format not null
* @param charsetName could be null
+ * @param removeAfterConversion if true, the file will be removed after
the conversion
* @return a type safe input reader
* @throws UnsupportedEncodingException if the encoding is unsupported.
* @throws FileNotFoundException if the file for absolutePath is not found.
*/
- public static InputFileWrapper valueOf(String absolutePath,
DefaultConverter.DoxiaFormat format, String charsetName)
+ public static InputFileWrapper valueOf(
+ String absolutePath, DefaultConverter.DoxiaFormat format, String
charsetName, boolean removeAfterConversion)
throws UnsupportedEncodingException, FileNotFoundException {
- return new InputFileWrapper(absolutePath, format, charsetName);
+ return new InputFileWrapper(absolutePath, format, charsetName,
removeAfterConversion);
}
public DefaultConverter.DoxiaFormat getFormat() {