Class: MinioRunner::BinaryManager

Inherits:
Object
  • Object
show all
Defined in:
lib/minio_runner/binary_manager.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#binaryObject (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_binaryObject



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

#installObject



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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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