lib/change.rb in change-0.1.2 vs lib/change.rb in change-0.1.3
- old
+ new
@@ -19,14 +19,14 @@
def d(reload=false)
if @d && !reload
@d
else
- paths = Dir.chdir(@root) { Dir["**/*"] }
- add = paths - states.keys
- rem = states.keys - paths
- hashes = murmur_hashes(paths)
+ paths = Dir.chdir(@root) { Dir["**/*"] }
+ add = paths - states.keys
+ rem = states.keys - paths
+ hashes = file_hashes(paths)
mod = paths.inject([]) do |array, path|
hash = hashes[path]
size = Dir.chdir(@root) { File.size(path) }
@@ -46,11 +46,11 @@
mod -= add
rem.each { |path| states.delete(path) }
write!
- @d = { :add => add, :mod => mod, :rem => rem }
+ @d = { :add => add.sort, :mod => mod.sort, :rem => rem.sort }
end
end
def d_
@last_session
@@ -81,18 +81,14 @@
def data
@data ||= (YAML.load(File.read("#{@root}/.change.yml")) rescue {})
end
- def murmur_bin
- @murmur ||= File.expand_path('../../bin/murmur3', __FILE__)
- end
-
- def murmur_hashes(paths)
- hashes = Dir.chdir(@root) do
- `#{murmur_bin} #{paths.collect { |m| "'#{m}'" }.join(' ')}`
+ def file_hashes(paths)
+ paths.inject({}) do |memo, path|
+ memo[path] = Digest::MD5.hexdigest(File.read("#{@root}/#{path}"))
+ memo
end
- Hash[paths.zip(hashes.split("\n"))]
end
def deps
data['deps'] ||= {}
end
\ No newline at end of file