From ebf8f9a592e46b88bca24ff25eb6e522b8ca9ef3 Mon Sep 17 00:00:00 2001 From: Justin Balthrop Date: Wed, 30 Oct 2013 11:56:26 -0700 Subject: [PATCH] check timestamps of google/protobuf/descriptor.proto to determine if we should copy from proto tarball --- src/leiningen/protobuf.clj | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/leiningen/protobuf.clj b/src/leiningen/protobuf.clj index 4271288..d1cd282 100644 --- a/src/leiningen/protobuf.clj +++ b/src/leiningen/protobuf.clj @@ -61,8 +61,10 @@ (io/copy (io/reader resource) proto-file)) (recur (concat deps (dependencies proto-file))))))))))) -(defn modtime [dir] - (let [files (->> dir io/file file-seq rest)] +(defn modtime [f] + (let [files (if (fs/directory? f) + (->> f io/file file-seq rest) + [f])] (if (empty? files) 0 (apply max (map fs/mod-time files))))) @@ -133,14 +135,14 @@ "Compile com.google.protobuf.*" [project] (fetch project) - (let [descriptor (io/file (proto-path project) "google" "protobuf" "descriptor.proto") - srcdir (srcdir project)] - (when-not (.exists descriptor) - (.mkdirs (.getParentFile descriptor)) - (io/copy (io/file srcdir "src/google/protobuf/descriptor.proto") - descriptor)) - (compile-protobuf project - ["google/protobuf/descriptor.proto"] + (let [srcdir (srcdir project) + descriptor "google/protobuf/descriptor.proto" + src (io/file srcdir "src" descriptor) + dest (io/file (proto-path project) descriptor)] + (.mkdirs (.getParentFile dest)) + (when (> (modtime src) (modtime dest)) + (io/copy src dest)) + (compile-protobuf project [descriptor] (io/file srcdir "java" "src" "main" "java")))) (defn protobuf