Class: Dsu::Subcommands::Project

Inherits:
BaseSubcommand show all
Defined in:
lib/dsu/subcommands/project.rb

Instance Method Summary collapse

Methods included from Dsu::Support::Ask

#ask_while, #yes?

Methods inherited from BaseCLI

date_option_description, exit_on_failure?, #initialize, mnemonic_option_description

Methods included from Dsu::Support::TimesSortable

#sorted_dsu_times_for, #times_for, #times_sort

Methods included from Dsu::Support::CommandHookable

included

Methods included from Dsu::Support::CommandHelpColorizable

included

Methods included from Dsu::Support::ColorThemable

apply_theme, #prompt_with_options

Constructor Details

This class inherits a constructor from Dsu::BaseCLI

Instance Method Details

#create(project_name = nil, description = nil) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dsu/subcommands/project.rb', line 26

def create(project_name = nil, description = nil)
  project_name = project_name.to_s.strip
  description = description.to_s.strip
  if project_name.blank?
    return Views::Shared::Error.new(
      messages: I18n.t('subcommands.project.messages.project_name_blank')
    ).render
  end

  options = configuration.to_h.merge(self.options).with_indifferent_access
  presenter = Presenters::Project::CreatePresenter.new(project_name: project_name,
    description: description, options: options)
  Views::Project::Create.new(presenter: presenter, options: options).render
end

#delete(project_name_or_number = nil) ⇒ Object



43
44
45
46
47
# File 'lib/dsu/subcommands/project.rb', line 43

def delete(project_name_or_number = nil)
  options = configuration.to_h.merge(self.options).with_indifferent_access
  presenter = delete_presenter_for(project_name_or_number, options: options)
  delete_view_for(project_name_or_number, presenter: presenter, options: options).render
end

#listObject



51
52
53
54
55
# File 'lib/dsu/subcommands/project.rb', line 51

def list
  options = configuration.to_h.merge(self.options).with_indifferent_access
  presenter = Presenters::Project::ListPresenter.new(options: options)
  Views::Project::List.new(presenter: presenter, options: options).render
end

#rename(project_name_or_number = nil, new_project_name = nil, new_project_description = nil) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/dsu/subcommands/project.rb', line 59

def rename(project_name_or_number = nil, new_project_name = nil, new_project_description = nil)
  project_name_or_number = project_name_or_number.to_s.strip
  new_project_name = new_project_name&.to_s&.strip
  new_project_description = new_project_description&.to_s&.strip

  if new_project_name.blank?
    return Views::Shared::Error.new(
      messages: I18n.t('subcommands.project.messages.new_project_name_blank')
    ).render
  end

  options = configuration.to_h.merge(self.options).with_indifferent_access
  presenter = rename_presenter_for(project_name_or_number, new_project_name: new_project_name,
    new_project_description: new_project_description, options: options)
  rename_view_for(project_name_or_number, presenter: presenter, options: options).render
end

#use(project_name_or_number = nil) ⇒ Object



80
81
82
83
84
# File 'lib/dsu/subcommands/project.rb', line 80

def use(project_name_or_number = nil)
  options = configuration.to_h.merge(self.options).with_indifferent_access
  presenter = use_presenter_for(project_name_or_number, options: options)
  use_view_for(project_name_or_number, presenter: presenter, options: options).render
end