57 lines
1.4 KiB
Ruby
57 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "../concerns/environment_writer"
|
|
|
|
class Arguments
|
|
include EnvironmentWriter
|
|
|
|
def initialize(provider, command, issue_content)
|
|
@args = argument_class(provider, command, issue_content)
|
|
@custom_transformers = custom_transformers(command)
|
|
end
|
|
|
|
def argument_class(provider, command, issue_content)
|
|
provider.module.const_get(command.classify).new(issue_content, command)
|
|
end
|
|
|
|
def custom_transformers(command)
|
|
command.options&.dig("custom-transformers")&.split(" ") || Dir.glob("transformers/**/*.rb")
|
|
end
|
|
|
|
def to_output
|
|
arguments = @args.to_a || []
|
|
arguments.push(["--custom-transformers", *@custom_transformers]) if @custom_transformers.length.positive?
|
|
|
|
return if arguments.blank?
|
|
|
|
rng = Random.new
|
|
variable_names = Set.new
|
|
|
|
set_output(
|
|
"args",
|
|
arguments.map do |value|
|
|
unless value.is_a?(Array)
|
|
value = value.inspect if value.include?(" ")
|
|
|
|
next value
|
|
end
|
|
|
|
value.map.with_index do |v, index|
|
|
v = v.inspect if v.include?(" ")
|
|
|
|
next v if index.zero?
|
|
|
|
name = "variable_#{rng.rand(1000..9999)}"
|
|
name = "variable_#{rng.rand(1000..9999)}" while variable_names.include?(name)
|
|
|
|
variable_names.add(name)
|
|
|
|
set_environment(name, v)
|
|
|
|
"$#{name}"
|
|
end
|
|
end.join(" ")
|
|
)
|
|
end
|
|
end
|