mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
50 lines
1.3 KiB
Ruby
50 lines
1.3 KiB
Ruby
# 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
|