Class: MinioRunner::BinaryManager
- Inherits:
-
Object
- Object
- MinioRunner::BinaryManager
- Defined in:
- lib/minio_runner/binary_manager.rb
Instance Attribute Summary collapse
-
#binary ⇒ Object
readonly
Returns the value of attribute binary.
Class Method Summary collapse
Instance Method Summary collapse
- #download_binary ⇒ Object
-
#initialize(binary) ⇒ BinaryManager
constructor
A new instance of BinaryManager.
- #install ⇒ Object
- #installed? ⇒ Boolean
- #new_version_available? ⇒ Boolean
- #version_cache_expired? ⇒ Boolean
Constructor Details
#initialize(binary) ⇒ BinaryManager
Returns a new instance of BinaryManager.
15 16 17 |
# File 'lib/minio_runner/binary_manager.rb', line 15 def initialize(binary) @binary = binary end |
Instance Attribute Details
#binary ⇒ Object (readonly)
Returns the value of attribute binary.
13 14 15 |
# File 'lib/minio_runner/binary_manager.rb', line 13 def binary @binary end |
Class Method Details
.install(binary) ⇒ Object
8 9 10 |
# File 'lib/minio_runner/binary_manager.rb', line 8 def install(binary) new(binary).install end |
Instance Method Details
#download_binary ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/minio_runner/binary_manager.rb', line 47 def download_binary Network.download(binary.platform_binary_url) do |binary_file| FileUtils.cp(binary_file, File.join(MinioRunner.config.install_dir, binary.name)) end Network.download(binary.platform_sha256sum_url) do |sha_file| FileUtils.cp(sha_file, File.join(MinioRunner.config.install_dir, binary.sha_file_name)) FileUtils.cp(sha_file, File.join(MinioRunner.config.install_dir, binary.version_file_name)) end FileUtils.chmod("ugo+rx", binary.binary_file_path) end |
#install ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/minio_runner/binary_manager.rb', line 19 def install if installed? if version_cache_expired? && new_version_available? MinioRunner.logger.debug("New version of #{binary.name} available. Downloading...") download_binary else MinioRunner.logger.debug("Version for #{binary.name} is up to date.") end else MinioRunner.logger.debug("#{binary.name} not installed. Downloading...") download_binary end MinioRunner.logger.debug("#{binary.name} installed successfully!") end |
#installed? ⇒ Boolean
60 61 62 |
# File 'lib/minio_runner/binary_manager.rb', line 60 def installed? File.exist?(binary.binary_file_path) && File.exist?(binary.version_file_path) end |
#new_version_available? ⇒ Boolean
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/minio_runner/binary_manager.rb', line 34 def new_version_available? old_version = File.read(binary.version_file_path) new_version = nil Network.download(binary.platform_sha256sum_url) do |sha_file| new_version = File.read(sha_file.path) FileUtils.cp(sha_file, File.join(MinioRunner.config.install_dir, binary.sha_file_name)) FileUtils.cp(sha_file, File.join(MinioRunner.config.install_dir, binary.version_file_name)) end old_version != new_version end |
#version_cache_expired? ⇒ Boolean
64 65 66 |
# File 'lib/minio_runner/binary_manager.rb', line 64 def version_cache_expired? Time.now - File.mtime(binary.version_file_path) > MinioRunner.config.cache_time end |