1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-10 21:24:20 +01:00
fab-manager/lib/checksum.rb

50 lines
1.3 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# provide checksums for archiving control
class Checksum
class << self
def code
dir = Dir.pwd
files = children_files("#{dir}/*")
.concat(children_files("#{dir}/app/**/*"))
.concat(children_files("#{dir}/bin/**/*"))
.concat(children_files("#{dir}/config/**/*"))
.concat(children_files("#{dir}/db/**/*"))
.concat(children_files("#{dir}/doc/**/*"))
.concat(children_files("#{dir}/docker/**/*"))
.concat(children_files("#{dir}/lib/**/*"))
.concat(children_files("#{dir}/node_modules/**/*"))
.concat(children_files("#{dir}/plugins/**/*"))
.concat(children_files("#{dir}/provision/**/*"))
.concat(children_files("#{dir}/scripts/**/*"))
.concat(children_files("#{dir}/test/**/*"))
.concat(children_files("#{dir}/vendor/**/*"))
content = files.map { |f| File.read(f) }.join
Checksum.text(content)
end
def file(path)
return unless File.exist?(path)
content = File.read(path)
Checksum.text(content)
end
def text(data)
require 'sha3'
SHA3::Digest.hexdigest(:sha256, data)
end
private
def children_files(path)
Dir[path].reject { |f| File.directory?(f) }
end
end
end