Sutto-marvin 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION.yml +1 -1
- data/bin/marvin +52 -12
- data/lib/marvin/command_handler.rb +1 -4
- metadata +1 -1
data/VERSION.yml
CHANGED
data/bin/marvin
CHANGED
@@ -44,26 +44,47 @@ class Marvin < Thor
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
map "cl" => :client, "st" => :status, "rs" => :ring_server,
|
48
|
+
"dc" => :distributed_client, "co" => :console
|
49
|
+
|
47
50
|
desc "start [PATH]", "starts client at the given path"
|
51
|
+
method_options :verbose => :boolean, :daemon => :boolean, :level => :optional, :kill => :boolean
|
48
52
|
def start(path = ".")
|
49
53
|
@dest = File.expand_path(path)
|
50
|
-
|
51
|
-
Dir.chdir(@dest) { exec "script/client" }
|
52
|
-
else
|
53
|
-
STDOUT.puts "Woops! #{@dest.gsub(" ", "\\ ")} doesn't look to be a marvin directory."
|
54
|
-
exit!
|
55
|
-
end
|
54
|
+
start_script(:client)
|
56
55
|
end
|
57
56
|
|
58
57
|
desc "status [PATH]", "shows status of marvin app at a given location"
|
59
58
|
def status(path = ".")
|
60
59
|
@dest = File.expand_path(path)
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
60
|
+
start_script(:status)
|
61
|
+
end
|
62
|
+
|
63
|
+
desc "client [PATH]", "starts a client instance from the given location"
|
64
|
+
method_options :verbose => :boolean, :daemon => :boolean, :level => :optional, :kill => :boolean
|
65
|
+
def client(path = ".")
|
66
|
+
@dest = File.expand_path(path)
|
67
|
+
start_script(:client)
|
68
|
+
end
|
69
|
+
|
70
|
+
desc "ring_server [PATH]", "starts a ring server from the given location"
|
71
|
+
method_options :verbose => :boolean, :daemon => :boolean, :level => :optional, :kill => :boolean
|
72
|
+
def ring_server(path = ".")
|
73
|
+
@dest = File.expand_path(path)
|
74
|
+
start_script(:ring_server)
|
75
|
+
end
|
76
|
+
|
77
|
+
desc "distributed_client [PATH]", "starts a distributed client from the given location"
|
78
|
+
method_options :verbose => :boolean, :daemon => :boolean, :level => :optional, :kill => :boolean
|
79
|
+
def distributed_client(path = ".")
|
80
|
+
@dest = File.expand_path(path)
|
81
|
+
start_script(:distributed_client)
|
82
|
+
end
|
83
|
+
|
84
|
+
desc "console [PATH]", "starts a marvin console from the given location"
|
85
|
+
def console(path = ".")
|
86
|
+
@dest = File.expand_path(path)
|
87
|
+
start_script(:console)
|
67
88
|
end
|
68
89
|
|
69
90
|
private
|
@@ -92,8 +113,27 @@ class Marvin < Thor
|
|
92
113
|
STDOUT.puts text
|
93
114
|
end
|
94
115
|
|
116
|
+
def marvin_repo?(path, type = client)
|
117
|
+
File.directory?(source(path, "script")) && File.exist?(source(path, "script/#{type}"))
|
118
|
+
end
|
119
|
+
|
120
|
+
def start_script(name)
|
121
|
+
if marvin_repo?(@dest, name)
|
122
|
+
extra_args = []
|
123
|
+
extra_args << "-k" if options[:kill]
|
124
|
+
extra_args << "-v" if options[:verbose]
|
125
|
+
extra_args << "-d" if options[:daemon]
|
126
|
+
extra_args << "--level=#{options[:level]}" if options[:level]
|
127
|
+
Dir.chdir(@dest) { exec("script/#{name}", *extra_args) }
|
128
|
+
else
|
129
|
+
STDOUT.puts "Woop! #{@dest.gsub(" ", "\\ ")} isn't a marvin app."
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
95
133
|
end
|
96
134
|
|
135
|
+
STDOUT.puts "Marvin - IRC Library / Framework for Ruby"
|
136
|
+
|
97
137
|
# Check if we have arguments, we run the normal
|
98
138
|
# thor task otherwise we just print the help
|
99
139
|
# message.
|
@@ -41,18 +41,15 @@ module Marvin
|
|
41
41
|
unless command_name.nil?
|
42
42
|
logger.debug "Command Exists - processing"
|
43
43
|
# Dispatch the command.
|
44
|
-
self.send(command_name, data.
|
44
|
+
self.send(command_name, data.split(" ")) if self.respond_to?(command_name)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
def extract_command_name(command)
|
49
49
|
prefix_length = self.command_prefix.to_s.length
|
50
50
|
has_prefix = command[0...prefix_length] == self.command_prefix.to_s
|
51
|
-
logger.debug "Debugging, prefix is #{prefix_length} characters, has prefix? = #{has_prefix}"
|
52
51
|
if has_prefix
|
53
|
-
# Normalize the method name
|
54
52
|
method_name = command[prefix_length..-1].to_s.underscore.to_sym
|
55
|
-
logger.debug "Computed method name is #{method_name.inspect}"
|
56
53
|
return method_name if self.exposed_methods.to_a.include?(method_name)
|
57
54
|
end
|
58
55
|
end
|