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