1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/lib/integrity/checksum.rb
2021-10-14 18:20:10 +02:00

58 lines
1.7 KiB
Ruby

# frozen_string_literal: true
# Accounting integrity verifications
module Integrity; end
# Provides checksums for archiving control
class Integrity::Checksum
class << self
def code
dir = Dir.pwd
files = if Rails.env.test?
# in test mode, we compute a "lite" checksum to speed-up test running time
children_files("#{dir}/*")
else
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/**/*"))
end
content = files.map { |f| File.read(f) }.join
Integrity::Checksum.text(content)
end
def file(path)
return unless File.exist?(path)
content = File.read(path)
Integrity::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