PreCommitCtrl.java

  1. package org.docascode.hooks;

  2. import org.docascode.utils.Utils;
  3. import org.docx4j.TextUtils;
  4. import org.docx4j.openpackaging.exceptions.Docx4JException;
  5. import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
  6. import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
  7. import org.eclipse.jgit.api.Git;
  8. import org.eclipse.jgit.api.errors.GitAPIException;
  9. import org.eclipse.jgit.diff.DiffEntry;

  10. import java.io.*;
  11. import java.util.List;

  12. public class PreCommitCtrl {
  13.     public void run() throws Exception {
  14.         try {
  15.             Git git = Git.open(Utils.getRepository().getTopLevel());
  16.             List<DiffEntry> diffList = git.diff().setCached(true).call();
  17.             for (DiffEntry entry : diffList){
  18.                 Utils.info(entry.getNewPath());
  19.                 WordprocessingMLPackage pkg = WordprocessingMLPackage.load(new File(Utils.getRepository().getTopLevel().getAbsolutePath()+"/"+entry.getNewPath()));

  20.                 MainDocumentPart documentPart = pkg.getMainDocumentPart();

  21.                 org.docx4j.wml.Document wmlDocumentEl = (org.docx4j.wml.Document)documentPart.getJaxbElement();

  22.                 OutputStream os = new FileOutputStream(Utils.getRepository().getTopLevel().getAbsolutePath()+"/.docascode/markdown/test.md");
  23.                 Writer out = new OutputStreamWriter(os);

  24.                 TextUtils.extractText(wmlDocumentEl, out);
  25.                 out.close();
  26.             }
  27.         } catch (IOException e) {
  28.             e.printStackTrace();
  29.         } catch (GitAPIException e) {
  30.             e.printStackTrace();
  31.         }
  32.     }
  33. }