Class: Vara::Metadata::Release

Inherits:
Object
  • Object
show all
Defined in:
lib/vara/metadata/release.rb

Overview

“Struct” representing the information about a single release in metadata.yml’s releases array

Examples:

entry from metadata.yml

releases:
  - file: cf-170.tgz
    name: cf
    version: '170'
    md5: 8a0700de688b4fdd270b41c4a4de9d0e
    url: https://releng-artifacts.s3.amazonaws.com/cf-170.tgz

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, version:, file:, md5:, sha1:, url: nil, aws: nil) ⇒ Release

Returns a new instance of Release.

Parameters:

  • name (String)
  • version (String)
  • file (String)
  • md5 (String)
  • url (String) (defaults to: nil)


51
52
53
54
55
56
57
58
59
# File 'lib/vara/metadata/release.rb', line 51

def initialize(name:, version:, file:, md5:, sha1:, url: nil, aws: nil)
  @name     = name
  @version  = version
  @basename = file
  @md5      = md5
  @sha1     = sha1
  @url      = url
  @aws = OpenStruct.new(aws) if aws
end

Instance Attribute Details

#awsOpenStruct (readonly)

Returns The AWS Configuration.

Returns:

  • (OpenStruct)

    The AWS Configuration



30
31
32
# File 'lib/vara/metadata/release.rb', line 30

def aws
  @aws
end

#basenameString (readonly)

Returns The name of the release file.

Returns:

  • (String)

    The name of the release file



21
22
23
# File 'lib/vara/metadata/release.rb', line 21

def basename
  @basename
end

#md5String (readonly)

Returns The md5 of the release file’s content.

Returns:

  • (String)

    The md5 of the release file’s content



24
25
26
# File 'lib/vara/metadata/release.rb', line 24

def md5
  @md5
end

#nameString (readonly)

Returns Name of the release.

Returns:

  • (String)

    Name of the release



15
16
17
# File 'lib/vara/metadata/release.rb', line 15

def name
  @name
end

#sha1String (readonly)

Returns The sha1 of the release file’s content.

Returns:

  • (String)

    The sha1 of the release file’s content



27
28
29
# File 'lib/vara/metadata/release.rb', line 27

def sha1
  @sha1
end

#versionString (readonly)

Returns Version of the release.

Returns:

  • (String)

    Version of the release



18
19
20
# File 'lib/vara/metadata/release.rb', line 18

def version
  @version
end

Class Method Details

.from_file(release_tarball_path) ⇒ Vara::ReleaseMetadata

Infers the metadata given a release file on disk

Parameters:

  • release_tarball_path (String)

    The path to the release file on disk

Returns:

  • (Vara::ReleaseMetadata)


35
36
37
38
39
40
41
42
43
44
# File 'lib/vara/metadata/release.rb', line 35

def self.from_file(release_tarball_path)
  md5      = Digest::MD5.file(release_tarball_path).hexdigest
  sha1     = Digest::SHA1.file(release_tarball_path).hexdigest
  basename = File.basename(release_tarball_path)

  release_parts = basename.gsub(/\.tgz$/, '')
  name, version = release_parts.split('-', 2)

  new(name: name, version: version, file: basename, md5: md5, sha1: sha1)
end

Instance Method Details

#to_sString

If the URL is set, a markdown-style URL with the basename attribute. Otherwise, just the basename.

Returns:

  • (String)


72
73
74
# File 'lib/vara/metadata/release.rb', line 72

def to_s
  @url ? "[#{basename}](#{@url})" : basename
end

#urlObject



61
62
63
64
65
66
67
# File 'lib/vara/metadata/release.rb', line 61

def url
  if @url
    @url
  elsif @aws
    "#{aws.bucket_name}/#{aws.filename}"
  end
end