copy any files found in the source directory which are not wix files
[wix.git] / src / HaskellHelper.java
index 290d3d7..a9efb30 100644 (file)
@@ -1,4 +1,6 @@
-// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license
+// Copyright 2008 the Contributors, as shown in the revision logs.
+// Licensed under the Apache Public Source License 2.0 ("the License").
+// You may not use this file except in compliance with the License.
 
 import edu.berkeley.sbp.*;
 import edu.berkeley.sbp.misc.*;
@@ -77,7 +79,32 @@ 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+"-");
+                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));