12
13
14
15
16
17
18
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
44
45
|
# File 'lib/brief/util.rb', line 12
def self.create_method_dispatcher_command_for(action, klass)
identifier = "#{ action } #{ klass.type_alias.to_s.pluralize }"
Object.class.class_eval do
command "#{identifier}" do |c|
c.syntax = "brief #{identifier}"
c.description = "run the #{identifier} command"
c.action do |args, _opts|
briefcase = Brief.case
path_args = args.select { |arg| arg.is_a?(String) && arg.match(/\.md$/) }
path_args.select! do |arg|
path = briefcase.repository.root.join(arg)
path.exist?
end
path_args.map! { |p| briefcase.repository.root.join(p) }
models = path_args.map { |path| Brief::Document.new(path) }.map(&:to_model)
if models.empty?
model_finder = c.name.to_s.split(' ').last
models = briefcase.send(model_finder)
end
models.each do |model|
model.send(action)
end
end
end rescue nil
end
end
|