X-Git-Url: http://git.megacz.com/?p=wix.git;a=blobdiff_plain;f=src%2FHaskellHelper.java;h=4e3b2c657400974f8e056a86b5fd82ee34ad6057;hp=753c5b8e0cb7a3e3d9731af69d8e44b055a0a045;hb=78e11871be7fa7677a0e3822b6e08b3beca1c4b7;hpb=78cfe8113affda63fdb4ea2ef607f0b8e3ee1139 diff --git a/src/HaskellHelper.java b/src/HaskellHelper.java index 753c5b8..4e3b2c6 100644 --- a/src/HaskellHelper.java +++ b/src/HaskellHelper.java @@ -79,7 +79,33 @@ public class HaskellHelper { process(indir, suffix + File.separatorChar + s, outdir); return; } - if (f.getPath().endsWith(".wix")) { + if (!f.getPath().endsWith(".wix")) { + boolean skip = false; + if (f.getName().equals(".DS_Store")) skip = true; + if (f.getName().endsWith("-")) skip = true; + if (!skip) { + File dest = new File(outdir.getAbsolutePath()+File.separatorChar+suffix); + if (dest.exists() && dest.lastModified()==f.lastModified() && dest.length()==f.length()) { + System.out.println(ANSI.yellow("no change: "+f.getPath())); + return; + } + System.out.println(ANSI.green("copying: "+f.getPath())); + File dest_ = new File(outdir.getAbsolutePath()+File.separatorChar+suffix+"-"); + new File(dest_.getParent()).mkdirs(); + FileOutputStream fos = new FileOutputStream(dest_); + FileInputStream fis = new FileInputStream(f); + byte[] buf = new byte[1024]; + while(true) { + int numread = fis.read(buf, 0, buf.length); + if (numread==-1) break; + fos.write(buf, 0, numread); + } + fos.close(); + fis.close(); + dest_.renameTo(dest); + dest.setLastModified(f.lastModified()); + } + } else { String out = "== " + suffix + " "; while(out.length() < 75) out+="="; System.out.println(ANSI.yellow(out)); @@ -90,6 +116,7 @@ public class HaskellHelper { Class.forName("Main"). getMethod("main", new Class[] { String[].class }). invoke(null, new Object[] { new String[] { f.getAbsolutePath() } }); + try { new File(new File(outPath).getParent()).mkdirs(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outPath+"+"))); pw.println(ret); @@ -97,7 +124,6 @@ public class HaskellHelper { pw.close(); File dest = new File(outPath); if (dest.exists()) { - try { Process p = Runtime.getRuntime().exec(new String[] { "diff", "-Bub", @@ -113,13 +139,13 @@ public class HaskellHelper { /*else System.out.println(ANSI.blue(s));*/ } p.waitFor(); - } catch (Exception e) { - e.printStackTrace(); - } } new File(outPath+"+").renameTo(dest); if (dest.lastModified() <= f.lastModified()) dest.setLastModified(f.lastModified()+1); + } catch (Exception e) { + e.printStackTrace(); + } } }