Class: DuyojiTodo::Command

Inherits:
Object
  • Object
show all
Defined in:
lib/duyoji_todo/command.rb,
lib/duyoji_todo/command/options.rb

Overview

コマンドラインベースの処理を行うクラスです

Author:

  • Tsuyoshi Maeda

Defined Under Namespace

Modules: Options

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv) ⇒ Command

Returns a new instance of Command.



15
16
17
# File 'lib/duyoji_todo/command.rb', line 15

def initialize(argv)
	@argv = argv
end

Class Method Details

.run(argv) ⇒ Object



10
11
12
# File 'lib/duyoji_todo/command.rb', line 10

def run(argv)
	new(argv).execute
end

Instance Method Details

#create_task(name, content) ⇒ Object



45
46
47
48
# File 'lib/duyoji_todo/command.rb', line 45

def create_task(name, content)
    # タスク作成時のstatusはデフォルト値が使われNOT_YETとなる
    Task.create!(name: name, content: content).reload
end

#delete_task(id) ⇒ Object



50
51
52
53
# File 'lib/duyoji_todo/command.rb', line 50

def delete_task(id)
    task = Task.find(id)
	task.destroy
end

#executeObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/duyoji_todo/command.rb', line 19

def execute
    options     = Options.parse!(@argv)
	sub_command = options.delete(:command)

	#puts options

	DB.prepare

	tasks = case sub_command
					when 'create'
						create_task(options[:name], options[:content])
					when 'delete'
						delete_task(options[:id])
					when 'update'
						update_task(options.delete(:id), options)
					when 'list'
						find_tasks(options[:status])
					end

	display_tasks tasks

rescue => e
	abort "Error: #{e.message}"

end

#find_tasks(status_name) ⇒ Object



66
67
68
69
70
71
72
73
74
75
# File 'lib/duyoji_todo/command.rb', line 66

def find_tasks(status_name)
	all_tasks = Task.order('created_at DESC')

	if status_name
		status = DuyojiTodo::Task::STATUS.fetch(status_name.upcase)
		all_tasks.status_is(status)
	else
		all_tasks
	end
end

#update_task(id, attributes) ⇒ Object



55
56
57
58
59
60
61
62
63
64
# File 'lib/duyoji_todo/command.rb', line 55

def update_task(id, attributes)
	if status_name = attributes[:status]
		attributes[:status] = DuyojiTodo::Task::STATUS.fetch(status_name.upcase)
	end

	task = Task.find(id)
	task.update_attributes! attributes

	task.reload
end