class Kontena::Cli::Stacks::StackName

Attributes

stack[R]

A class for parsing stack name strings, such as kontena/foo:1.0.0

user[R]

A class for parsing stack name strings, such as kontena/foo:1.0.0

version[R]

A class for parsing stack name strings, such as kontena/foo:1.0.0

Public Class Methods

new(definition = nil, version = nil) click to toggle source

@param definition [String] such as kontena/foo:1.0.0 @param version [String] set version separately @return [StackName] @example

name = StackName.new('kontena/foo:0.1.0')
name.user => 'kontena'
name.stack => 'foo'
name.version => '0.1.0'
name.stack_name => 'kontena/foo'
name.to_s => 'kontena/foo:0.1.0
# File lib/kontena/cli/stacks/stack_name.rb, line 19
def initialize(definition = nil, version = nil)
  if definition.kind_of?(Hash)
    @user = definition[:user] || definition['user']
    @stack = definition[:stack] || definition['stack']
    @version = definition[:version] || definition['version'] || version
  elsif definition.kind_of?(String)
    parsed = parse(definition)
    @user = parsed[:user]
    @stack = parsed[:stack]
    @version = parsed[:version] || version
  end
end

Public Instance Methods

pre?() click to toggle source

True when version is a prerelease @return [NilClass,TrueClass,FalseClass] nil when no version, true when prerelease, false when not.

# File lib/kontena/cli/stacks/stack_name.rb, line 47
def pre?
  return nil if version.nil?
  !Semantic::Version.new(version).pre.nil?
end
stack_name() click to toggle source

Stack name without version @return [String] example: kontena/foo

# File lib/kontena/cli/stacks/stack_name.rb, line 34
def stack_name
  [user, stack].compact.join('/')
end
to_s() click to toggle source

Full stack name including version if present @return [String] example: kontena/foo:0.1.0

# File lib/kontena/cli/stacks/stack_name.rb, line 40
def to_s
  version ? "#{stack_name}:#{version}" : stack_name
end
Also aliased as: to_str
to_str()
Alias for: to_s

Private Instance Methods

parse(definition) click to toggle source
# File lib/kontena/cli/stacks/stack_name.rb, line 54
def parse(definition)
  return {} if definition.empty?
  name, version = definition.split(':', 2)
  if name.include?('/')
    user, stack = name.split('/', 2)
  else
    user = nil
    stack = name
  end
  {
    user: user,
    stack: stack,
    version: version
  }
end