class Troo::Commands::Add

Attributes

id[R]
value[R]

Public Class Methods

dispatch(value, id = nil, options = {}) click to toggle source

@param [] @param [, NilClass] @param [Hash] @return [String]

# File lib/troo/cli/commands/add.rb, line 11
def dispatch(value, id = nil, options = {})
  new(value, id, options).add
end
new(value, id = nil, options = {}) click to toggle source

@param [] @param [, NilClass] @param [Hash] @return [Troo::Commands::Add]

# File lib/troo/cli/commands/add.rb, line 20
def initialize(value, id = nil, options = {})
  @value, @id, @options = value, id, options
end

Public Instance Methods

add() click to toggle source

@return [String]

# File lib/troo/cli/commands/add.rb, line 25
def add
  return success if create
  error
end

Private Instance Methods

create() click to toggle source
# File lib/troo/cli/commands/add.rb, line 45
def create
  return false if no_type?

  if type == :board
    @create ||= remote.with(value)
  else
    return false if no_local?
    @create ||= remote.with(resource.external_id, value)
  end
end
defaults() click to toggle source
# File lib/troo/cli/commands/add.rb, line 88
def defaults
  {
    type: :none
  }
end
error() click to toggle source
# File lib/troo/cli/commands/add.rb, line 36
def error
  return 'Could not create resource.' if no_type?
  "#{klass} could not be created."
end
klass() click to toggle source
# File lib/troo/cli/commands/add.rb, line 72
def klass
  type.to_s.capitalize
end
local() click to toggle source
# File lib/troo/cli/commands/add.rb, line 68
def local
  Object.const_get('Troo::' + mapping.fetch(type))
end
mapping() click to toggle source
# File lib/troo/cli/commands/add.rb, line 94
def mapping
  {
    comment: 'Card',
    board:   'Board',
    list:    'Board',
    card:    'List'
  }
end
no_local?() click to toggle source
# File lib/troo/cli/commands/add.rb, line 60
def no_local?
  resource.nil?
end
no_type?() click to toggle source
# File lib/troo/cli/commands/add.rb, line 76
def no_type?
  type == :none
end
options() click to toggle source
# File lib/troo/cli/commands/add.rb, line 84
def options
  defaults.merge!(@options)
end
quoted() click to toggle source
# File lib/troo/cli/commands/add.rb, line 41
def quoted
  type == :comment ? nil : "'#{value}'"
end
remote() click to toggle source
# File lib/troo/cli/commands/add.rb, line 56
def remote
  Object.const_get('Troo::Remote::Persistence::' + klass)
end
resource() click to toggle source
# File lib/troo/cli/commands/add.rb, line 64
def resource
  @resource ||= local.retrieve(id)
end
success() click to toggle source
# File lib/troo/cli/commands/add.rb, line 32
def success
  ['New', type.to_s, quoted, 'created.'].compact.join(' ')
end
type() click to toggle source
# File lib/troo/cli/commands/add.rb, line 80
def type
  options.fetch(:type)
end