Class: TheFox::Timr::Command::BasicCommand
- Inherits:
-
Object
- Object
- TheFox::Timr::Command::BasicCommand
- Extended by:
- Error
- Defined in:
- lib/timr/command/basic_command.rb
Overview
Basic Class
Direct Known Subclasses
ContinueCommand, HelpCommand, LogCommand, PauseCommand, PopCommand, PushCommand, ReportCommand, ResetCommand, StartCommand, StatusCommand, StopCommand, TaskCommand, TrackCommand, VersionCommand
Instance Attribute Summary collapse
-
#cwd ⇒ Object
Current Working Directory.
Class Method Summary collapse
-
.create_command_from_argv(argv) ⇒ Object
Creates a new Command instance for each command string.
-
.get_command_class_by_name(name) ⇒ Object
Get the Class for each command string.
Instance Method Summary collapse
-
#initialize(argv = Array.new) ⇒ BasicCommand
constructor
A new instance of BasicCommand.
-
#run ⇒ Object
This is the actual execution of the Command.
-
#shutdown ⇒ Object
Should be executed after ‘run` to gently save everything.
Constructor Details
#initialize(argv = Array.new) ⇒ BasicCommand
Returns a new instance of BasicCommand.
17 18 19 20 |
# File 'lib/timr/command/basic_command.rb', line 17 def initialize(argv = Array.new) @cwd = nil @timr = nil end |
Instance Attribute Details
#cwd ⇒ Object
Current Working Directory
15 16 17 |
# File 'lib/timr/command/basic_command.rb', line 15 def cwd @cwd end |
Class Method Details
.create_command_from_argv(argv) ⇒ Object
Creates a new Command instance for each command string.
For example, it returns a new StopCommand instance when ‘stop` String is provided by `argv` Array.
Primary used by ‘bin/timr`.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/timr/command/basic_command.rb', line 44 def create_command_from_argv(argv) # -C <path> cwd_opt = Pathname.new("#{Dir.home}/.timr/defaultc"). # Default Client command_name = nil command_argv = Array.new loop_c = 0 while loop_c < 1024 && argv.length > 0 loop_c += 1 arg = argv.shift if command_name command_argv << arg else case arg when '-h', '--help', 'help' command_name = 'help' when '-V', '--version' command_name = 'version' when '-C' cwd_opt = Pathname.new(argv.shift). when '--install-basepath' timr_gem = Gem::Specification.find_by_name('timr') print timr_gem.gem_dir exit else if arg[0] == '-' raise CommandError, "Unknown argument '#{arg}'. See 'timr --help'." else command_name = arg end end end end command_class = get_command_class_by_name(command_name) command = command_class.new(command_argv) command.cwd = cwd_opt command end |
.get_command_class_by_name(name) ⇒ Object
Get the Class for each command string.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/timr/command/basic_command.rb', line 86 def get_command_class_by_name(name) case name when 'help', '', nil command = HelpCommand when 'version' command = VersionCommand when 'status', 's' command = StatusCommand when 'start' command = StartCommand when 'stop' command = StopCommand when 'push' command = PushCommand when 'pop' command = PopCommand when 'continue', 'cont', 'c' command = ContinueCommand when 'pause', 'p' command = PauseCommand when 'log' command = LogCommand when 'task' command = TaskCommand when 'track' command = TrackCommand when 'report' command = ReportCommand when 'reset' command = ResetCommand else raise CommandError, "'%s' is not a timr command. See 'timr --help'." % [name] end end |
Instance Method Details
#run ⇒ Object
This is the actual execution of the Command.
23 24 25 |
# File 'lib/timr/command/basic_command.rb', line 23 def run raise NotImplementedError end |
#shutdown ⇒ Object
Should be executed after ‘run` to gently save everything.
28 29 30 31 32 |
# File 'lib/timr/command/basic_command.rb', line 28 def shutdown if @timr @timr.shutdown end end |