You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.4 KiB
55 lines
1.4 KiB
require_relative 'arg_loader' |
|
|
|
module Squib::Args |
|
module_function def extract_input_file(opts, deck, dsl_method_default = {}) |
|
InputFile.new(dsl_method_default).extract!(opts, deck) |
|
end |
|
|
|
class InputFile |
|
include ArgLoader |
|
|
|
def initialize(dsl_method_default = {}) |
|
@dsl_method_default = dsl_method_default |
|
end |
|
|
|
def self.parameters |
|
{ |
|
file: nil, |
|
placeholder: nil |
|
} |
|
end |
|
|
|
def self.expanding_parameters |
|
parameters.keys # all of them |
|
end |
|
|
|
def self.params_with_units |
|
[] # none of them |
|
end |
|
|
|
def validate_file(arg, i) |
|
return nil if arg.nil? |
|
return File.expand_path(arg) if File.exists?(arg) |
|
return File.expand_path(placeholder[i]) if File.exists?(placeholder[i].to_s) |
|
|
|
case deck_conf.img_missing.to_sym |
|
when :error |
|
raise "File #{File.expand_path(arg)} does not exist!" |
|
when :warn |
|
Squib.logger.warn "File #{File.expand_path(arg)} does not exist!" |
|
end |
|
return nil # the silent option - as if nil in the first place |
|
end |
|
|
|
def validate_placeholder(arg, _i) |
|
# What if they specify placeholder, but it doesn't exist? |
|
# ...always warn... that's probably a mistake they made |
|
unless arg.nil? || File.exists?(arg) |
|
msg = "Image placeholder #{File.expand_path(arg)} does not exist!" |
|
Squib.logger.warn msg |
|
return nil |
|
end |
|
return arg |
|
end |
|
end |
|
end
|
|
|