Diff.java

package org.docascode.cli;

import org.docascode.api.DiffCommand;
import org.docascode.api.DocAsCode;
import org.docascode.api.core.errors.DocAsCodeException;
import org.docascode.api.core.errors.NotADocAsCodeRepository;
import picocli.CommandLine;

import java.io.File;

@CommandLine.Command(name = "diff",
    description = "Compute and display a comparison of files between either Git revision or Maven versions.")
public class Diff extends Command implements Runnable {

    @CommandLine.Option(names = {"--file","-f"}, arity="1", description = "The file to compare")
    private File file;

    @CommandLine.Option(names = {"--base","-b"}, arity="1", description = "The base revision or version. (default: ${DEFAULT-VALUE}).")
    private String base = "LATEST";

    @CommandLine.Option(names = {"--revised","-r"}, arity="1", description = "the new revision or version. (default: ${DEFAULT-VALUE}).")
    private String revised = "WorkTree";

    @Override
    public void run() {
        try (DocAsCode docascode = DocAsCode.open()){
            DiffCommand diff = ((DiffCommand )docascode
                    .diff()
                    .addListener(this))
                    .setOldRevision(base)
                    .setNewRevision(revised);
            File toFile = new File(
                        docascode.getRepository().getTmpDir(),
                        docascode.getRepository().relativize(file));
                diff.setFile(file)
                        .toFile(toFile)
                        .openAtEnd(true)
                        .call();
        } catch (DocAsCodeException | NotADocAsCodeRepository e) {
            error(e);
        }
    }
}