Updating distribution
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "active_support/core_ext/string"
|
||||
require_relative "../concerns/output_writer"
|
||||
|
||||
class Command
|
||||
include OutputWriter
|
||||
|
||||
VALID_COMMANDS = %w[audit migrate dry-run].freeze
|
||||
|
||||
def initialize(comment_body)
|
||||
@comment_body = comment_body
|
||||
end
|
||||
|
||||
def command
|
||||
@command ||= begin
|
||||
command = @comment_body&.match(%r{/([^\s\\]+)})
|
||||
command[1] unless command.nil? || !VALID_COMMANDS.include?(command[1])
|
||||
end
|
||||
end
|
||||
|
||||
def valid?
|
||||
!command.nil?
|
||||
end
|
||||
|
||||
def classify
|
||||
return unless valid?
|
||||
|
||||
command.tr("-", "_").classify
|
||||
end
|
||||
|
||||
def options
|
||||
return unless valid?
|
||||
|
||||
@options ||= begin
|
||||
command_text = "/#{command}"
|
||||
command_index = @comment_body.index(command_text)
|
||||
|
||||
options_text = @comment_body[command_index + command_text.length..-1]
|
||||
options_text.split(" ")
|
||||
.each_slice(2)
|
||||
.to_h
|
||||
.transform_keys { |key| key.delete_prefix("--") }
|
||||
end
|
||||
end
|
||||
|
||||
def to_output
|
||||
set_output("command", command)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user